Reeed

Reeed's Blog

github

BERT:開啟深度雙向語言理解新紀元

論文地址:https://arxiv.org/abs/1810.04805
作者:Google AI Language

引言:語言表徵的求索之路與 BERT 的橫空出世#

在自然語言處理(NLP)的星辰大海中,如何讓機器真正 “理解” 人類語言,一直是研究者們孜孜以求的核心目標。長久以來,獲取高質量的、能夠捕捉豐富語義信息的語言表徵是這條道路上的關鍵一步。然而,在 BERT 橫空出世之前,主流的語言模型預訓練方法(如早期的 GPT 和 ELMo)或多或少都面臨著一些固有的局限性:要麼是單向的上下文理解,要麼是雙向信息的淺層融合,這使得模型在面對需要深層雙向互動的任務時顯得力不從心,並且往往需要為每個下游任務精心設計特定的模型架構。

有沒有一種方法,能夠從未標記的文本中學習到一種通用的、深層次的、真正雙向的語言表示,從而能夠通過簡單的微調就在廣泛的 NLP 任務上取得革命性的性能提升呢?

這正是谷歌 AI 語言團隊在 2018 年石破天驚的論文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中所要解答的問題。BERT(Bidirectional Encoder Representations from Transformers)不僅僅是一個模型的名稱,它代表了一種全新的預訓練理念和框架,通過其獨特的掩碼語言模型(Masked Language Model, MLM)下一句預測(Next Sentence Prediction, NSP) 任務,成功地預訓練了深度雙向 Transformer 編碼器,為自然語言理解領域帶來了根本性的變革。

本文將深入探索 BERT 的核心機制:

  • BERT 是如何巧妙地實現 “真正的” 深度雙向上下文理解的?
  • 其創新的預訓練任務(MLM 和 NSP)是如何發揮關鍵作用的?
  • BERT 的出現為何能統一並簡化下游任務的處理,並一舉刷新眾多 NLP 基準?

BERT 之前的風景線:語言模型預訓練的探索與瓶頸#

在 BERT 之前,NLP 領域已經見證了預訓練語言表示的巨大潛力。從 Word2Vec、GloVe 等詞嵌入方法,到 ELMo 和 OpenAI GPT 等基於上下文的表示模型,研究者們不斷探索如何從未標記數據中汲取知識。然而,這些先行者們也面臨著各自的挑戰:

  • 單向上下文的視野局限:以 OpenAI GPT 為代表的許多模型,其核心是基於 Transformer 解碼器的單向語言模型(從左到右或從右到左)。雖然在文本生成等任務上表現出色,但這種單向性在預訓練階段限制了模型對整個句子完整上下文的理解能力。對於那些本質上需要同時考慮左右兩側信息的任務(如問答系統中的問題與答案對齊、句子情感分析等),單向模型並非最優選擇。
  • 淺層融合的雙向信息:像 ELMo 這樣的模型雖然意識到了雙向上下文的重要性,並嘗試結合從左到右和從右到左兩個獨立訓練的單向 LSTM 模型的輸出,但這種結合通常停留在特徵的 “淺層拼接”(shallow concatenation)層面。這意味著模型中的每一層並不能同時、深度地融合來自兩個方向的信息流,其雙向互動的深度和徹底性有限。
  • 下游任務的架構定制之苦:許多基於特徵提取的預訓練方法(如 ELMo),在應用於下游任務時,往往需要研究者為每個特定任務設計複雜的、任務相關的模型架構,以便有效地將預訓練好的特徵整合進去。這不僅增加了工作量,也使得模型的通用性受到限制。

正是這些既存的瓶頸,催生了對一種更強大、更通用、且能進行深度雙向信息互動的預訓練語言表示方法的迫切需求。


BERT 架構揭秘:深度雙向性是如何煉成的?#

BERT 的核心理念在於,能夠同時深度融合左右兩側上下文信息的模型,其語言表徵能力遠勝於單向模型或僅作淺層雙向融合的模型。並且,這種強大的表示可以通過一個統一的預訓練 - 微調框架賦能多種下游任務。為此,BERT 在模型架構和預訓練策略上都做出了開創性的設計。

1. 基石:強大的 Transformer 編碼器#

BERT 的模型架構完全基於多層雙向 Transformer 編碼器(Transformer Encoder)。我們知道,Transformer 的自注意力機制(Self-Attention)能夠捕捉輸入序列中任意兩個位置之間的依賴關係,而不受距離限制。通過堆疊多層 Transformer 編碼器,BERT 能夠構建出非常深的網絡,從而學習到極其豐富的層次化特徵表示。關鍵在於,與 GPT 使用 Transformer 解碼器(天然帶有單向的注意力掩碼)不同,BERT 採用的是編碼器部分,其自注意力機制允許每個位置的 token 都能同時關注到其左右兩側的所有 token(在後續的 MLM 任務中通過特定方式實現有效利用)。

2. 創新引擎:兩大預訓練任務#

為了讓 Transformer 編碼器能夠真正學習到深度的雙向上下文表示,BERT 引入了兩個巧妙的無監督預訓練任務:

  • 掩碼語言模型 (Masked Language Model, MLM) —— 學習 Token 級雙向上下文
    這可以說是 BERT 實現雙向性的 “點睛之筆”。受到完形填空(Cloze task)的啟發,MLM 任務的具體做法是:

    1. 在輸入句子序列中,隨機選擇 15% 的 token 進行 “遮蓋”(mask)操作
    2. 然後,模型的目標是僅根據被遮蓋 token 周圍未被遮蓋的上下文(即其左右兩側的 token),來預測這些被遮蓋 token 的原始身份

    為了防止模型在預訓練和微調階段之間因特殊標記 [MASK] 的存在與否而產生不匹配(mismatch),並促使模型學習到對所有輸入 token 的分佈式表示,BERT 對這 15% 被選中的 token 採用了進一步的處理策略:

    • **80%** 的概率,這些 token 被替換成特殊的 [MASK] 標記。
    • 10%的概率,這些 token 被替換成一個隨機的其他 token
    • 10%的概率,這些 token保持不變

    通過這種方式,MLM 迫使 BERT 在預測被遮蓋 token 時,必須同時融合其左右兩側的上下文信息,從而學習到真正的深度雙向語境表示。這與傳統的從左到右語言模型(只能看到左側上下文)或簡單拼接左右兩個單向模型的做法(如 ELMo)有著本質區別。

  • 下一句預測 (Next Sentence Prediction, NSP) —— 理解句子間關係
    除了 token 級別的理解,許多 NLP 任務(如問答、自然語言推斷)還需要模型理解句子與句子之間的邏輯關係。為此,BERT 引入了 NSP 任務:

    1. 預訓練時,模型的輸入是一對句子(句子 A 和句子 B)。
    2. 模型的任務是預測句子 B 是否是句子 A 在原始語料庫中的實際下一句
    3. 構造訓練樣本時,有 **50%的概率句子 B 確實是 A 的下一句(標記為 IsNext),另外50%** 的概率句子 B 是從語料庫中隨機抽取的一個句子(標記為 NotNext)。

    通過學習區分這兩種情況,BERT 能夠更好地理解句子之間的連貫性、主題相關性等關係,這對於許多依賴篇章理解的下游任務至關重要。

3. 精心設計的輸入表示#

為了支持上述預訓練任務並適應多種下游應用,BERT 的輸入表示也經過了精心設計:

  • 特殊標記 (Special Tokens):
    • [CLS]:每個輸入序列的開頭都會添加這個特殊標記。對於分類任務,[CLS]標記對應的最終隱藏層輸出被視作整個序列的聚合表示,用於進行分類預測。
    • [SEP]:當輸入為句子對時(例如 NSP 任務或問答任務中的問題 - 段落對),用 [SEP] 標記來分隔兩個句子。單一句子輸入時,也在末尾添加一個 [SEP]
  • 嵌入層 (Input Embeddings): 每個輸入 token 的最終表示由三部分嵌入向量相加構成:
    1. token 嵌入 (Token Embeddings): 學習到的 token 自身的向量表示。
    2. 片段嵌入 (Segment Embeddings): 用於區分句子對中的句子 A 和句子 B。例如,屬於句子 A 的所有 token 會加上一個學習到的句子 A 嵌入,屬於句子 B 的所有 token 則會加上一個學習到的句子 B 嵌入。
    3. 位置嵌入 (Position Embeddings): 由於 Transformer 本身不包含序列順序信息,BERT 通過學習到的位置嵌入來為每個 token 添加其在序列中的位置信息。

這種組合式的輸入表示使得 BERT 能夠同時處理單個句子和句子對,並有效地編碼詞彙、句子歸屬和位置信息。


BERT 範式:預訓練與微調的協奏曲#

BERT 的成功不僅僅在於其巧妙的架構和預訓練任務,更在於它極大地推廣並完善了 **“預訓練 - 微調”(Pre-training and Fine-tuning)** 這一強大的 NLP 範式:

  1. 大規模無監督預訓練 (Pre-training):
    首先,在一個巨大的無標記文本語料庫上(BERT 使用了 BooksCorpus 和英文維基百科,總計約 33 億詞),使用前述的 MLM 和 NSP 任務對 BERT 模型進行長時間的訓練。這個階段的目標是讓模型學習到通用的、豐富的語言知識和上下文理解能力,其參數(即 Transformer 編碼器的權重)在訓練結束後被保存下來。

  2. 針對性有監督微調 (Fine-tuning):
    當需要將 BERT 應用於特定的下游 NLP 任務時(如情感分類、問答、命名實體識別等),不再需要從頭設計複雜的模型架構。研究者們可以直接加載預訓練好的 BERT 模型參數作為初始權重,然後在 BERT 的頂層添加一個簡單的、任務相關的輸出層(例如,用於分類任務的全連接層和 softmax,用於序列標註任務的針對每個 token 的分類層,或用於問答的 span 預測層)。
    接下來,使用該下游任務的少量有標註數據,對整個模型(包括預訓練的 BERT 參數和新添加的輸出層參數)進行端到端的微調。由於預訓練階段模型已經學習到了強大的語言表示,微調過程通常非常高效,僅需少量數據和較短時間就能在特定任務上達到非常出色的性能。

BERT 的這種 “預訓練 - 微調” 範式,極大地簡化了下游任務的模型設計流程,使得研究者可以將更多精力投入到任務本身的理解和數據構建上,而不是繁瑣的模型工程。


BERT 的輝煌戰績與深遠影響#

BERT 的提出,如同一股強勁的旋風,迅速席捲了整個 NLP 領域,其卓越的性能和廣泛的適用性使其成為新的標杆:

  • 刷新各大 NLP 基準:在論文發布的當時,BERT 在11 項主流 NLP 任務上均取得了 SOTA(State-of-the-Art)結果。例如,在著名的 GLUE(General Language Understanding Evaluation)綜合基準上,BERTLARGE 模型的得分達到了 80.5%,相較於之前的最佳模型實現了 7.7% 的絕對提升。在 SQuAD v1.1(斯坦福問答數據集)上,其 F1 值達到了驚人的 93.2。這些成績充分證明了其深度雙向表示的強大威力。
  • 模型規模的重要性再獲驗證:論文中提出的兩種模型尺寸,BERTBASE(1.1 億參數)和 BERTLARGE(3.4 億參數),清晰地展示了模型規模與性能的正相關性。BERTLARGE 在所有任務上均顯著優於 BERTBASE,這進一步印證了在擁有足夠數據和有效預訓練方法的前提下,增加模型規模是提升性能的有效途徑 —— 即便是在數據量相對較小的下游任務上(只要預訓練充分)。
  • 奠定 “預訓練 - 微調” 範式的主導地位:BERT 的巨大成功,使得 “大規模無監督預訓練 + 下游任務微調” 成為了 NLP 領域後續研究和應用的主流範式。幾乎所有後續重要的語言模型(如 RoBERTa, XLNet, ALBERT, ELECTRA, T5, GPT 系列等)都在不同程度上借鑒或發展了這一思想。
  • 催生海量衍生模型與廣泛應用:BERT 不僅自身取得了巨大成功,更像一個強大的催化劑,激發了學術界和工業界對基於 Transformer 的預訓練模型的研究熱情。無數基於 BERT 的改進模型和針對特定領域、特定語言的 BERT 變體如雨後春筍般湧現,並在搜索引擎、智能客服、機器翻譯、文本生成等眾多實際應用中發揮了關鍵作用。

對 BERT 的反思:閃光點、局限性與持續演進#

儘管 BERT 取得了革命性的成就,但如同所有偉大的科學進展一樣,它並非完美無瑕,其設計本身也引發了後續研究者們的深入思考和持續改進:

  • 閃光點回顧:

    • MLM 的巧妙構思:無疑是 BERT 最核心的創新。它以一種簡潔而極其有效的方式,解決了如何在深度 Transformer 結構中進行雙向上下文預訓練這一核心難題,使得模型能夠 “看到” 並利用完整的語境。
    • “預訓練 - 微調” 範式的力量:BERT 雄辯地證明了,通過大規模無監督學習獲得的通用語言表示,可以極大地賦能各種下游任務,並顯著簡化任務特定的模型設計工作。
  • 一些值得探討的局限性(部分已在後續研究中得到改進):

    • 預訓練與微調階段 [MASK] 標記的不一致性:雖然論文中通過 80%-10%-10% 的策略來緩解,但 [MASK] 標記在微調階段通常不會出現,這可能導致預訓練和微調之間存在一定的偏差。
    • NSP 任務的真實有效性:後續的一些研究(如 RoBERTa)發現,移除 NSP 任務甚至可能對某些任務的性能有益,或者 NSP 任務本身可能並沒有如預期那樣教會模型細緻的句子間連貫性,而是更多地捕捉到了主題相關性等淺層信號。
    • MLM 中被遮蓋 token 的獨立預測:在 MLM 任務中,被遮蓋的多個 token 是獨立進行預測的,模型沒有顯式地考慮它們之間的依賴關係。
    • 高昂的計算成本:預訓練 BERT(尤其是 BERTLARGE)需要海量的計算資源和數據,這對於許多研究機構和小型團隊而言是一個不小的門檻。

這些思考和局限性,也為後續的研究指明了方向,催生了如 RoBERTa(更優化的預訓練策略)、ALBERT(參數共享)、ELECTRA(更高效的預訓練任務)、XLNet(排列語言模型引入自回歸思想)等一系列優秀的改進模型。


總結:BERT——NLP 發展史上的不朽豐碑#

BERT 的出現,是自然語言處理發展史上的一個分水嶺。它通過引入基於 Transformer 的深度雙向編碼器,以及創新的掩碼語言模型(MLM)和下一句預測(NSP)預訓練任務,首次實現了真正意義上的深度雙向語言表示學習,並憑藉簡潔而強大的 “預訓練 - 微調” 範式,一舉刷新了眾多 NLP 任務的性能基準,深刻地改變了該領域的研究和應用生態。

BERT 不僅僅是一個模型,它是一種思想,一種方法論。它證明了通過大規模無監督數據學習通用語言表示的可行性和巨大潛力,為後續層出不窮的預訓練語言模型(PLMs)奠定了堅實的基礎。從搜索引擎的語義理解,到智能助手的對話交互,再到機器翻譯的質量飛躍,BERT 及其思想的深遠影響,已經滲透到我們數字生活的方方面面。

儘管技術仍在飛速發展,新的模型架構和預訓練方法不斷湧現,但 BERT 作為開啟現代 NLP 新篇章的奠基者,其核心思想和歷史地位將永遠銘刻在人工智能的發展史冊上。對於每一位 NLP 從業者和愛好者而言,深入理解 BERT,都是理解當前技術浪潮、洞悉未來發展趨勢不可或缺的一環。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。