![]()
訓練一個翻譯模型,最尷尬的不是翻錯,而是翻完了還不停嘴。
原文「let's go」明明只有兩詞,西班牙語「Vamos」一出就該收工。但解碼器(decoder,序列生成器)像個話癆主播,非要等到EOS(End of Sequence,序列終止符) token才會閉嘴。這個設計細節,把無數新手坑進無限循環的深淵。
解碼器的"強迫癥":沒有EOS就永不停機
Seq2Seq的解碼流程像一條裝配流水線。編碼器(encoder,序列理解器)把英文句子壓成上下文向量(context vector),解碼器再逐詞吐出生成結果。每一步的輸入來自上一步的輸出——第一個詞是EOS token,之后全是自己剛預測的詞。
問題就出在這個閉環里。解碼器沒有內置的"說完判斷",它的停止條件只有一個:輸出EOS。 就像老式錄音機沒有自動停機功能,磁帶走到頭還繼續空轉,直到你手動拔電源。
實戰中這會導致兩種災難:一是模型學壞了,永遠學不會輸出EOS,生成結果無限拉長;二是遇到訓練數據里沒見過的模式,解碼器陷入循環重復(比如「非常非常非常…」)。2016年Google Neural Machine Translation上線初期,工程師就踩過這個坑——某些語言對的翻譯結果偶爾溢出長度限制,后臺日志里全是被強制截斷的半句話。
原文給的解決方案很樸素:設一個最大輸出長度(maximum output length)。超過就硬掐。這招治標不治本,但至少防止了服務掛掉。
教師強制:用"作弊"換取訓練穩定
![]()
訓練階段有個更隱蔽的坑。按推理邏輯,解碼器應該用上一時刻的預測詞作為下一時刻輸入。但這會讓誤差像滾雪球——第一步猜錯,后面全歪,梯度傳播時根本找不到正確的優化方向。
工程師們想了個損招:訓練時直接把正確答案塞進去,不管模型上一刻預測了什么。這叫教師強制(teacher forcing)。
「這就像學騎自行車時,教練全程扶著后座,你只管蹬踏板。」Google Brain的論文里打過這個比方。好處是收斂快,模型能快速學會詞與詞的對應關系;壞處也明顯——推理時沒有教練扶車了,模型容易懵。
暴露偏差(exposure bias)由此而來。訓練時解碼器看到的都是標準答案,推理時卻要吃自己的"殘羹剩飯",分布偏移導致性能斷崖。2015年Bengio團隊專門發了篇論文講這個問題,提出scheduled sampling(計劃采樣)來緩解——訓練后期逐漸混入模型自己的預測,讓解碼器提前適應"自力更生"。
但scheduled sampling也有爭議。Yoshua Bengio后來承認,這招在理論上有點臟,破壞了最大似然估計的純凈性。工業界用得不多,多數團隊還是選擇純教師強制,靠更大的數據量和更聰明的推理策略(如beam search,束搜索)來填坑。
注意力機制:上下文向量的"越獄"
原文埋了個伏筆:下一篇講注意力機制(attention mechanism,注意力分配機制)。這其實是解決Seq2Seq根本缺陷的鑰匙。
傳統編碼器把整個句子壓成固定長度的上下文向量,信息瓶頸明顯。長句子的前半截細節,在向量里被后半截擠得稀碎。解碼器生成每個詞時,這個向量都是同一副面孔,不管當前要生成的是主語還是賓語。
![]()
注意力機制讓解碼器"回頭看"。生成每個詞時,它動態地掃一遍編碼器的所有隱藏狀態,算出一套權重,把當下最相關的信息拎出來。上下文向量不再是壓縮餅干,而是按需現榨的果汁。
2014年Bahdanau等人提出這個機制時,機器翻譯的BLEU分數(雙語評估替補,自動衡量翻譯質量的指標)直接跳漲。更關鍵的是,它讓解碼器的停止邏輯有了新可能——注意力權重分布本身可以作為"說完了"的信號。當所有位置的注意力都趨于平淡,EOS的概率自然飆升。
不過這是后話。原文的八篇系列到此收尾,基礎架構的坑已經夠喝一壺。
三個細節,檢驗你是否真懂了
第一,EOS token在訓練時既是解碼器的起始輸入,也是終止目標。這個雙重身份常被忽略——它是整個序列的"書擋",一頭一尾夾住生成內容。
第二,教師強制雖然"作弊",但在Transformer架構里依然標配。GPT系列預訓練時,每個位置看到的都是前文的真實token,而非模型預測。自回歸(autoregressive,逐詞生成)的詛咒與饋贈,在此奇妙平衡。
第三,最大輸出長度這個兜底策略,在ChatGPT類產品里演變成了max_tokens參數。用戶感知到的"話沒說完就被掐",往往是觸發了這個硬邊界,而非模型主動選擇EOS。
InstallerPedia的結尾廣告倒是貼切——安裝軟件時,進度條走到100%還卡住的絕望,和解碼器等不到EOS的焦慮,大概是同一種現代性困境。
你的翻譯模型,有沒有在深夜日志里無限循環過?最后是怎么掐停的——硬截斷、長度懲罰,還是干脆上了Transformer?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.