- Transformer自然語言處理實戰:使用Hugging Face Transformers庫構建NLP應用
- (澳)路易斯·湯斯頓等
- 871字
- 2024-05-23 17:22:19
1.1 編碼器-解碼器框架
在Transformer出現之前,NLP的最新技術是LSTM等循環架構。這些架構通過在神經網絡連接使用反饋循環,允許信息從一步傳播到另一步,使其成為對文本等序列數據進行建模的理想選擇。如圖1-2左側所示,RNN接收一些輸入(可以是單詞或字符),將其饋送給神經網絡,然后輸出一個稱為隱藏狀態的向量。同時,模型通過反饋循環將信息反饋給自身,然后在下一步中使用。如果我們按照圖1-2右側所示“展開”循環,可以更清楚地看到這一點:RNN將有關其每一步的狀態信息傳給序列中的下一步操作。這點令RNN可以跟蹤前面步驟中的信息,并將其用于輸出預測。

圖1-2:RNN架構展開
這些架構曾經(并將繼續)廣泛用于NLP任務、語音處理和時間序列。你可以在Andrej Karpathy的博客“The Unreasonable Effectiveness of Recurrent Neural Networks”(https://oreil.ly/Q55o0)找到對它們能力的精彩闡述。
RNN發揮重要作用的一個領域是機器翻譯系統,其目標是將一種語言中的單詞序列映射到另一種語言。此類任務通常使用編碼器-解碼器或序列到序列架構[5]來解決,這些架構非常適合輸入和輸出都是任意長度序列的情況。編碼器將輸入序列的信息編碼為通常稱為最后隱藏狀態的數字表示。然后編碼器將該狀態傳給解碼器,解碼器生成輸出序列。
通常,編碼器和解碼器組件可以是能夠對序列進行建模的任何類型的神經網絡架構。圖1-3中的成對RNN說明了這一點,其中英語句子“Transformers are great!”編碼為隱藏狀態向量,然后解碼以產生德語譯文“Transformer sind grossartig!”輸入字符通過編碼器按順序饋送,輸出字符從上到下一次生成一個。

圖1-3:采用成對RNN的編碼器-解碼器架構(具體循環的層數通常會比此處顯示的要多得多)
雖然簡單優雅,但這種架構的一個弱點是編碼器的最終隱藏狀態會產生信息瓶頸:它必須表示整個輸入序列的含義,因為解碼器在生成輸出時只能靠它來讀取全部內容。從而很難處理長序列,因為當序列過長時,在將所有內容壓縮為單個固定表示的過程中可能會丟失序列開頭的信息。
幸運的是,有一種方法可以擺脫這一瓶頸,就是允許解碼器訪問編碼器的所有隱藏狀態。這種通用機制稱為注意力[6]。它是許多現代神經網絡架構中的關鍵組件。了解整合了注意力機制的RNN能夠幫助我們更好地理解Transformer架構。接下來我們深入了解一下注意力機制。
- 常用工具軟件案例教程
- Getting Started with Microsoft Application Virtualization 4.6
- FreeSWITCH 1.0.6
- Premiere Pro 2022從新手到高手
- 數碼攝影后期處理秘笈:Photoshop CC專業調色(第2版)
- 邊做邊學:Photoshop+CorelDRAW綜合實訓教程
- IT Inventory and Resource Management with OCS Inventory NG 1.02
- Oracle Warehouse Builder 11g: Getting Started
- Photoshop插畫藝術火星風暴
- OpenCV項目開發實戰(原書第2版)
- 3D打印輕松實踐:從材料應用到三維建模
- MATLAB在日常計算中的應用
- Microsoft Windows Communication Foundation 4.0 Cookbook for Developing SOA Applications
- 中文版SolidWorks 2018完全實戰技術手冊
- 中文版Photoshop CS5基礎培訓教程(移動學習版)