FastText就是一種word2vec,只不過FastText更加目標化。網絡
文本生成
給你前面的句子,我來告訴你應該回答什麼。不必定是句子,能夠是字或符號。
這裏有一個問題,若是你把每一個單字做爲模型輸入的話,你把x1,x2,x3輸入分類器,而分類器每次只能處理一個x。例如當你輸入"你",我告訴你下一個字是"瞅",你告訴我"瞅",我告訴你下一個字是"啥",你告訴我"啥",我告訴你"瞅你咋地?!",用人的思惟想就知道,這是不可能的,由於歧義太多了,若是咱們是一個一個塞進咱們的分類器的話,他們之間的關係是不能被保證的,不知道整個語境有多長,不知道語境下面它究竟是什麼意思,這時咱們須要一種帶記憶的神經網絡來解決這個問題。ide
帶記憶的神經網絡
X1輸入保留它的狀態,x2輸入保留它的狀態,x3輸入後,輸出總體的Ot
s是指記憶的狀態。
記憶
若是說個人(context)對話很是長,例現在天吃 吃的怎麼樣,今每天氣 天氣怎麼樣,而後你又問剛剛 穿山甲說了什麼?對於這種狀況,若是咱們只考慮前面的對話的話,穿山甲說了什麼?你是徹底不記得的。穿山甲說的話在很早以前就說過了,而如今又有人問這句話,最好的方式是 好比說把整個對話句子都囊括進RNN的N(context裏面),但這件事有個很是大的問題是不經濟實惠,要花太多的計算量來記住太多的東西。對於這問題怎麼辦,因而就有個RNN的升級版LSTM。
RNN的N(context)是要設置的,你要告訴它看有多長的路要看,多長的歷史要看,把Xt的關聯關係都得考慮上。3d
LSTM(長效的短時間記憶 long short-term memory)
案例
題目原型:What's Next? 能夠在不一樣的維度上:cdn
- 1.下一個字母是什麼?
- 2.下一個單詞是什麼?
- 3.下一個句子是什麼?(問答機器人)
- 4.下一個圖片/音符/...是什麼?
文本分類
把一個句子當作一幅畫,而後用卷積神經網絡來看這幅畫。
CNN4Text
用濾鏡處理出各類不一樣的特徵圖
每一個詞處理成6維的向量,每一個句子組成一個矩陣,矩陣的高是句子的長,寬是詞向量。
把每一個句子作成特徵向量,而後用一個一維的filter來掃描。
爲何CNN能夠處理text,而RNN也能夠處理text,他們的區別是?
RNN它認爲它是在模擬咱們人類在看到句子的時候是一個單詞一個單詞進入咱們的眼睛的。RNN被用在生成模型上。對生成而言咱們是不能容忍語病存在的,咱們要保證每句話從頭至尾邏輯嚴謹,先後之間關係都是好的。
咱們人在看到一句話時,是以一幅畫的形式進入眼睛的。CNN被用在分類模型上。CNN能夠把語病的句子也模擬的很好,就是說意思上相近的東西,都能被CNN認爲是一種分類。對分類而言咱們要容忍語病的存在。
上面句子中的關鍵字(看,話,感)當作是注意力。blog
邊界處理
咱們該如何申請一個filter。申請一個3*3的filter在矩陣的中心會工做的很好,可是在矩陣的邊際會怎樣呢?矩陣的第一個元素,其頂部和左邊都沒有相鄰元素,你該如何將filter應用到這樣的元素上?你可使用zero-padding(0填充)全部落到矩陣之外的元素都將用0代替。這樣你就能夠將filter應用到你輸入的任何矩陣中了,而且能夠獲得一個更大或等大的矩陣做爲輸出。添加zero-padding也被稱爲wide convolution,而不使用zero-padding的將稱爲narrow convolution。下圖是一個1維的例子: 圖片
Narrow vs. Wide Convolution. Filter size 5, input size 7. Source: A Convolutional Neural Network for Modelling Sentences (2014)
當你的filter比輸入的size還大時,你能夠看到wide convolution是多麼的有用,甚至說是必須的。如上所示,narrow convolution產出的尺寸是(7-5)+1=3,而wide convolution產出尺寸是(7+2*4-5)+1=11。一般,輸出尺寸的規則表達式爲: input
步伐大小
Stride size,定義了你的filter在每步中滑動多少。上面提到的全部例子中都是默認爲1,而且是連續重疊的應用filter。Stride size越大,filters的應用次數就會越少,輸出的size就會越小。下圖描述了Stride size分別爲1和2,應用到1維的輸入上: 原型
在上圖咱們能夠看到一個典型的Stride Size爲1的Convolution,而更大的Stride Size可讓你創建一個相似與RNN結構的模型,也就是看起來像一棵樹。