3.1序列結構的各種序列
(1)seq2seq:如機器翻譯,從法文翻譯成英文,將會是下面這樣的結構,包括編碼網絡和解碼網絡。
(2)image to sequence:比如給一幅圖像添加描述,如下圖中的“一只貓站在椅子上”。同樣包括編碼網絡和解碼網絡。
3.2選擇最可能的句子
(1)機器翻譯的本質就是一個條件語言模型,在給定輸入的條件下輸出最有可能的句子。
(2)這里的條件語言模型與第一周講的語言模型的區別在於,前者是有輸入的,而后者是沒有輸入直接隨機生成一個句子。
(3)將使用束搜索的方法來尋找概率最高的句子,之所以不用貪心搜索是因為,每一次都選擇概率最大的詞組成的句子未必是概率最大的。
3.3集束搜索
(1)假設詞匯量是10000,集束寬是3.
(2)首先選出3個概率最大的作為第一個詞。
(2)然后3個詞分別於10000個詞總共組成30000個組,同樣選出三個最大的概率。注意p(y1,y2|X)=p(y1|X)p(y2|y1,X).
(3)上面選出來的3個兩個詞組成的詞語又與10000個詞組合成30000個組,選出最大的3個概率的詞組,以此類推直到出現結束符。最后選出概率最大的句子。
3.4改進集束搜索
(1)由於每一項的值都是概率,小於1,所以很多項相乘時會越來越小,甚至出現下溢(電腦無法用浮點數精確表示)。所以對每個概率取對數,因為對數是單調遞增,所以不會影響最終輸出。
(2)由於各項都是非常小的值,所以網絡會偏向於輸出很短的句子,為了避免這種情況,添加歸一化項,將上面算出來的結果除以Tyα,其中Ty是每個句子單詞數,α取值為0-1,為0時即不歸一化,為1時表示完全用長度歸一化,可以取中間的值。
(3)經過改進之后的目標函數叫歸一化的對數似然目標函數。
3.5集束搜索的誤差分析
(1)使用開發集,找出翻譯錯誤的句子,用來做誤差分析。人工翻譯的句子記做y*,網絡得到的結果記做ý,如下圖所示:
(2)出錯的原因只要分為兩個原因,要么是RNN網絡(包括編碼和解碼部分)出錯,要么是使用的集束搜索算法有問題。
(3)當p(y*|x)>y(ý|x)時說明集束搜索不能夠給你一個概率更大的句子,所以是集束搜索出了問題,可以改變集束寬。
(4)當p(y*|x)<y(ý|x)時說明RNN網絡出問題了,網絡本身沒法讓最好的翻譯的概率最大。
3.6Bleu得分
(1)Bleu代表bilingual evaluation understudy(雙語評估替補)。
(2)比如說參考的標准翻譯有“The cat is on the mat”和“There is a cat on the mat”都是非常好的翻譯,同理還有其他很好的類似的句子,那么該怎么評估好壞呢?
(3)上面的句子中the出現最多的次數是2,所以按照占比2/7,如果翻譯出來的句子也有the,比如說翻譯出來6個是the一個cat,其得分為2/7加上1/7.這是按照單詞來計算了,分數的分子最大值是詞匯在參考句子中占比的上限。
(3)所有的參考翻譯中相連的兩詞匯也可以組成一個詞組,翻譯的結果(相同的算一個)同樣進行比對按照上面的方式來計算得分。三元詞,四元詞同樣如此。
(4)最后按照下面式子翻譯的計算精確度:
3.7注意力模型的直觀理解
(1)當翻譯一個特別長的句子時,如果將整個句子輸入進去再進行翻譯,網絡是很難記住那么長的句子的,就跟人一樣,人習慣看一點翻譯一點,注意力集中在某一部分,注意力模型也是如此,如下圖所示,首先是雙向循環神經網絡,這時不直接輸出結果,而是利用一個注意力權重,再輸入到一個RNN中之后在進行輸出。
3.8注意力模型
(1)直接看上面的結構圖。
3.9語音識別
(1)語音識別有兩種主要的系統,一個是前面提到的注意力模型,還有一種叫做CTC(connectionist temporal classification)的系統。
(2)由於在語音識別中,比如10s時長,采樣頻率是100,那么10秒鍾將會有1000個輸入,顯然輸出不可能有那么長的結果,這時讓輸出的長度與輸入相等,輸出可以用重復的字符和特殊的空白符(注意不是空格,空格的輸出就是空格),如下圖所示,這時將空白符所分割的重復字符折疊起來,最終生成正確的輸出“the q”:
3.10觸發字檢測
(1)下面是一個簡單的觸發字的示意圖,當沒有聽到觸發字時輸出0,當聽到關鍵字時輸出1,由於正負樣本嚴重失衡,所以可以在聽到觸發字之后一段時間都輸出1來解決。
3.11總結和致謝
(1)用深度學習這個強大的武器,去做你覺得可以讓世界變得更加美好的事。