1.簡述
通常,在自然語言生成任務(機器翻譯,文本摘要,對話系統等)中,RNN和Transfomer都是常用的算法。下面,我們淺談下采用RNN和Transformer的區別。
2.RNN模型簡介:
相比於詞袋模型和前饋神經網絡模型,RNN可以考慮到詞的先後順序對預測的影響,RNN包括三個部分:輸入層、隱藏層和輸出層。相對於前饋神經網絡,RNN可以接收上一個時間點的隱藏狀態,基本結構圖如下:
計算公式如下:
對於每一個時間點,輸入是和上一個時間點的隱藏狀態,輸出是當前時間點的隱藏狀態,g()函數是激活函數,比如tanh或是sigmoid函數,f()函數通常是softmax函數。
2.Transformer模型簡介:
Transformer模型是一種基於Attention機制來加速深度學習算法的模型,可以進行並行化計算,而且每個單詞在處理過程中注意到了其他單詞的影響,效果非常好。
論文地址:https://arxiv.org/abs/1706.03762,論文題目爲:《Attention Is All You Need》。
Transformer模型有Encoder層和Decoder層,由結構圖可以發現編碼層和解碼層裏都包含了多頭注意力層(Multi-Head Attention層)和前饋神經網絡(Feed Forward層),解碼層還包括一個Masked多頭注意力層。每個層後面都加了Add&Norm,其中Add是殘差連接,用於解決多層網絡訓練的問題,讓網絡只關注當前差異的部分,Norm是指Layer Normalization歸一化,加快收斂。
3.Transformer和RNN的區別:
1.RNN採用一種類似於遞歸的方式運行,無法執行並行化操作,也就無法利用GPU強大的並行化能力,而Transfomer基於Attention機制,使得模型可以並行化操作,而且能夠擁有全局的信息。
2.Transformer本身是不能利用單詞之間的位置信息的,所以需要在輸入中添加一個位置embedding信息,否則Transformer就類似於詞袋模型了。
3.RNN利用循環順序結構,對於長句需要的訓練步驟很多,加大了訓練的難度和時間。而Transfomer不需要循環,並行地處理單詞,而且其多頭注意力機制可以將很遠的詞聯繫起來,大大提高了訓練速度和預測準確度。