BERT 是雙向 Transformer,這是它的一個核心創新點。下面我從 技術原理、與傳統 Transformer 的區別、以及雙向性的實際意義 來詳細解釋為什么 BERT 被稱為“雙向 Transformer”。
一、什么是 BERT 的“雙向”?
在 BERT 的論文中,雙向的原文是 "Bidirectional", 更準確地說,BERT 是“深度雙向(deeply bidirectional)”的 Transformer 編碼器。
這個“雙向”指的是:
在每一層 Transformer 中,每個詞(token)的表示都能同時看到其左邊和右邊的上下文。
也就是說,BERT 在預訓練階段對句子的處理是 同時從左往右和從右往左都考慮上下文信息的。
二、對比:BERT vs GPT
模型 | 基于結構 | 上下文類型 | 是否雙向 |
---|---|---|---|
GPT | Transformer Decoder | 單向(從左到右) | 否 |
BERT | Transformer Encoder | 雙向(同時看左右) | 是 |
GPT 采用左到右的自回歸(AutoRegressive)語言建模方式,預測當前詞時,只依賴其左邊的詞。
BERT 使用 Masked Language Model(MLM)來隨機遮住輸入中的一部分詞,然后預測被遮住的詞,它需要依賴左右兩側的詞語來推理出被遮住的詞。
三、為什么 BERT 是雙向 Transformer?
1. BERT 的預訓練任務:Masked Language Modeling(MLM)
BERT 用的是 Masked Language Model,即在輸入中隨機掩蓋一部分 token(如 [MASK]
),訓練模型去預測這些被遮蓋的詞:
舉例:
輸入:
The man went to the [MASK]
目標:預測
[MASK]
為store
或park
等
此時,模型 必須利用 [MASK]
左右兩側的信息 來做預測。因此,它在每一層都需要看到整個句子(不是單向的)。
這一點和 GPT 的左到右建模完全不同。
2. Transformer 本身結構支持雙向
Transformer 編碼器(Encoder)中使用的是 自注意力機制(Self-Attention),它允許每個 token 與輸入序列中的所有 token 建立聯系:
在 BERT 中,沒有添加任何掩碼(mask)來阻止右邊的信息參與注意力,因此它是自然的雙向結構。
GPT(Decoder)則添加了下三角 mask,阻止模型看見未來的信息,使得它只能看到左邊。
四、BERT 的雙向性優勢
上下文更完整
傳統語言模型(如 GPT)只能從一個方向理解上下文,而 BERT 可以同時考慮前后信息,對句子理解更深。
這對于命名實體識別、問答、自然語言推理等任務效果更好。
更強的表示能力
每一個 token 的 embedding 編碼,融合了整句話的語義信息,有利于更復雜的語義建模。
對稱建模句子結構
適用于文本蘊含、句子對匹配等需要對稱理解的任務。
五、總結
BERT 是雙向 Transformer,因為它在預訓練階段使用 MLM 任務,在每一層 Transformer 編碼器中都能同時訪問 token 的左右上下文。
雙向性的實現依賴于 Transformer 編碼器 的自注意力機制,不加入方向性掩碼。
相比傳統的單向語言模型(如 GPT),BERT 的雙向特性使得它在多種自然語言理解任務中表現更強。