下句預測 是什麼?

Next Sentence Prediction:下句預測 的完整解釋

BERT 預訓練的輔助任務,給定兩個句子,判斷第二個句子是否在原文本中直接跟隨第一個句子,用於訓練模型理解句子間的邏輯關係。

核心概念

下句預測(NSP)是 BERT 預訓練架構中的第二個主要自監督學習任務(第一個是遮蔽語言模型)。NSP 的設計基於一個假設:模型如果能理解句子間的邏輯關係,將能在需要推理的任務上表現更好。在 BERT 的輸入處理中,兩個句子通常被拼接在一起,中間由特殊 token [SEP] 分隔,開頭則有 [CLS] token。模型的任務是根據 [CLS] token 對應的輸出向量進行二元分類,判斷兩個句子是否連貫。

NSP 任務的構造方法如下:對於語料庫中的每個句子 A,有 50% 的概率選擇它的真實後續句子 B(正例),50% 的概率從語料庫中隨機選擇一個不相關的句子 B(負例)。通過訓練模型區分這兩類情況,模型學習到了對句子間語義和邏輯關係的理解。

運作原理

NSP 的實現細節相對直接。在預訓練過程中,輸入被格式化為 [CLS] + 句子 A + [SEP] + 句子 B + [SEP]。經過 Transformer 編碼器處理後,[CLS] token 位置的輸出被傳入一個簡單的分類層(通常是一個線性層加 softmax 激活函式)。分類層輸出兩個概率值,分別對應「句子 B 是 A 的下句」和「句子 B 不是 A 的下句」。

NSP 的損失函式為標準的二元交叉熵損失: L_NSP = -[y log(p) + (1-y) log(1-p)] 其中 y 是標籤(1 表示正例,0 表示負例),p 是模型預測「正例」的概率。

NSP 與 MLM 在預訓練時同時進行。總的預訓練損失是兩個任務損失的線性組合,通常設置為等權重。這種多任務學習的方式使得模型在訓練過程中同時優化兩個目標,從而獲得更全面的文本理解能力。

Transformer 的自注意力機制使得模型能在編碼時充分利用句子 A 和句子 B 中的所有信息。通過跨越 [SEP] token 的注意力權重,模型能學習到句子間的相互關係。

實際應用

NSP 任務對於需要理解句子間關係的下游任務特別有幫助。例如,在自然語言推理任務中,模型需要判斷前提句和假設句之間的邏輯關係(蘊含、矛盾或中性)。NSP 預訓練使得 BERT 在這類任務上的表現優於只使用 MLM 的模型。同樣,在問答任務中,模型需要理解問題句和候選答案句之間的相關性,NSP 預訓練提供的句子關係理解能力對此十分重要。

在實踐中,BERT 的微調過程中,NSP 任務被移除。只有預訓練階段使用 NSP,微調階段根據具體的下游任務設計新的目標函式。這種設計使得預訓練和微調能針對不同的目標進行優化。

後來的模型如 RoBERTa 在評估 NSP 的必要性時發現,NSP 對某些任務的貢獻有限,並將其從預訓練流程中移除。這引發了關於輔助預訓練任務的必要性的討論,但許多後續模型仍保留了 NSP 或類似的任務。

常見誤區

誤區一:認為 NSP 對所有下游任務都有幫助。實際上,NSP 的幫助主要體現在需要理解句子間關係的任務上,對於單句分類等任務的幫助相對較小。RoBERTa 的研究表明,移除 NSP 並不會顯著降低某些任務的效能。

誤區二:認為負例必須是完全不相關的句子。實際上,難度更高的負例(如來自同一文檔但不相鄰的句子)可能對模型學習更有幫助。某些後續研究探索了使用不同難度負例的效果。

誤區三:認為 NSP 是文本段分類的通用預訓練方法。實際上,NSP 是特定於順序句對的任務。對於其他類型的句對關係(如複述、釋義等),可能需要設計專門的預訓練任務。

誤區四:忽視 NSP 的句子邊界定義。在不同的語言或領域中,「句子」的定義可能不同,這會影響 NSP 任務的有效性。

與相關技術的比較

NSP 與句子順序預測(Sentence Order Prediction, SOP)的區別在於難度設置。在 ALBERT 中,為了增加任務難度,採用 SOP 替代 NSP:正例仍然是真實的連續句子對,但負例被改為真實的句子對但順序被反轉。這使得模型不僅要學習句子間是否相關,還要學習它們的正確順序。

NSP 與對比學習方法的區別在於學習信號的來源。NSP 使用的是句子原始標籤(是否連續),而對比學習方法使用的是句子對之間的相似性分布。

NSP 還與其他預訓練多任務學習方法相關,如 ELECTRA 的判別任務。這些方法都試圖通過設計多個預訓練目標,讓模型在無標籤文本上學習更全面的語言理解能力。

常見問題