序列到序列 是什麼?

Sequence to Sequence:序列到序列 的完整解釋

使用編碼器-解碼器架構將一個序列轉換為另一個序列,廣泛應用於翻譯、文本摘要等。

核心概念

Seq2Seq的核心思想是分兩個階段處理序列:編碼階段將輸入序列讀入並理解,生成一個固定長度的內部表示;解碼階段從該表示逐步生成輸出序列。這種分離設計優雅而通用,可應用於任何輸入輸出序列的轉換問題。

Seq2Seq打破了傳統機器翻譯的限制。傳統方法依賴詞對齐和短語表,無法靈活處理句子結構差異。神經Seq2Seq端到端學習,直接從平行語料中學習翻譯規律,自動捕捉語言的複雜結構。

運作原理

編碼器(Encoder)

編碼器是一個遞迴神經網路(RNN、LSTM或GRU),逐詞處理輸入序列:

h(t) = Encoder_RNN(x(t), h(t-1))

其中x(t)是t時刻的輸入(詞向量),h(t)是隱藏狀態。遍歷整個序列後,最後的隱藏狀態h(T)作為上下文向量(context vector)c = h(T),凝聚了整個輸入序列的語義。

解碼器(Decoder)

解碼器也是RNN,使用上下文向量初始化,逐詞生成輸出序列:

h'(t) = Decoder_RNN(y(t-1), h'(t-1), c) p(y(t) | y(<t), c) = softmax(W_out · h'(t))

其中y(t-1)是前一時刻的輸出(通常是詞向量),h'(t)是解碼器的隱藏狀態。softmax層輸出下一詞的概率分佈,選擇概率最高的詞作為輸出。

訓練過程

訓練時使用教師強制(teacher forcing):解碼器在生成y(t)時使用真實的y(t-1)而非自己的預測。這加速收斂但引入暴露偏差(exposure bias):訓練時用真實詞,推理時用預測詞。推理時詞預測誤差會累積。

損失函數是交叉熵:

L = -Σₜ log p(yₜ* | y<t*, c)

其中yₜ*是真實詞。

推理過程

推理時採用自迴歸解碼:生成第一個詞,再用該詞生成第二個詞,依此類推,直到生成結束符或達到最大長度。

實際應用

機器翻譯

Seq2Seq在神經機器翻譯中最為成功。谷歌翻譯、微軟翻譯等商用系統都採用Seq2Seq框架。性能超越基於統計短語表的方法。特別是加入注意力機制後,翻譯質量達到或超過人工翻譯水準。

文本摘要

Seq2Seq用於自動摘要:輸入是原文章段落,輸出是簡明摘要。可用於新聞摘要、學術文獻摘要、郵件摘要等。抽取式摘要(選擇原文重要句)常用簡單方法,生成式摘要(生成新摘要)用Seq2Seq。

問答系統

Seq2Seq用於生成式問答:輸入是問題,輸出是答案。特別是在開放域問答中,直接從知識庫生成答案。閱讀理解問答中,輸入是文章+問題,輸出是答案片段。

對話系統

對話機器人(chatbot)用Seq2Seq生成回覆。輸入是用戶消息,輸出是機器人回覆。聊天機器人通過學習大規模會話語料,學會自然的對話風格。

代碼生成

Seq2Seq用於程序合成:輸入是自然語言描述或規範,輸出是源代碼。代碼翻譯(將代碼從一種語言翻譯到另一種)也用Seq2Seq。

常見誤區

誤區一:固定長度上下文向量會損害性能

原始Seq2Seq用單個上下文向量承載整個輸入序列信息,對長句子容易丟失信息。但這不是固有缺陷。注意力機制的引入解決了這個問題,解碼器可動態地關注輸入的不同部分。現代Seq2Seq配合注意力機制性能優秀。

誤區二:Seq2Seq只能用於NLP

雖然Seq2Seq在NLP中最著名,但原理通用。可應用於音樂生成(輸入是節拍,輸出是音符序列)、時序預測(輸入是過去序列,輸出是預測序列)、圖像字幕(輸入是圖像CNN特徵序列,輸出是描述文字)等多個領域。

誤區三:生成的輸出品質不可控

解碼過程可控制輸出多樣性和質量。束搜索(beam search)在保留多個最有希望的假設同時進行貪心搜索,生成更佳結果。溫度參數調整softmax的陡峭度,溫度低輸出確定性強品質高,溫度高輸出多樣但可能無意義。

誤區四:更深或更大的Seq2Seq模型總是更好

深層網路能表達更複雜的轉換,但訓練困難、過擬合風險大。在資料有限情況下,中等規模模型往往表現更好。應根據資料量、任務複雜度和計算資源平衡模型規模。

與相關技術的比較

  • 與機器翻譯統計方法的區別:統計方法依賴短語表和複雜對齡模型,Seq2Seq端到端、更簡潔但需更多數據
  • 與注意力機制的區別:注意力是Seq2Seq的增強,而非替代;現代Seq2Seq幾乎都配合注意力使用
  • 與Transformer的區別:Transformer基於純注意力,拋棄了遞迴,支援更強的並行性和更長的依賴;Seq2Seq是基礎概念,Transformer是進化
  • 與強化學習的區別:基礎Seq2Seq用有監督學習(教師強制),強化學習用於優化推理時指標(BLEU score)
  • 與多任務學習的區別:Seq2Seq專注單一轉換任務,多任務學習在單個模型內處理多個相關任務

常見問題

教師強制為什麼會導致暴露偏差?

教師強制在訓練時,解碼器總是接收真實的前一個詞y(t-1)*,即使模型預測錯誤。推理時,解碼器接收自己的預測y(t-1),可能是錯誤的。這種訓練推理不匹配導致誤差累積:錯誤的y(t-1)導致y(t)預測偏差,進而影響y(t+1)。解決方案包括課程學習(逐漸增加模型使用自己預測的比例)、計劃抽樣(部分時刻用模型預測而非真實詞)、或直接優化推理指標如BLEU score。

為什麼現代機器翻譯已經不用純Seq2Seq模型了?

純Seq2Seq(尤其不加注意力)在長句子上性能差、訓練困難。主要原因:(1)固定長度上下文向量無法承載長句信息;(2)遞迴性質導致梯度消失;(3)無法靈活對齡源目標詞。現代系統採用多項改進:注意力機制(讓解碼器關注相關源詞)、Transformer架構(支援並行和長依賴)、多層編碼器-解碼器、字符級或子詞級分詞。Google翻譯、DeepL等都採用Transformer而非傳統Seq2Seq。

如何評估Seq2Seq模型在翻譯或摘要上的質量?

自動評估指標包括BLEU(詞n-gram重合度)、METEOR(考慮同義詞)、ROUGE(用於摘要評估)、BERTScore(使用預訓練語言模型)。但這些指標與人類評估相關性有限,不完全反映質量。最可靠的評估是人工評審:邀請雙語評估者判斷翻譯准確性、流暢性;或邀請專家評估摘要的完整性、准確性、簡潔性。實務中推薦結合自動指標快速迭代和定期人工評審確認質量。