需要整句話才能讀懂的句子
讀這句:*「獎盃放不進手提箱,因為它太大了。」* 這裡的它指什麼?你之所以知道,是因為你權衡了其他的詞——獎盃說得通,手提箱說不通。把最後一個詞改成太小,它立刻變成指手提箱。一個詞的意思取決於它身旁的詞。任何想預測下一個詞的模型,都得不斷做這種權衡。這種權衡,我們就叫做注意力(attention)。
Transformer就是完全圍繞這個點子打造的神經網路架構。它是幾乎每個現代大型語言模型內部的引擎。讀完這個系列,你將能逐層追蹤一個句子如何流過它,並能清楚說出每個部件做什麼、為什麼這樣做。
在它之前是什麼,又為什麼吃力
在 transformer 之前,處理語言的主流工具是循環神經網路(recurrent neural network, RNN)。它讀句子的方式,像你把話沿著電話線一個個傳下去:一次一個詞,把目前看過的一切壓進一個固定大小的記憶裡,再往下走。這帶來兩個頑固的問題。
RNN 展开为从左到右的重复单元链的示意图,每个时间步对应一个单元。
- 遺忘。 等 RNN 走到句尾的它時,前面的獎盃和手提箱已被覆寫許多次。長距離的關聯就淡掉了。
- 無法平行。 第 50 個詞得等第 49 個詞算完才能處理。用這種方式訓練數十億個詞慢得令人痛苦,所以模型一直長不大。
更早的序列到序列(sequence-to-sequence)模型,在 RNN 上加裝了早期的注意力機制(attention mechanism),當作治遺忘的補丁。2017 年的論文《Attention Is All You Need》做了個激進的決定:把循環整個丟掉,只留下注意力。
一張圖看懂注意力
想像句子裡每個詞都坐在自己的桌前,手裡握著一個向量——一串數字,編碼這個詞目前的意思。自注意力(self-attention)讓每張桌子向其他每張桌子發出一個快速的查詢,問「你跟我有多相關?」,再把答案的混合拉回來。它向整個房間查詢,發現獎盃高度相關,於是更新自己的向量,吸收一部分獎盃的意思。
交互式自注意力演示:选择一个单词会高亮它对句子其余部分的注意力权重。
這種混合就是我們說的脈絡混合(context mixing):資訊在各位置之間橫向流動,使每個詞的表示變得有脈絡意識。關鍵是,每張桌子都同時做這件事。沒有逐字的瓶頸,這正是這個架構訓練如此之快、又能擴展(scale)到龐大規模的原因。
整个思想浓缩成一行:每个单词的新向量是其他单词的 softmax 加权混合——下一篇指南将拆解这个公式。
接下來你會一步步建立什麼
注意力是核心,但 transformer 不只有注意力。接下來四篇,我們會一個部件一個部件地組裝出整台引擎,直到你看任何架構圖都不再皺眉。
- 第 2 篇——查詢、鍵、值:一個詞究竟用什麼算術決定該聽誰的。
- 第 3 篇——多個頭與一條單行道:平行運作的注意力專家,以及防止模型作弊的遮罩。
- 第 4 篇——區塊的其餘部分:前饋層、殘差連接、正規化,以及位置如何被編碼。
- 第 5 篇——堆疊引擎:為什麼要把區塊重複幾十次,深度又換來了什麼。