序列模型與Transformer

上下文長度(context length)

/ KON-tekst length /

上下文長度,是模型一次能在腦中端著的文字上限——它的工作記憶,以詞元(大致是詞片)來衡量。這扇窗裡的一切,注意力都能取用;落在窗外的一切,則形同不存在。如果一段對話、一份文件或一個程式碼庫超出了上下文長度,最舊的材料就會被丟棄,或必須被摘要掉。一個上下文為 4000 詞元的模型,讀的是幾頁紙;一個上下文達百萬詞元的模型,原則上能端著一整本書。

這個上限存在,有兩個相連的原因。其一,模型是在某個長度以內的序列上訓練的,超出之後它對位置的感覺會退化。其二,標準注意力讓每個詞元都與其他每個比較,所以上下文翻一倍,注意力的工作量與記憶體大致要翻兩番——這讓超長上下文無論是搭建還是運行都貨真價實地昂貴。近來的模型藉助更便宜的注意力變體與更好的位置方案,把上下文拉得極長,但每一次擴展,都是與那個平方代價的搏鬥。

這裡有一條至關重要的誠實話:一個標得很大的上下文長度,並不等於能可靠地用上它。模型常受「中段迷失」之累,對長輸入的開頭與結尾保持銳利的注意,卻對中段一帶掠過,埋在那裡的一個事實可能被整個錯過。一扇 20 萬詞元的窗,不保證模型真能找到並用上坐在第 10 萬詞元處的東西。評判長上下文的宣稱,永遠要看在深處實測的召回,而非那個頭條數字。

你把一份 300 頁的合約貼進聊天機器人,問它第 150 頁上的一個條款。即便整份文件塞得進上下文窗,模型也可能答得自信卻錯——它把中段掠過了。同樣的問題若問第 1 頁或最後一頁,通常就答對了。

塞得進窗,並不等於被可靠地讀到。

標稱的上下文長度是一個天花板,而非一項保證。有充分記錄的「中段迷失」效應意味著:埋在文件中段的事實,即便塞得下,也常被錯過。把一個大的上下文數字當作「可能性的上界」,而絕不要當作「模型會全部用上」的證明。

又稱
context window上下文长度上下文長度context size上下文窗口