吴恩达老师深度学习视频课笔记:序列模型和注意力机制
基礎模型:比如你想通過輸入一個法語句子來將它翻譯成一個英語句子,如下圖,seq2seq模型,用x<1>一直到x<5>來表示輸入句子的單詞,然后我們用y<1>到y<6>來表示輸出的句子的單詞,如何訓練一個新的網絡,來輸入序列x和輸出序列y,這里有一些方法。首先,我們先建立一個網絡,這個網絡叫做編碼網絡,它是一個RNN的結構,RNN的單元可以是GRU,也可以是LSTM,每次只向該網絡中輸入一個法語單詞,將輸入序列接收完畢后,這個RNN網絡會輸出一個向量來代表這個輸入序列。之后,你可以建立一個解碼網絡,它以編碼網絡的輸出作為輸入,之后它可以被訓練為每次輸出一個翻譯后的單詞,一直到它輸出序列的結尾或者句子的結尾標記,這個解碼網絡的工作就結束了。
圖像描述(image captioning):如下圖,給出一張圖片,比如這張貓的圖片,它能自動地輸出該圖片的描述,一只貓坐在椅子上。如何訓練出這樣的網絡通過輸出圖像來輸出描述?方法如下:將圖片輸入到卷積神經網絡中,比如一個預訓練的AlexNet結構,然后讓其學習圖片的編碼,或者學習圖片的一系列特征,如果去掉最后的softmax單元,這個預訓練的AlexNet結構會輸出一個4096維的特征向量,向量表示的是這張圖片的描述,所以這個預訓練網絡可以是圖像的編碼網絡,接著你可以把這個向量輸入到RNN中,RNN要做的就是生成圖像的描述,每次生成一個單詞,讓網絡輸出序列或者說一個一個地輸出單詞序列。
Picking the most likely sentence: 如下圖,你可以把機器翻譯想成是建立一個條件語言模型。在語言模型中,能夠估計句子的可能性,你也可以將它用于生成一個新的句子。機器翻譯,如圖中,用綠色表示encoder網絡,用紫色表示decoder網絡,decoder網絡和語言模型很相似。機器翻譯模型其實和語言模型非常相似,不同在于語言模型總是以零向量開始,而encoder網絡會計算出一系列向量來表示輸入句子而不是以零向量開始。所以把機器翻譯叫做條件語言模型。
通過模型將法語翻譯成英文:如下圖,通過輸入的法語句子,模型將會告訴你各種英文翻譯所對應的可能性。你并不是從得到的分布中進行隨機取樣,而是你要找到一個英語句子y使得條件概率最大化。所以在開發機器翻譯系統時,你需要作的一件事就是想出一個算法用來找出合適的y值使得該項最大化。而解決這種問題最通用的算法就是束搜索(beam search)。
為什么不用貪心搜索(greedy search)?貪心搜索是一種來自計算機科學的算法,生成第一個詞的分布以后,它將會根據你的條件語言模型挑選出最有可能的第一個詞,進入你的機器翻譯模型中,在挑選出第一個最有可能的第一個詞后,它將會繼續挑選出最有可能的第二個詞,然后繼續挑選第三個最有可能的詞,這種算法就叫做貪心搜索。但是你真正需要的是一次性挑選出整個單詞序列來使得整體的概率最大化。一次僅僅挑選一個詞并不是最佳的選擇。
束搜索(beam search):如下圖,輸入法語句子翻譯成英語句子。束搜索算法首先做的就是挑選要輸出的英語翻譯中的第一個單詞,如一個10000個詞的詞匯表,在束搜索的第一步中評估第一個單詞的概率值,束搜索算法會考慮多個選擇,束搜索算法會有一個參數B,叫束寬,在這個例子中束寬設成3,意味著束搜索不會只考慮一個可能結果而是一次會考慮3個。束搜索算法會把結果存到計算機內存里以便后面嘗試用這三個詞。如果束寬設的不一樣第一個單詞的最可能的選擇也不一樣。為了執行束搜索的第一步你需要輸入法語句子到編碼網絡然后會解碼這個網絡。束搜索算法的第二步,會針對每個第一個單詞考慮第二個單詞是什么,在第二步中我們更關心的是要找到最可能的第一個和第二個單詞對,所以不僅僅是第二個單詞有最大的概率而是第一個第二個單詞對有最大的概率。然后用于下一次束搜索,最終這個過程的輸出一次增加一個單詞,束搜索最終會找到英語句子。如果束寬設為1實際上就變成了貪婪搜索算法。
改進束搜索(refinements to beam search):長度歸一化就是對束搜索算法稍作調整的一種方式能夠幫助你得到更好的結果。如下圖,束搜索就是最大化這個概率,實際中總是記錄概率的對數和而不是概率的乘積。
如何選擇束寬B?B越大,你考慮的選擇越多,你找到的句子可能越好,但是B越大,你的算法的計算代價越大。在產品中,經常看到將束寬設到10,也取決于不同應用,也有取更大值的如100,1000等。
束搜索的誤差分析:束搜索算法是一種近似搜索算法,也被稱作啟發式搜索算法,它不總是輸出可能性最大的句子,它僅記錄著B為前3或者前10種可能。對束搜索算法進行誤差分析(error analysis with beam search),如下圖,判斷是RNN網絡還是束搜索導致的問題,先遍歷開發集,然后在其中找出算法產生的錯誤,能夠執行誤差分析得出束搜索算法和RNN模型出錯的比例是多少,你就可以對開發集中的每一個錯誤例子,嘗試確定這些錯誤是搜索算法出了問題還是RNN模型出了問題。
Bleu score: 機器翻譯的一個難題是一個法語句子可以有多種英文翻譯,而且都同樣好,所以當有同樣好的答案時,怎樣評估一個機器翻譯系統?常見的解決辦法是通過一個叫做BLEU得分的東西來解決。如下圖,BLEU得分是一個有用的單一實數評估指標,用于評估生成文本的算法,判斷輸出的結果是否與人工寫出的參考文本的含義相似.
Attention model intuition: 如下圖,注意力模型(attention model)非常適用于機器翻譯中的長句子。對于長句子,人工會一邊讀一邊翻譯,在神經網絡中記憶非常長句子是非常困難的。注意力模型翻譯的很像人類一次翻譯句子的一部分。注意力模型會計算注意力權重,圖中α表示注意力權重。
Attention model: 如下圖,假定有一個輸入句子并使用雙向的RNN或者雙向的GRU或者雙向的LSTM去計算每個詞的特征。對于前向傳播,你有第一個時間步的前向傳播的激活值,第一個時間步后向傳播的激活值,第二個時間步的前向傳播激活值,第二個時間步后向的激活值,以此類推。它們一共向前了5個時間步,也向后了5個時間步,a<0>和a<6>都是0的因子,a<t>是時間步t上的特征向量。α為注意力參數,告訴我們應該花多少注意力,也告訴我們上下文有多少取決于我們得到的特征。
語音識別:有一個音頻片段x,你的任務是自動生成文本y。用一個很大的數據集,可能長達300個或3000個小時。可以將注意力模型或CTC損失函數應用到語音識別系統中,如下圖:
Trigger word detection: 觸發字系統(trigger word system):隨著語音識別的發展越來越多的設備可以通過你的聲音來喚醒,這有時被叫做觸發字檢測系統。觸發字系統的例子包括,如下圖:Amazon echo, 它通過單詞Alexa喚醒;百度DuerOS設備通過”小度你好”來喚醒;蘋果的Siri用Hey Siri來喚醒;Google Home使用Okey Googel來喚醒。
GitHub:?https://github.com/fengbingchun/NN_Test?
總結
以上是生活随笔為你收集整理的吴恩达老师深度学习视频课笔记:序列模型和注意力机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达老师深度学习视频课笔记:自然语言处
- 下一篇: GCC中通过--wrap选项使用包装函数