官术网_书友最值得收藏!

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架構。接下來我們深入了解一下注意力機制。

主站蜘蛛池模板: 江都市| 新营市| 迁西县| 隆化县| 错那县| 左云县| 永新县| 罗定市| 株洲县| 定安县| 眉山市| 石屏县| 隆昌县| 四子王旗| 会理县| 潍坊市| 陆良县| 民县| 渝北区| 五华县| 克东县| 拉孜县| 牡丹江市| 巴林左旗| 崇文区| 宾阳县| 鄂尔多斯市| 九台市| 班玛县| 浦城县| 乌鲁木齐县| 南汇区| 巴林右旗| 威海市| 那坡县| 太保市| 原平市| 繁昌县| 伊通| 中阳县| 新河县|