摘要:摘要在年率先發布上線了機器翻譯系統后,神經網絡表現出的優異性能讓人工智能專家趨之若鶩。目前在阿里翻譯平臺組擔任,主持上線了阿里神經網絡翻譯系統,為阿里巴巴國際化戰略提供豐富的語言支持。
摘要: 在2016年Google率先發布上線了機器翻譯系統后,神經網絡表現出的優異性能讓人工智能專家趨之若鶩。本文將借助多個案例,來帶領大家一同探究RNN和以LSTM為首的各類變種算法背后的工作原理。
本次直播視頻精彩回顧地址:http://click.aliyun.com/m/45430/
直播涉及到的PPT下載地址:http://click.aliyun.com/m/45431/
于恒,阿里巴巴機器智能技術實驗室技術專家,中科院計算所博士,研究方向是機器翻譯,在自然語言處理和人工智能領域頂級國際會議ACL、EMNLP、COLING等發表多篇論文。曾在三星中國研究院和搜狗負責機器翻譯工作,參與上線搜狗翻譯和搜狗海外搜索等產品。目前在阿里翻譯平臺組擔任Tech-leader,主持上線了阿里神經網絡翻譯系統,為阿里巴巴國際化戰略提供豐富的語言支持。
以下內容根據主講嘉賓視頻分享以及PPT整理而成。
2016年伊始,Google率先發布并上線了基于神經網絡的機器翻譯系統,其表現出的性能顯著超越了之前工業界的所有系統,并且在某些特定領域已經接近了人類的翻譯水準。傳統翻譯系統和神經網絡的翻譯系統之間的比較如下圖所示:
上圖中,藍色的部分代表傳統的phrase-based(基于短語的翻譯系統),而圖中綠色的部分代表基于neural神經網絡的系統。顯然基于neural神經網絡的系統在每個上語項都比傳統的PBMT模型要表現得更好,并且在英語>西班牙語、西班牙語>英語和法語>英語這三個特定語言對上的翻譯水準已經十分接近人類了。
具體的翻譯對比可以參看上圖中漢語>英語實際翻譯的例子。可以看到,向系統中輸入的中文語句中存在一個倒裝的句式。在經過各自的翻譯后,phrase-based的系統只是逐字的進行漢語>英語的翻譯,而基于神經網絡的系統實現了基本的翻譯,還實現了語句的調序,使譯文顯得更加流利、更符合英文的表達特點,更加貼近于人工翻譯,就仿佛機器理解了人類的對話一樣。
從系統的機理來講,傳統的基于短語的翻譯是基于詞語對齊來實現的,而神經網絡NMT則是使用了RNN(Recurrent neural Network,循環神經網絡),借助于神經網絡對原文和譯文同時進行建模,實現了高效精準的翻譯。這兩種方法大致的實現過程如下圖所示:
那么RNN是如何實現這種效果的呢?而這也是本次課程的重點所在。接下來將從以下幾個方面進一步闡述RNN的原理及其更深層次的應用:
1、RNN原理,包括網絡結構和Attention機制。
2、RNN的不足之處,并且引申出它的一個變種——LSTM。
3、通過三個案例介紹RNNs的“不講理有效性”。
4、介紹RNN無法克服的問題及相關的建設性的解決方案。
1、RNN網絡結構
RNN的循環網絡結構如下圖所示:
如圖中左側所示,RNN主要包括以下幾個網絡層:第一層是輸入層,第二層是隱藏層(也叫context層),第三層輸出層。其中隱藏層是一個循環的結構,當前t時刻的context(t),是由連接上一次訓練的隱藏層context(t–1)生成。這樣設計的好處在于可以對任意長度的sequence進行建模,這也是它區別于傳統網絡結構(要求輸入的sequence的長度是固定已知的)的一個比較本質的區別。因此RNN適用于處理人類自然語言或者語音等。
如果對RNN的循環結構進行分解,在展開后,可以發現它其實是由很多神經網絡堆砌在一起的,并且它每一層之間的參數都是共享的,導致RNN是一個非常深的網絡結構,這種神經網絡的疊加的結構也是它的優點所在。
如果用形式化的語言對網絡結構進行表述,可以表示成ht=fw(ht-1, xt)。如下圖所示:
顯然,當前t時刻隱藏層的狀態ht,是由t-1時刻的隱藏層的狀態和t時刻的輸入xt通過函數fw來決定的。對該等式進行進一步拆分后,可以發現上述函數fw通常是用tanh函數來進行數字變換,拆分后的等式如下圖所示:
t時刻的狀態ht,是由前一時刻的狀態ht-1與Whh做矩陣相乘,再加上t時刻的輸入xt與Wxh做矩陣相乘,將這兩者之和進行tanh變換得到的。而t時刻的網絡層的輸出yt,是由t時刻的隱藏層狀態ht與Why做一個矩陣相乘得到的。
可以看到整個網絡中,所需要學習的參數有三個,第一個是隱藏層和隱藏層之間的Whh,第二個是輸入層和隱藏層之間的Wxh,第三個是輸出層和隱藏層之間的Why。
如果對RNN的整個的計算過程進行展開,如下圖所示:
在t=0時刻,隨機初始化一個隱藏層的狀態h0,然后輸入x1,通過函數fw進行數字變換后得到t=1時刻的隱藏層狀態h1。然后以此類推,計算出從t=0時刻到t=T時刻的全部隱藏層狀態。在這個過程中,每個time-step共用同一組權重矩陣W。對于每個time-step的隱藏層狀態,還會借助于矩陣權重W計算得到輸出y1...yT。以上就是網絡的計算過程。
在實際的網絡訓練過程當中,可以根據每一個輸出y得到它對應的Loss,將這些Loss組合在一起就可以得到所需的反向傳播的Loss,然后通過隨機梯度下降的方式進行反向傳播并更新網絡中的參數W,這樣就完成了整個的訓練過程。
如下圖所示是RNN循環結構:
圖中的每次循環都對應著不同的time-step,其算法的名字叫做Backpropagation through time。即對于一個長sequence,從第一個時間點計算到最后一個時間點,得到所有Loss之后,從最后一個時間點開始回傳,直到到達最初的時間點,同時進行權重更新。
這樣的算法其實存在一定的問題,當序列過長的時候,一次回傳必須要等整個序列完成解碼之后才能開始,這樣會導致速度變慢,會影響整個模型收斂的速度。
所以產生了一種更加常用的算法——Truncated Backpropagation through time,如下圖所示:
它的思想是將長序列截斷成為多個短序列,然后對這些短序列進行權值更新。這樣的好處在于,在對某個長序列進行計算,在中間某個時刻的時候,可以先返回一批梯度對參數進行更新,然后再此基礎上對剩余的部分進行計算。這樣權值更新的次數會增多,收斂速度也會加快。
2、具體案例實現
下面借助一個具體的例子——字符級別的語言模型來實現上述的過程,如圖所示:
語言模型的思路與RNN是比較接近的,即當前時刻輸出的概念是如之前的歷史時刻相關的。對于序列“hello”而言,它由五個字符組成,包含有四類字母——‘h’、‘e’‘l’‘o’,在實際的訓練過程中,第一個輸入自然是‘h’,然后依次是‘e’、‘l’和‘l’,對于最
后一個字符‘o’,則不進行建模。如上圖所示,先建立輸入層(input layer),然后根據不同的輸入得到其隱藏層(hidden layer)狀態,即當前隱藏層狀態是基于前一隱藏層狀態得到的,對于每一個隱藏層,通過計算得到一個輸出,該輸出代表著當前字符可能生成的下一個字符,這樣就得到了上述的計算圖。在計算得到輸出后,可以根據該輸出已經相應的參考答案得到相應的Loss,借此進行參數更新。
以上是訓練部分,具體的解碼過程如下圖:
假設拿到的第一個字符是‘h’,但是卻不知道該字符的后續字符是什么,然后借助模型,經過隱藏層,得到輸出層的輸出,通過Softmax對輸出進行概率化,然后取其中生成概率最大的字符作為輸出。顯然在輸入字符‘h’時,最后得到的概率最大的字符就是‘e’,然后以此類推,就可以得到“hello”這個序列的預測。整個流程就是通過當前輸入的字符預測出下一個字符,最終預測出一個完整的序列。
3、Attention機制
注意力機制(Attention Mechanism)在很多任務中對性能有著很大的影響。例如在sequence to sequence model中(第一個sequence指原文,第二個sequence指譯文),如下圖所示:
圖中將英文的“I am a student”翻譯成法文,在即將生成目標端的詞語的時候,RNN模型會將源端的所有信息壓縮在一個隱藏層當中,然后將該信息輸入下一個sequence中進行翻譯的預測。當源端的序列很長的時候,一個隱藏層很難存放這么多源端的信息,這樣在信息嚴重壓縮之后,在目標端生成翻譯的時候,會導致所需的上下文的信息是不夠的。這也是RNN在實際使用中常遇到的一個問題,在目前可以采用下圖中的方法進行避免:
在生成第二個單詞的時候,根據目標端的隱藏層狀態和源端的每一個隱藏層之間做相似度的計算,根據規劃得到一個權重的得分,接著生成一個上下文的Attention Layer,借助于這個Attention Layer作用于生成第二個詞的過程,進而生成正確的翻譯。Attention的這種機制其實是很符合翻譯的這種直覺的,即生成每一個詞的時候,關注的源端位置是不一樣的。在實際的應用中,Attention的這種機制的表現也非常好,這個也解決了RNN在長序列壓縮中造成的信息丟失的問題。
前文中介紹的Backpropagation,即從sequence的末尾將梯度傳回至sequence的開頭。但是在梯度回傳的過程中,它每一次的回傳都要與循環網絡的參數W(實際上是W的轉置矩陣)進行矩陣相乘,其實際的數值轉換的公式如下圖:
由于在每一次回傳的過程中都需要與W進行矩陣相乘,并且重復進行tanh計算,如下圖所示:
這樣在訓練上會帶來一些問題:
1、當W的值大于1且這個序列足夠長的時候,這個回傳的梯度的數值就會變得無限大。
這種時候,可以采用Gradient clipping的方法解決,即將梯度重新進行數值變換到一個可以接受的范圍。
2、如果W的數值小于1,就可能會造成梯度消失(導致完全無法更新)的問題。
這種時候,無論對梯度進行什么數值操作,都無法使用梯度來對參數進行更新,這時候可以考慮改變RNN的網絡結構來克服這個缺陷,LSTM也就應運而生了。
LSTM與RNN相比,它將原有的網絡結構拆成了更細的結構,如下圖所示:
可以看到,LSTM引入幾個門的限制,例如keep gate、write gate和read gate。通過這些門來控制LSTM的信息傳輸量。其實際的結構如下圖所示:
其中,f代表forget gate,i代表input gate,o代表output gate。上層的c在傳輸的過程中,只與這些門限的值進行數值變換,而不用跟整個網絡參數W進行矩陣相乘,這樣就避免了RNN回傳梯度時可能發生的梯度爆炸或梯度消失的問題。
這些門限具體分為以下幾種:
1、Keep Gate:它的作用是使LSTM的cell根據不同的輸入去選擇記憶或者遺忘前一個狀態中的信息。
2、Write Gate:它用于控制LSTM的cell接受新的輸入的百分比。
3、Update Gate:它實際上是對cell的更新,用于綜合前一時刻狀態與當前時刻狀態。
4、Read Gate:它用于控制當前狀態與Ct的信息的輸入。
通過加入這幾個門限,實際在循環網絡結構ct-1到ct傳播的過程中,只有一些較少的線性操作,并沒有乘法操作。這樣的好處在于它的gradient flow沒有被過多的干擾,即整個流程中梯度的傳播是非常通暢的,這樣就解決了RNN中梯度爆炸或者梯度消失的問題。
而LSTM也存在一些變種:
1、peephole LSTM。在LSTM中,門限的數值和cell都是無關的。但其實這些cell是可以加入門限的計算過程中,去影響每個門限的值,這樣整體上信息的流動就會更加通暢,在門限的計算上也會更準確一些,在某些任務上會取得更好的效果。
2、GRU。它將forget gate和input gate合成一個update gate,這個gate用于綜合控制cell的讀和寫,這樣可以簡化LSTM的參數,此外它還將cell state和hidden state進行合并。總體而言,它是一個比LSTM更加簡化的結構,在訓練上更加容易(參數少)。
3、Deep RNN。在RNN中,比較缺乏CNN中的層次化的結構,為了解決這個問題,它將多個RNN累積在一起,形成一種層次化的結構,并且不同層之間也存在網絡連接,這樣的好處在于每一層都可以代表一個信息抽象,另外它會吸收computation network的優勢——同時兼容RNN和CNN。這種網絡結構在機器翻譯、對話等領域都有很好的應用。
1、Image Caption
Image Caption,即對圖片的文字解釋。如下圖所示:
可以看到,輸入是一張圖片,輸出是對該圖片的文字解釋。具體實現流程如下:首先使用CNN(卷積神經網絡)進行建模,然后將這些信息綜合到Encoded state中,將其作為RNN的輸入,然后逐詞生成圖片的描述,最終得到完整的圖片描述。
具體來看,它結合CNN和RNN的網絡結構,如下圖所示:
之所以這么使用,是因為CNN適用于圖片的建模,而RNN適用于自然語言處理。因此可以先使用CNN對圖片中的信息進行卷積,然后將得到的結果作為RNN的輸入,去不斷的生成圖片的描述。
當然在這個過程中,也離不開Attention的機制,具體的流程如下圖:
因為在生成圖片的描述的時候,不同的詞對應的圖片的位置是不同的,如果采用Attention的機制,會使得圖片信息的捕捉更為準確,而不是將圖片的所有信息壓縮到一個隱藏層里面,使得上下文的信息會更加豐富。
下圖包含了一些有意思的例子:
第一幅圖片在生成frisbee這個單詞的時候,可以觀察到,frisbee那塊區域是高亮的,即它關注的區域十分正確。同樣,在第二個圖中的dog和第三個圖中的stop都是Attention機制良好作用的體現。
就實際而言,Image Caption是一個比較難的課題,上文中都是給的一個很好的例子,當然也會存在一些很差的例子。如下圖所示:
第一幅圖中,這個女生穿的衣服十分像一只貓,在實際的圖像描述的生成過程中,這件衣服被錯誤的識別成了一只貓,最終才得到了圖中的錯誤的描述。又如最后一幅圖片中,運動員實際上在接球,但是他的運動形態沒能被捕捉到,才生成了他在扔球的這樣一個錯誤的描述。可以看到Image Caption目前還是處于一個實驗的階段,還沒有達到商業化的水平。
2、QA
在RNNs應用中另外一個比較火的是QA(問答系統)。它實現的鏈路跟上個例子有所類似,但是有一個不同之處在于:對于輸入的問題,它采用了RNN而不是CNN進行建模,具體實現流程如下圖所示:
這就是人們常提到的Sequence to Sequence Model,即輸入是Sequence,輸出也是Sequence。對于輸入的問題,先通過循環神經網絡進行建模,然后將得到的Encoded state輸入到另一個循環神經網絡中,然后逐詞的生成最終的回答。
在另一些例子里面,不僅會有文字的輸入,還有圖片等信息的輸入,并且這些問題是基于圖片中的場景來進行提問的,這樣就會產生圖片和文字聯合組成QA的應用。以下圖為例:
在LSTM建模的初始階段,是使用了CNN將圖片壓縮作為了第一個隱藏層的狀態,并且將問題也通過LSTM進行聯合的建模,最終將整體的信息融入到encoder里面,并生成對應的翻譯。從圖中也可以看到,CNN和LSTM是可以緊密的聯合在一起共同工作的,并且還可以通過Attention機制達到更好的交互。
下圖是實際應用中一個比較有意思的例子:
問A圖中是哪種動物,在Attention機制中,捕捉到的這個貓的位置(白色方框)是比較集中的,這對于解答這個問題會起到很好的作用。在圖B中問這個人拿到在切什么,顯然白色方框聚焦的位置也是正確的。
3、Machine Translation
下圖中這個例子就是機器翻譯的鏈路,也是通過多層的RNN進行的建模,最終生成一個Final input matrix,然后借助Attention的機制,逐詞生成目標翻譯。
上圖就是機器翻譯過程的整體示意圖。此外,Google提出的神經網絡的翻譯的架構如下圖所示:
在Encoder端有八層LSTM堆砌在一起的,這樣便于對輸入句子的含義進行更好的理解。然后通過Attention連接到另外一個八層LSTM的Decoder端,最終將結果輸出到一個Softmax,來進行翻譯的預測。
實際還有一種另外的交互的翻譯方式——Speech Translation,如下圖所示:
即通過一個語言的序列,通過一個神經網絡,得到語音識別的結果,然后對該結果進行拼寫糾正、標點處理等,得到一個較好的語音識別的text,再將其輸入到神經網絡機器翻譯系統中,生成對應日文的翻譯,再借助于Text to Speech的系統,生成對應的日文的語言。
1、RNNs對層次信息的表示能力和卷積能力都存在一些不足。因此產生了一些如Deep RNN、Bidirectional RNN和Hierarchical RNN的變種,都希望通過更層次化的網絡結構來彌補這種不足。
2、RNNs的并行度很低。它的當前時刻的隱藏層的狀態依賴于之前時間的狀態,并且訓練和解碼的并行度都很低。
為了解決上面的問題,提出了一種新的神經網絡的架構——Transformer,如下圖所示:
Transformer使用簡單的FF-NN替代了GRU,這樣就直接解決了在訓練中難以并行的問題。但是由于取代了循環的結構,也會導致網絡中各個位置的信息是缺乏的,也不知道序列的先后順序。這時引入了一個Positional Encoding,對于每個位置都有一個Embedding來存儲位置信息。在實際的網絡結構中,可以分為幾個Sub-layer:
Sub-layer1:即全連接的FF網絡。
Sub-layer2:借助于sele-attention的機制來捕捉各個位置之間的關聯關系。
Between 1 and 2:加入了residual connection和layer normal。
綜上所述,而相比于RNN,Transformer有兩大優點:
1、比RNN擁有更好的性能。
2、訓練速度快了4倍。
閱讀原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19727.html
摘要:之后,注意力模型出現了。等企業越來越多地使用了基于注意力模型的網絡。所有這些企業已經將及其變種替換為基于注意力的模型,而這僅僅是個開始。比起基于注意力的模型,需要更多的資源來訓練和運行。這樣的回溯前進單元是神經網絡注意力模型組。 循環神經網絡(RNN),長短期記憶(LSTM),這些紅得發紫的神經網絡——是時候拋棄它們了!LSTM和RNN被發明于上世紀80、90年代,于2014年死而復生。接下...
摘要:作為解決方案的和和是解決短時記憶問題的解決方案,它們具有稱為門的內部機制,可以調節信息流。隨后,它可以沿著長鏈序列傳遞相關信息以進行預測,幾乎所有基于遞歸神經網絡的技術成果都是通過這兩個網絡實現的。和采用門結構來克服短時記憶的影響。 短時記憶RNN 會受到短時記憶的影響。如果一條序列足夠長,那它們將很難將信息從較早的時間步傳送到后面的時間步。 因此,如果你正在嘗試處理一段文本進行預測,RNN...
摘要:有能力對元胞狀態添加或者刪除信息,這種能力通過一種叫門的結構來控制。一個有個這種門,來保護和控制元胞狀態。輸出將會基于目前的元胞狀態,并且會加入一些過濾。同時也將元胞狀態和隱狀態合并,同時引入其他的一些變化。 循環神經網絡(RNN)人們的每次思考并不都是從零開始的。比如說你在閱讀這篇文章時,你基于對前面的文字的理解來理解你目前閱讀到的文字,而不是每讀到一個文字時,都拋棄掉前面的思考,從頭開始...
摘要:在普通的全連接網絡或中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成為前向神經網絡。不難想象隨著深度學習熱度的延續,更靈活的組合方式更多的網絡結構將被發展出來。 從廣義上來說,NN(或是更美的DNN)確實可以認為包含了CNN、RNN這些具體的變種形式。在實際應用中,所謂的深度神經網絡DNN,往往融合了多種已知的結構,包括卷積層或是LSTM單元。這里的DNN特指全連接...
摘要:網絡所有的神經元都與另外的神經元相連每個節點功能都一樣。訓練的方法是將每個神經元的值設定為理想的模式,然后計算權重。輸入神經元在網絡整體更新后會成為輸入神經元。的訓練和運行過程與十分相似將輸入神經元設定為固定值,然后任網絡自己變化。 新的神經網絡架構隨時隨地都在出現,要時刻保持還有點難度。要把所有這些縮略語指代的網絡(DCIGN,IiLSTM,DCGAN,知道嗎?)都弄清,一開始估計還無從下...
閱讀 3158·2021-10-14 09:42
閱讀 3564·2019-08-26 13:56
閱讀 3444·2019-08-26 11:59
閱讀 938·2019-08-23 18:00
閱讀 2195·2019-08-23 17:51
閱讀 3522·2019-08-23 17:17
閱讀 1478·2019-08-23 15:11
閱讀 5145·2019-08-23 15:05