吴恩达DeepLearningCourse5-序列模型
終于在八月末學完了這門課程,這個月雖然為此不停地忙碌,但每天都在進步也是一種樂趣。
吳恩達教授的課程循序漸進,適合初學者,非常感謝他的辛苦付出。
文章目錄
- 第一周:循環序列模型
- 循環神經網絡(RNN)模型
- 語言模型和序列生成
- GRU(門控循環單元)
- LSTM(長短期記憶)
- 雙向循環神經網絡/BRNN
- 深層RNN
- 第二周:自然語言處理與詞嵌入
- 詞匯表征
- 使用詞嵌入
- 詞嵌入的特性
- 嵌入矩陣
- 學習詞嵌入:Word2Vec 的 skip-gram模型
- 負采樣
- GloVe 詞向量
- 情感分類問題
- 消除詞嵌入中的歧視:以性別為例
- 第三周:序列模型和注意力機制
- 基礎模型
- 條件語言模型
- 集束搜索及優化
- 集束搜索的誤差分析
- 注意力模型
第一周:循環序列模型
循環神經網絡(RNN)模型
代價計算和反向傳播
更多RNN模型
語言模型和序列生成
語言模型做的最基本工作就是輸入一個文本序列,然后語言模型會估計某個句子序列中各個單詞出現的可能性。
如:語言模型可以根據輸入計算出兩句話各自的可能性,并選擇可能性較大的一句。
當序列中含有字典中不存在的單詞時,使用UNK代表未知詞。
訓練語言模型:
訓練后對其進行取樣,將y_hat1作為y_1輸入到第二個單元并獲得y_hat2,以此類推。
GRU(門控循環單元)
對很深的RNN網絡從左到右做前向傳播然后再反向傳播。反向傳播時只有距離較近的y才能影響附近的參數,而從輸出y得到的梯度很難傳播回去,影響靠前層的權重。可以使用GRU或LSTM解決遠距離依賴的問題。
使用c(memory cell)記錄需要保存,以備使用的值。
LSTM(長短期記憶)
雙向循環神經網絡/BRNN
基本單元不僅僅是標準 RNN 單元,也可以是 GRU單元或者 LSTM 單元。
每個單元的預測結果不僅輸入了過去的信息,還考慮了未來的信息。
深層RNN
將單層的RNN堆疊可以得到深層RNN
深層RNN的層數通常不多,因為在時間維度上,每層RNN的計算量已經很大,多層RNN堆疊的算力需求更高
第二周:自然語言處理與詞嵌入
詞匯表征
嵌入是語言表示的一種方式,可以讓算法自動的理解一些類似的詞,比如男人和女人、國王和王后等。
相比較使用獨熱向量,用特征化的表示來表示每個詞更能達到嵌入的目的。比如,將維度分為性別、年齡、大小等維度,而每個詞對應一個維度長度的向量。
使用詞嵌入
詞嵌入能夠達到這種效果,其中一個原因就是學習詞嵌入的算法會考察非常大的文本集,數據集可以是 1 億個單詞,甚至達到 100 億也都是合理的,大量的無標簽的文本的訓練集。通過考察大量的無標簽文本,可以發現 orange 和 durian 相近,farmer 和 cultivator 相近。接下來可以把詞嵌入應用到識別任務當中,訓練集雖然比較小,但是可以使用遷移學習。
詞嵌入的特性
man 如果對應 woman,那么 king 應該對應什么:
余弦相似度
嵌入矩陣
本質上是形狀為 (特征數, 詞匯數) 的矩陣,將其右側乘以獨熱向量后,得到特定詞匯的特征向量。
學習詞嵌入:Word2Vec 的 skip-gram模型
在 Skip-Gram 模型中需要抽取上下文和目標詞配對,來構造一個監督學習問題。上下文不一定總是目標單詞之前離得最近的四個單詞,或最近的n個單詞。我們要的做的是隨機選一個詞作為上下文詞,然后隨機在一定詞距內選另一個詞。
缺點是Softmax計算會很慢。
分級的 softmax 分類器,不是立刻就確定到底是屬于 10,000 類中的哪一類,而是逐步縮小范圍直到找到目標。
負采樣
問題就是給定一對單詞,比如 orange 和 juice,我們要去預測這是否是一對上下文詞-目標詞。
生成這些數據的方式是我們選擇一個上下文詞,再選一個目標詞,作為表的第一行,它代表一個正樣本,并給定標簽為 1。然后給定K(小數據集的話,K從 5 到 20 比較好。如果數據集很大,K就選的小一點,例中K=4),用相同的上下文詞,再從字典中選取隨機的詞作為目標詞,并標記 0,這些就會成為負樣本。如果從字典中隨機選到的詞,正好出現在了詞距內也沒關系。
目標是定義一個邏輯回歸模型,給定輸入的(c,t)的條件下,y =1的概率,即:
把這些看作 10,000 個二分類邏輯回歸分類器,但并不是每次迭代都訓練全部 10,000 個,而是只訓練其中的 5 個,訓練對應真正目標詞那一個分類器,再訓練 4 個隨機選取的負樣本,這就是K= 4的情況。所以不使用一個巨大的 10,000 維度的 softmax,因為計算成本很高,而是把它轉變為 10,000 個二分類問題,每個都很容易計算,每次迭代只是訓練它們其中的 5 個,一般而言就是K + 1個,其中K個負樣本和 1 個正樣本。這也是為什么這個算法計算成本更低。
這個算法有一個重要的細節就是如何選取負樣本,即在選取了上下文詞 orange 之后,你如何對這些詞進行采樣生成負樣本?一個辦法是對中間的這些詞進行采樣,即候選的目標詞,你可以根據其在語料中的經驗頻率進行采樣,就是通過詞出現的頻率對其進行采樣。但問題是這會導致你在 like、the、of、and 諸如此類的詞上有很高的頻率。另一個極端就是用1 除以詞匯表總詞數,即 1/|v|,均勻且隨機地抽取負樣本,這對于英文單詞的分布是非常沒有代表性的。一種根據經驗的結論是:
GloVe 詞向量
假定𝑋𝑖𝑗是單詞𝑖在單詞𝑗上下文中出現的次數,那么這里𝑖和𝑗就和𝑡和𝑐的功能一樣。對于 GloVe 算法,我們定義上下文和目標詞為任意兩個位置相近的單詞,假設是左右各10 詞的距離,那么𝑋𝑖𝑗就是一個能夠獲取單詞𝑖和單詞𝑗出現位置相近時的頻率的計數器。
該模型的目的是優化:
是如果𝑋𝑖𝑗是等于 0 的話,那么𝑙𝑜𝑔0就是未定義的,是負無窮大的,所以我們想要對𝑋𝑖𝑗為 0 時進行求和,因此要做的就是添加一個額外的加權項𝑓(𝑋𝑖𝑗)。如果𝑋𝑖𝑗等于 0 的話,同時我們會用一個約定,即0𝑙𝑜𝑔0 = 0,這個的意思是如果𝑋𝑖𝑗 = 0,先不要進行求和,所以這個𝑙𝑜𝑔0項就是不相關項。
加權因子
𝑓(𝑋𝑖𝑗)可以讓即使是像 durion 這樣不常用的詞,它也能給予大量有意義的運算,同時也能夠給像 this,is,of,a 這樣在英語里出現更頻繁的詞更大但不至于過分的權重。因此有一些對加權函數𝑓的選擇有著啟發性的原則,就是既不給這些詞(this,is,of,a)過分的權重,也不給這些不常用詞(durion)太小的權值。
情感分類問題
情感分類任務就是看一段文本,然后分辨這個人是否喜歡他們在討論的這個東西。
算法1:
這個算法有一個問題就是沒考慮詞序,尤其是這樣一個負面的評價"Completely lackingin good taste, good service, and good ambiance.",但是 good 這個詞出現了很多次,有 3 個good,忽略詞序,僅僅把所有單詞的詞嵌入加起來或者平均下來,最后的特征向量會有很多 good 的表示,分類器很可能認為這是一個好的評論。
算法2:使用RNN
消除詞嵌入中的歧視:以性別為例
第三周:序列模型和注意力機制
基礎模型
從序列到序列:對應RNN模型中,多輸入多輸出的例子。在所有輸入完成后得到特征向量,傳遞給后層的輸出單元。
從圖像到序列:對輸入圖像進行卷積神經網絡操作,得到特征向量,同上。
條件語言模型
相比較一般的語言模型 ,條件語言模型附加了輸入作為條件。
相比之前的模型隨機地生成句子,在該模型中要找到最可能的英語翻譯。當使用這個模型來進行機器翻譯時你并不是從得到的分布中進行隨機取樣,而是要找到英語句子y,使得條件概率P(y_1…y_Ty | x_1…x_Tx)最大化。
集束搜索及優化
確定超參數值B,即進行每層輸出時,同時考慮可能性最大的B個情況。
當B=1時本質上是貪心算法。
操作時,為了防止多個概率P相乘時數值下溢(即數值過小導致計算機無法精確存儲):
集束搜索不是精確的搜索算法,不保證能找到最優解。
集束搜索的誤差分析
集束搜索的神經網絡分為 RNN(編碼) 和 BeamSearch(解碼) 兩部分
對同一個輸入,人工翻譯結果為y*,算法翻譯結果為y^
若P(y* | x)>P(y^ | x),說明BeamSearch出錯
若P(y* | x)<=P(y^ | x),說明RNN出錯
注意力模型
在輸出每個翻譯后的詞時,考慮到輸入詞加權后的影響因素。
總結
以上是生活随笔為你收集整理的吴恩达DeepLearningCourse5-序列模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 熟枣的功效与作用、禁忌和食用方法
- 下一篇: 绿豆水的功效与作用、禁忌和食用方法