1. 程式人生 > 其它 >espnet中的transformer和LSTM語言模型對比實驗

espnet中的transformer和LSTM語言模型對比實驗

摘要:本文以aishell為例,通過對比實驗為大家介紹transformer和LSTM語言模型。

本文分享自華為雲社群《espnet中的transformer和LSTM語言模型對比---以aishell為例》,作者: 可愛又積極 。

NLP特徵提取器簡介 - RNN和Transformer

近年來,深度學習在各個NLP任務中都取得了SOTA結果,我們先了解一下現階段在自然語言處理領域最常用的特徵抽取結構。

長短期記憶網路(LSTM)

傳統RNN的做法是將所有知識全部提取出來,不作任何處理的輸入到下一個時間步進行迭代。就像參加考試一樣,如果希望事先把書本上的所有知識都記住,到了考試的時候,早期的知識恐怕已經被近期的知識完全覆蓋了,提取不到長遠時間步的資訊是很正常的。而人類是這樣做的嗎?顯然不是的,我們通常的做法是對知識有一個理性判斷,重要的知識給予更高的權重,重點記憶,不那麼重要的可能沒多久就忘了,這樣,才能在面對考試的時候有較好的發揮。在我看來,LSTM的結構更類似於人類對於知識的記憶方式。理解LSTM的關鍵就在於理解兩個狀態ct和at和內部的三個門機制:

圖中我們可以看見,LSTM Cell在每個時間步接收上個時間步的輸入有兩個,傳給下一個時間步的輸出也有兩個。通常,我們將c(t)看作全域性資訊,at看作全域性資訊對下一個Cell影響的隱藏狀態。

遺忘門、輸入門(圖中的update gate)和輸出門分別都是一個啟用函式為sigmoid的小型單層神經網路。由於sigmoid在(0,1)範圍內的取值,有效的用於判斷是保留還是“遺忘”資訊(乘以接近1的值表示保留,乘以接近0的值表示遺忘),為我們提供了資訊選擇性傳輸的能力。

這樣看下來,是不是覺得LSTM已經十分"智慧"了呢?但實際上,LSTM還是有其侷限性:時序性的結構一方面使其很難具備高效的平行計算能力(當前狀態的計算不僅要依賴當前的輸入,還要依賴上一個狀態的輸出),另一方面使得整個LSTM模型(包括其他的RNN模型,如GRU)總體上更類似於一個馬爾可夫決策過程,較難以提取全域性資訊。

GRU可以看作一個LSTM的簡化版本,其將at與ct兩個變數整合在一起,且講遺忘門和輸入門整合為更新門,輸出門變更為重製門,大體思路沒有太大變化。兩者之間的效能往往差別不大,但GRU相對來說引數量更少。收斂速度更快。對於較少的資料集我建議使用GRU就已經足夠了,對於較大的資料集,可以試試有較多引數量的LSTM有沒有令人意外的效果。

Transformer

圖中紅框內為Encoder框架,黃框內為Decoder框架,其均是由多個Transformer Block堆疊而成的。這裡的Transformer Block就代替了我們LSTM和CNN結構作為了我們的特徵提取器,也是其最關鍵的部分。

作者採用Attention機制的原因是考慮到RNN(或者LSTM,GRU等)的計算限制為是順序的,也就是說RNN相關演算法只能從左向右依次計算或者從右向左依次計算,這種機制帶來了兩個問題:

  1. 時間片t的計算依賴t-1時刻的計算結果,這樣限制了模型的並行能力;
  2. 順序計算的過程中資訊會丟失,儘管LSTM等門機制的結構一定程度上緩解了長期依賴的問題,但是對於特別長期的依賴現象,LSTM依舊無能為力。

Transformer的提出解決了上面兩個問題,首先它使用了Attention機制,將序列中的任意兩個位置之間的距離是縮小為一個常量;其次它不是類似RNN的順序結構,因此具有更好的並行性,符合現有的GPU框架。

從語義特徵提取能力:Transformer顯著超過RNN和CNN,RNN和CNN兩者能力差不太多。

長距離特徵捕獲能力:CNN極為顯著地弱於RNN和Transformer,Transformer微弱優於RNN模型,但在比較遠的距離上(主語謂語距離大於13),RNN微弱優於Transformer,所以綜合看,可以認為Transformer和RNN在這方面能力差不太多,而CNN則顯著弱於前兩者。這部分我們之前也提到過,CNN提取長距離特徵的能力收到其卷積核感受野的限制,實驗證明,增大卷積核的尺寸,增加網路深度,可以增加CNN的長距離特徵捕獲能力。而對於Transformer來說,其長距離特徵捕獲能力主要受到Multi-Head數量的影響,Multi-Head的數量越多,Transformer的長距離特徵捕獲能力越強。

任務綜合特徵抽取能力:通常,機器翻譯任務是對NLP各項處理能力綜合要求最高的任務之一,要想獲得高質量的翻譯結果,對於兩種語言的詞法,句法,語義,上下文處理能力,長距離特徵捕獲等方面的效能要求都是很高的。從綜合特徵抽取能力角度衡量,Transformer顯著強於RNN和CNN,而RNN和CNN的表現差不太多。

平行計算能力:對於平行計算能力,上文很多地方都提到過,平行計算是RNN的嚴重缺陷,而Transformer和CNN差不多。

espnet中的transformer和LSTM語言模型對比實驗

espnet所有的例子中語言模均預設是LSTM,這裡我以aishell為例,epoch設定為20,batchsize=64。

LSTM結構配置:

LSTM結果:

將語言模型換為transformer。transformer結構配置:

transformer結果:

實驗結論: transformer語言模型的loss確實比lstm要小,但由於語言模型序列資訊是非常重要的,transformer只能獲取模糊的位置資訊,因此transformer的困惑度比lstm要大!後續應該就這一方面進行改進。

 

點選關注,第一時間瞭解華為雲新鮮技術~