2024-07-16|閱讀時間 ‧ 約 25 分鐘

C015|編碼器-解碼器循環神經網路如何影響注意力機制的設計?

「注意力機制 Attention Mechanisms」,


是學習「自然語言處理 Natural Language Processing NLP」以及


「大語言模型 Large Language Model LLM」技術細節必備的概念。


而根據Sebastian Raschka [1] 的著書"Build a Large Language Model (From Scratch)"[2],


常見的注意力機制有四種:


01 簡化自注意力 Simplified Self-Attention


02 自注意力 Self-Attention


03 因果注意力 Causal Attention


04 多頭注意力 Multi-Head Attention


這樣一想,或許訓練特定領域的語言模型,


可以直接用具體表格重新預訓練,然後再看作任務的效果如何。


如果可以補缺失值補得很好,那一切其實都很好。


那麼,當我們在對「長序列 Long Sequences」建模時,


如果不使用自注意力機制,會發生什麼問題呢? [3]


注意力機制的設計,


其實起源於「編碼器-解碼器循環神經網路 Encoder-Decoder Recurrent Neural Networks」[4]。


而編碼器-解碼器循環神經網路起源於「機器翻譯 Machine Translation」[5]。


你有想過機器是怎麼做翻譯的嗎?


機器其實不是像人類這樣一的單字對應一個單字去翻譯,


而是使用「編碼器 Encoder」與「解碼器 Decoder」來做語言之間的翻譯。


其中編碼器的任務,是「閱讀 Read」與「處理 Process」完整的文本,


而解碼器的任務,則是「產生 Produced」翻譯過後的文本。


而做機器翻譯最受歡迎的框架,就是「循環神經網路 Recurrent Neural Networks」[6]。


而編碼器-解碼器循環神經網路具體的工作方式,


首先編碼器會把輸入的文本,照「順序」去處理,接著更新其自身的「隱層狀態 Hidden State」。


「隱層狀態 Hidden State」就是「隱層 Hidden Layer」的「內部值 Internal Value」,


你也可以將「隱層狀態 Hidden State」理解成神經網路的「記憶細胞 Memory Cell」。


而解碼器,則是要將「最終隱層狀態 Final Hidden State」轉換為翻譯後的句子。


然而,循環神經網路最大的問題,就是「想不起來早期的記憶細胞」,


而更傾向於從「近期的記憶細胞」來翻譯句子。


這樣造成的主要問題是「脈絡遺失 Loss of Context」,


對於那種複雜句子就沒輒了。


而循環神經網路的這個弱點,也推動了注意力機制的設計。


Reference

[1] https://sebastianraschka.com/

[2] Figure 3.2, https://www.manning.com/books/build-a-large-language-model-from-scratch

[3] Section 3.1, https://www.manning.com/books/build-a-large-language-model-from-scratch

[4] https://d2l.ai/chapter_recurrent-modern/encoder-decoder.html

[5] https://d2l.ai/chapter_recurrent-modern/machine-translation-and-dataset.html

[6] https://en.wikipedia.org/wiki/Recurrent_neural_network

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.