目錄鏈接:吳恩達Deep Learning學習筆記目錄
?1.循環(huán)序列模型
?2.自然語言處理與詞嵌入
?3.序列模型和注意力機制
1. 循環(huán)序列模型
??序列模型所要解決的問題是,如何來處理具有序列化特點的數(shù)據(jù)膏潮。如下圖糕簿,是序列化數(shù)據(jù)及我們需要從序列化數(shù)據(jù)中所獲取的結果呐矾。如在一段音頻中,音頻是按時序播放的纲仍,無論是音頻中的單詞還是音調(diào),都是有序的,如果希望從一段音頻中养筒,將其說說的話轉化為一個文字性的描述,這是一個序列化到序列化的過程端姚。??1.1 符號約定
??如下圖是一個最簡單的序列描述:
??一種最粗暴的方法是魂迄,如下圖所示粗截,構建一個詞表(現(xiàn)假設10000詞),通過one-hot對每個單詞進行編碼捣炬,將單詞數(shù)字化熊昌。這樣的編碼簡單有效,但存在幾個問題遥金,①每個單詞的編碼長度與詞表長度等長浴捆,而且非常稀疏,計算代價太高稿械;②通過one-hot編碼后选泻,相鄰單詞之間距離相同,每個單詞獨立美莫,這將造成語義相近的單詞之間毫無關聯(lián)页眯。
??1.2 循環(huán)神經(jīng)網(wǎng)絡基礎
??如果采用一個標準的神經(jīng)網(wǎng)絡來處理文本序列,如下圖厢呵,相對于將每個詞向量作為一個特征窝撵,將整個句子作為一個樣本作為輸入,而輸出是一個與句子等長的向量襟铭。這樣的模型存在兩個問題:①輸入和輸出長度恒等碌奉,但在實際的文本序列中,基本上每個樣本的長度是不等的寒砖;②在文本的不同位置特征是不共享的赐劣,而在標準網(wǎng)絡中統(tǒng)計的位置信息,而這些位置上的特征類似(如可能在標準網(wǎng)絡中輸出是在2-5哩都,10-15等這些位置上大概率是人名魁兼,但在實際文本中,人名可能出現(xiàn)在任何主語漠嵌、賓語的位置咐汞,而標準網(wǎng)絡無法推斷語義結構及其語義)。
??1.3 循環(huán)神經(jīng)網(wǎng)絡反向傳播
??首先眯杏,在前向傳播過程中稍算,將相同的參數(shù)Wa、Wy都賦予給每一步的計算役拴,向前依次計算每個詞的預測結果和loss,然后將每個詞的loss求和得到Loss钾埂。反向時河闰,通過Loss反向傳遞給每個loss,每個loss傳遞給每個預測值褥紫,每個預測值再傳遞給Wa和Wy姜性。??1.4 不同類型循環(huán)神經(jīng)網(wǎng)絡
??前述過程中,是輸出一個與輸入序列等長的輸出髓考,而在實際問題中部念,輸出的長很可能與輸入序列長度不同。如文本情感評價中,文本是一個長序列儡炼,而輸出只是一個評分妓湘。又如將一句英語翻譯為一句漢語,輸入序列長度一般與輸出不等乌询。在人名識別中是一種多對多的結構榜贴,而在文本評分中則是一個多對一的結構(如輸入影評,對該影評預測一個評分作為對電影的評分)妹田,此外還有一對一唬党,一對多的情況。而多對多的還有一種情況鬼佣,如翻譯過程:??1.5 語言模型和序列生成
??給出一個語料庫(包含很多句子)驶拱,基于語料庫的訓練,在輸入一個詞后晶衷,如何自動生成文本蓝纲?通過RNN可以實現(xiàn)這個功能。首先對句子的標記進行處理房铭,對于未出現(xiàn)在詞表中的單詞通過<UNK>來標記驻龟,句子結束通過<EOS>來標記。句子的單詞通過yt標記缸匪。模型在t時刻的輸入為上一時刻的輸出a和上一時刻輸出的y(y為在此位置出現(xiàn)概率最大的詞)翁狐。在訓練過程中輸入的y為訓練樣本中上一個單詞,在預測過程則為上一時刻預測輸出凌蔬。每一時刻的輸出是基于前面所有出現(xiàn)單詞的條件概率露懒。
??1.6 對新序列采樣
??前述方法中,對于每一個單詞砂心,預測的輸出是詞表中每個單詞出現(xiàn)的概率分布懈词,而此時我們選擇了概率值最大作為輸出,那么輸出只有一種情況辩诞。另一種方法是在每一時刻的輸出的概率分布中進行隨機抽樣作為該時刻的預測輸出坎弯,隨后作為下一時刻的輸入,此時生成的文本將會有很多可能性:另一種文本生成時采用的詞表將不再是以單詞為一個預測單位译暂,而是將字符作為預測單位抠忘,這樣做的好處是,將不用處理未知的單詞或字符串外永,但缺點是可能會得到太多太長的序列崎脉,且基于字符的模型在捕捉前后文的關系上不如基于詞匯的模型。
??1.7 GRU單元
?? RNN雖然可以處理序列問題伯顶,并在處理過程中來捕捉其他時刻的信息囚灼,但其只能捕捉到近期的信息骆膝,對于更遠的信息難以捕捉(難以記憶下來),而且隨著序列長度的增加灶体,如同深層神經(jīng)網(wǎng)絡一般阅签,容易出現(xiàn)梯度消失問題。而采用門控單元(GRU)可以有效增加捕捉信息的深度赃春、改善梯度消失問題愉择。
??GRU是通過一個增加一個記憶單元來作為門控,控制是否更新輸入到t時刻的上一時刻的輸出织中。如下圖所示锥涕,將a替換為c,作為記憶細胞狭吼,在當前時刻层坠,①根據(jù)公式(1)計算新的c;②根據(jù)公式(2)計算門控值(輸出為1或0)刁笙;③根據(jù)公式(3)破花,通過門控值來決定這一時刻計算的輸出信息是新的c還是上一時刻的c。比如在句子The cat,which already ate...,was full.
中疲吸,在cat位置處門控值為1座每,表示更新c(相當于將cat的信息記錄下來,擦除之前的信息)摘悴,在中間部分峭梳,門控值均為0,表示不更新c(在這一過程中蹂喻,一直記錄的是cat的信息)葱椭,直到was位置(在此處需要使用到cat是否為單復數(shù)的信息,此后不再需要)口四,門控值為1孵运,表示更新信息c。實際上Γ的計算值并不實際為0和1蔓彩,而是逼近這兩個值治笨,但也能起到類似的效果,同時避免了梯度消失的問題赤嚼。
??1.8 LSTM
?? 在GRU中含兩個門控(更新門及在前述基礎上增加更相關性門Γr)和一個輸出單元大磺,而在LSTM中含三個門控(跟新門、遺忘門和輸出門)和輸出單元探膊,其中,遺忘門代替了GRU中的(1-Γu)待榔,同時通過輸出門來進一步控制了輸出信息逞壁。這解決GRU僅記憶某時刻信息的問題(實際上門控值不嚴格為0流济,那么實際上其他時刻的信息也會被記錄),在LSTM中通過更新門和遺忘門將不同時刻的信息記錄下來(有選擇的記憶)腌闯。??1.9 雙向RNN
?? 前述的RNN是單向的绳瘟,其存在一個問題,僅能夠參考前面時刻的信息來作出預測姿骏,而對于后續(xù)的信息沒有加入預測糖声。即僅處理了上文,未處理下文分瘦,這是不合理的蘸泻。如下兩個句子:
He said,"Teddy bears are on sale"
He said,"Teddy Roosevelt was a great President"
?? 顯然第一個句子中Teddy不是一個人名,而在第二個句子中則是一個人名嘲玫,但是僅僅通過前三個單詞悦施,實際上是無法對Teddy是不是人名分別對兩個句子作出準確預測的。而雙向RNN則是將后續(xù)信息也加入到預測過程中來去团,從而解決這個問題抡诞。
??1.10 深層RNN
?? 類似深層神經(jīng)網(wǎng)絡,RNN也可以進行堆疊來實現(xiàn)深層的RNN:2.自然語言處理與詞嵌入
??2.1 詞匯表征
?? 前述中詞匯的表征是通過one-hot來表示土陪,其存在一個缺點就是將每個單詞孤立起來了昼汗,對于相關性的詞泛化能力很弱,比如無法推斷男人和女人具有相關性鬼雀,如句子I want a glass of orange _____?
顷窒,空格處如果學習到填juice
,但是如果將orange
替換為apple
取刃,可能模型就不知道空格處需要填寫juice
蹋肮。因為在one-hot編碼中,如果要計算兩個詞的相關性璧疗,兩個向量的內(nèi)積總是為0坯辩,所有詞匯之間相關性都為0,或者說都沒有相關性崩侠。
?? 現(xiàn)在漆魔,如果我們采用其他表征,以使得具有相關性的詞表達之間的內(nèi)積較大却音,而不具相關性的詞表達之間內(nèi)積較小改抡,那么就可以改善上述問題,如下圖系瓢,倘若阿纤,將一個詞在300個特性上進行賦值來表達一個詞(特征化):
??2.1 詞匯表征
?? (1)詞嵌入的特性:學習類比關系
??詞嵌入的方法可以另模型基于詞的相關性進行推理,如藐窄,基于學習了man和woman之間的關系资昧,能否推導出king對應什么?如下圖荆忍,設詞嵌入維度為4格带,man和woman兩個詞向量之差約為[-2,0,0,0],而我們發(fā)現(xiàn)king和queen之差刹枉,在各個維度上與man—woman相近叽唱,那么根據(jù)man-woman關系,推導出king對應queen:
?? (2)詞嵌入矩陣
??詞嵌入矩陣是一個二維的矩陣侦铜,第一個維度是特征化數(shù)量,第二個維度是詞數(shù)量钟鸵,將一個詞嵌入矩陣乘以一個詞的one-hot的編碼钉稍,即得到該詞匯的詞嵌入表達:
?? (3)學習詞嵌入
??學習詞嵌入就是學習詞嵌入矩陣。通過構建語言模型棺耍,抽取上下文與目標詞進行監(jiān)督學習以獲得詞嵌入矩陣贡未,能夠達到較好的效果。通過one-hot編碼乘以詞嵌入矩陣E得到詞向量蒙袍,一般截取需預測詞前幾個詞俊卤,將其詞向量輸入神經(jīng)網(wǎng)絡進行訓練,來優(yōu)化E害幅。
?? (4)Word2vec
??NNLM
(生成連續(xù)詞向量后輸出一個非線性隱層和softmax層邑遏,將連續(xù)詞向量映射為長度為V(詞表數(shù)量)的概率分布向量佣赖,從而計算上下文條件概率)
存在一些問題:①只能處理定長的序列(截取的上下文詞數(shù)量固定);②訓練速度太慢记盒。在NNLM模型中憎蛤,首先是通過簡單的模型來訓練出連續(xù)的詞向量,隨后將連續(xù)的詞向量輸入到神經(jīng)網(wǎng)絡中進行訓練纪吮,模型的計算耗時主要在第二步中俩檬。由于我們只想得到連續(xù)的詞向量栏豺,那么對于第二步中的神經(jīng)網(wǎng)絡則可進行簡化。??word2vec思想中豆胸,移除了NNLM中的非線性隱層,直接將連續(xù)詞向量與softmax層連接(如上圖)巷疼,忽略上下文序列信息晚胡,將所有詞匯總得到一個Embedding layer,將特征詞納入上下文環(huán)境(選取幾個詞)嚼沿,這得到的是CBow模型估盘。CBow仍然是通過以context預測target word的過程來學習詞向量的表達。
??而skip-gram模型則是計算輸入word的詞向量表達與目標詞的輸出向量之間的余弦相似度并歸一化骡尽。個人理解為遣妥,θTt是目標詞通過softmax輸出的向量,與ec等長攀细,即計算了target word輸出詞向量與context輸入詞向量之間的相似度:
參見NLP之——Word2Vec詳解
?? (5)負采樣
??前述模型中還是存在softmax計算過慢的問題箫踩,在負采樣算法中,首先構造context-target詞對谭贪,如orange-juice將會被標記為正樣本1境钟,而orange-其他詞,則會被標記為負樣本0.
?? (6)GloVe詞向量
??不同于word2vec俭识,GloVe是基于全局詞頻統(tǒng)計的慨削。Xij表示單詞i和congtext單詞j在特定大小context window內(nèi)共同出現(xiàn)的次數(shù),對于距離越遠的兩個單詞所占的總計算的權重越小套媚。詞向量和共現(xiàn)矩陣之間的近似關系如下:
GloVe希望實現(xiàn)的是:
①
共現(xiàn)次數(shù)很多的詞的權重要大于很少共現(xiàn)的詞堤瘤;
②
但這個權重不應過大玫芦,應達到一定程度后不再增加;
③
如果兩個單詞沒有共現(xiàn)宙橱,即Xij=0姨俩,那么將不參與loss計算,即f(x)=0师郑。
GloVe作者采樣了下述分段函數(shù)來滿足上述條件:
?? (7)情緒分類
??
?? (8)詞嵌入除偏
??根據(jù)語料庫來學習詞嵌入环葵,實際上是一個學習單詞語義類比的過程(個人認為,錯誤求改)宝冕≌旁猓基于語料庫的詞嵌入表達會造成很明顯的偏見,如Man對應computer programmer地梨,Woman對應homemaker菊卷。明顯的反應了現(xiàn)實中的性別缔恳、種族、年齡等偏見歧視:
3. 序列模型和注意力機制
??3.1 基礎模型
??(1)Seq2Seq
??在機器翻譯中采用的模型就是Seq2Seq弓千,通過編碼→解碼的方式來進行序列到序列的轉換:
??
??3.2 選擇最可能的句子
??相對于語言模型衡便,Seq2Seq中的Decoder與語言模型相近,不同之處是初始輸入的a被替換為Encoder的輸出洋访,所以Seq2Seq是計算一個句子基于被翻譯句子的條件概率镣陕。在語言模型的生成文本中,希望的是生成各種各樣的文本捌显,而在機器翻譯中則希望翻譯足夠準確茁彭,所以在Seq2Seq模型中不是隨機采樣輸出,而是輸出概率最大的句子扶歪。
貪心搜索法
妹萨。但是在機器翻譯中貪心法
不一定是最優(yōu)解,如下圖going
在英語中出現(xiàn)的頻率一般高于visiting
炫欺,所以在貪心法中很可能會得到下圖第二個句子的翻譯(相比第一個較差):??3.3 Beam search
??既然不能使用貪心法乎完,也不能使用隨機法,也不可能將所有可能的組合都計算一遍(計算量太大)品洛。那么树姨。在第一時刻的輸出的詞,選取概率top B的詞桥状,在第二時刻輸出時帽揪,將這B個詞與詞表中其他詞配對,再計算其概率辅斟,輸出其中概率top B的組合转晰,重復下去,如下圖,B=3:
in september
邓深、jane is
他嫡、jane visiting
那么,第一時刻中以September結尾的所有組合都拋棄庐完。
??3.4 改善Beam search
??如果直接采用條件概率累乘的方式來最大化整個序列的概率,會存在兩個問題:①通常每一個條件概率都很小徘熔,累乘后得到的整體概率值將會非常小门躯,會造成數(shù)值下溢問題;②由于每個條件概率都小于1酷师,那么隨著序列長度增加讶凉,整體概率是減小的,所以翻譯會傾向于較短的翻譯山孔;
??解決第一個問題的方法是將概率取對數(shù)求和懂讯,以避免上述兩個問題,但依然存在傾向短翻譯問題:由于每一條件概率都小于1台颠,取對數(shù)后的值將為負數(shù)褐望,且隨序列增長,值越來越小串前,對數(shù)值越負瘫里,所以得到的整體結果是越來越負。
??3.5 Beam search誤差分析
????3.5 注意力模型
??在翻譯過程中荡碾,如果是人工翻譯谨读,并不會像機器一樣通讀整個句子,然后記憶里面的東西坛吁,再去從0開始翻譯劳殖。而是會通過記憶句子部分,然后翻譯一部分拨脉。在前述的翻譯模型中哆姻,對于所需翻譯序列長度,其性能如下:
??注意力機制誉简,將不再單獨使用Encoder的輸出直接整體輸入到Decoder中,如下圖盟广,將會使Decoder中每一單元與Encoder中鄰近的一些單元相連闷串,并添加注意力權重α:
??完結肋拔。