JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

為什麼要注意力?從逐字閱讀到環顧全局

Transformer 被發明出來要解決的問題,以及解決它的那一個點子:讓每個詞都能看見其他每個詞。

需要整句話才能讀懂的句子

讀這句:*「獎盃放不進手提箱,因為太大了。」* 這裡的指什麼?你之所以知道,是因為你權衡了其他的詞——獎盃說得通,手提箱說不通。把最後一個詞改成太小立刻變成指手提箱。一個詞的意思取決於它身旁的詞。任何想預測下一個詞的模型,都得不斷做這種權衡。這種權衡,我們就叫做注意力(attention)

Transformer就是完全圍繞這個點子打造的神經網路架構。它是幾乎每個現代大型語言模型內部的引擎。讀完這個系列,你將能逐層追蹤一個句子如何流過它,並能清楚說出每個部件做什麼、為什麼這樣做。

在它之前是什麼,又為什麼吃力

在 transformer 之前,處理語言的主流工具是循環神經網路(recurrent neural network, RNN)。它讀句子的方式,像你把話沿著電話線一個個傳下去:一次一個詞,把目前看過的一切壓進一個固定大小的記憶裡,再往下走。這帶來兩個頑固的問題。

循环网络在时间上展开:它一个接一个地读取单词,因此远处的单词必须熬过一长串步骤才能被记住。

RNN 展开为从左到右的重复单元链的示意图,每个时间步对应一个单元。

  1. 遺忘。 等 RNN 走到句尾的時,前面的獎盃手提箱已被覆寫許多次。長距離的關聯就淡掉了。
  2. 無法平行。 第 50 個詞得等第 49 個詞算完才能處理。用這種方式訓練數十億個詞慢得令人痛苦,所以模型一直長不大。

更早的序列到序列(sequence-to-sequence)模型,在 RNN 上加裝了早期的注意力機制(attention mechanism),當作治遺忘的補丁。2017 年的論文《Attention Is All You Need》做了個激進的決定:把循環整個丟掉,只留下注意力。

一張圖看懂注意力

想像句子裡每個詞都坐在自己的桌前,手裡握著一個向量——一串數字,編碼這個詞目前的意思。自注意力(self-attention)讓每張桌子向其他每張桌子發出一個快速的查詢,問「你跟我有多相關?」,再把答案的混合拉回來。向整個房間查詢,發現獎盃高度相關,於是更新自己的向量,吸收一部分獎盃的意思。

点击任意单词,查看它关注哪些其他单词——自注意力让每个位置在同一步中都能看到其他所有位置。

交互式自注意力演示:选择一个单词会高亮它对句子其余部分的注意力权重。

這種混合就是我們說的脈絡混合(context mixing):資訊在各位置之間橫向流動,使每個詞的表示變得有脈絡意識。關鍵是,每張桌子都同時做這件事。沒有逐字的瓶頸,這正是這個架構訓練如此之快、又能擴展(scale)到龐大規模的原因。

\text{Attention}(Q,K,V)=\operatorname{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V

整个思想浓缩成一行:每个单词的新向量是其他单词的 softmax 加权混合——下一篇指南将拆解这个公式。

接下來你會一步步建立什麼

注意力是核心,但 transformer 不只有注意力。接下來四篇,我們會一個部件一個部件地組裝出整台引擎,直到你看任何架構圖都不再皺眉。

  1. 第 2 篇——查詢、鍵、值:一個詞究竟用什麼算術決定該聽誰的。
  2. 第 3 篇——多個頭與一條單行道:平行運作的注意力專家,以及防止模型作弊的遮罩。
  3. 第 4 篇——區塊的其餘部分:前饋層、殘差連接、正規化,以及位置如何被編碼。
  4. 第 5 篇——堆疊引擎:為什麼要把區塊重複幾十次,深度又換來了什麼。