1. 程式人生 > >網路資源是無限的

網路資源是無限的

基礎模型:比如你想通過輸入一個法語句子來將它翻譯成一個英語句子,如下圖,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來喚醒。