BERT是自然語言處理、深度學習、Transformer、預訓練語言模型和大語言模型發(fā)展史中非常重要的一個術(shù)語,全稱是 Bidirectional Encoder Representations from Transformers,通常可譯為“基于 Transformer 的雙向編碼器表示”。它用來描述一種通過大規(guī)模文本預訓練得到的語言理解模型。換句話說,BERT 是在回答:模型怎樣通過上下文理解一個詞、一句話或一段文本的含義。
如果說傳統(tǒng)詞向量常把一個詞表示成固定向量,那么 BERT 更進一步:它會根據(jù)上下文動態(tài)理解詞義。例如,“蘋果”在“我吃了一個蘋果”和“蘋果發(fā)布了新手機”中含義不同,BERT 可以根據(jù)前后文生成不同的表示。
因此,BERT 常用于文本分類、情感分析、命名實體識別、問答系統(tǒng)、句子匹配、文本檢索、語義理解和特征表示等任務(wù),是理解現(xiàn)代 NLP 預訓練模型的重要基礎(chǔ)概念之一。
一、基本概念:什么是 BERT
BERT 是一種基于 Transformer Encoder 的預訓練語言模型。
它的核心思想是:先在大規(guī)模文本上學習語言規(guī)律,再遷移到具體 NLP 任務(wù)中使用。
例如,BERT 可以先從大量文本中學習:
? 詞語之間的上下文關(guān)系
? 句子內(nèi)部的語法結(jié)構(gòu)
? 句子之間的語義關(guān)系
? 不同詞在不同語境中的含義
然后再用于具體任務(wù),例如:
? 文本分類:判斷評論是正面還是負面
? 序列標注:識別人名、地名、機構(gòu)名
? 問答任務(wù):從文章中找出問題答案
? 句子匹配:判斷兩句話是否語義相近
從通俗角度看:BERT 像一個先讀過大量文本、學會語言理解能力的“通用閱讀模型”。當它被用于具體任務(wù)時,只需要在任務(wù)數(shù)據(jù)上進一步訓練,就能適應(yīng)不同場景。
可以簡單概括為:
BERT = Transformer Encoder + 雙向上下文理解 + 大規(guī)模預訓練 + 下游任務(wù)微調(diào)
二、為什么需要 BERT
BERT 之所以重要,是因為它解決了傳統(tǒng) NLP 方法中的幾個關(guān)鍵問題。
1、傳統(tǒng)詞向量難以表達上下文差異
早期詞向量通常給每個詞一個固定向量。
例如,“蘋果”可能只有一個固定表示。
但在不同句子中,“蘋果”的含義可能不同:
蘋果公司發(fā)布了新手機。第一個“蘋果”是水果。
第二個“蘋果”是公司。
固定詞向量很難區(qū)分這種語境差異。BERT 則會根據(jù)整句話生成詞的上下文表示。
從通俗角度看:傳統(tǒng)詞向量更像查詞典。BERT 更像結(jié)合上下文讀懂句子。
2、傳統(tǒng)模型依賴大量任務(wù)標注數(shù)據(jù)
在 BERT 之前,很多 NLP 任務(wù)都需要為每個任務(wù)單獨訓練模型。
如果任務(wù)數(shù)據(jù)少,模型效果往往受限。
BERT 采用“預訓練—微調(diào)”范式:
大規(guī)模無標注文本預訓練 → 少量任務(wù)標注數(shù)據(jù)微調(diào)
這使模型能夠先學習通用語言知識,再適配具體任務(wù)。
3、BERT 提升了語言理解任務(wù)效果
BERT 特別適合理解類任務(wù)。
例如:
? 判斷文本類別
? 判斷句子關(guān)系
? 識別實體邊界
? 從文章中抽取答案
? 判斷兩句話是否相似
從通俗角度看,BERT 的價值在于:讓模型不只是看詞,還能理解詞在上下文中的位置和含義。
三、BERT 的核心結(jié)構(gòu):Transformer Encoder
BERT 基于 Transformer Encoder。
Transformer Encoder 的核心能力是通過自注意力機制理解序列中各個 token 之間的關(guān)系。
![]()
圖 1:BERT 核心結(jié)構(gòu)及用途
1、輸入 token
一句話會先被切分成 token。
例如:
我喜歡機器學習可以被切分為若干 token:
[CLS] 我 喜歡 機器 學習 [SEP]其中:
? [CLS] 常用于表示整段文本
? [SEP] 用于分隔句子或標記輸入結(jié)束
2、Embedding 輸入表示
BERT 的輸入表示通常由三部分相加得到:
其中:
? h???? 表示第 i 個 token 的初始輸入表示
? e? 表示 Token Embedding
? p? 表示 Position Embedding
? s? 表示 Segment Embedding
這三部分分別告訴模型:
? 當前 token 是什么
? 當前 token 在句子中的位置
? 當前 token 屬于哪一句話
3、Transformer Encoder 層
BERT 由多層 Transformer Encoder 堆疊而成。
每一層都會更新 token 表示,使每個 token 能融合上下文信息。
可以簡化表示為:
其中:
? H???1? 表示上一層的 token 表示
? H??? 表示第 l 層輸出表示
從通俗角度看:BERT 會一層一層閱讀句子,每一層都讓詞語更充分地理解周圍上下文。
四、雙向編碼:BERT 的關(guān)鍵思想
BERT 名字中的 Bidirectional 表示“雙向”。也就是說,BERT 在理解某個詞時,可以同時看它左邊和右邊的上下文。
例如:
河邊有一排柳樹,旁邊是銀行。理解“銀行”時,只看前面的詞可能不夠,還需要結(jié)合后面的詞。
BERT 的雙向理解可以概括為:
左側(cè)上下文 + 當前 token + 右側(cè)上下文 → 當前 token 的語義表示
這與傳統(tǒng)從左到右生成文本的模型不同。
1、BERT 適合理解任務(wù)
因為 BERT 可以同時看完整輸入,所以它非常適合文本理解。
例如:
? 文本分類
? 情感分析
? 句子匹配
? 閱讀理解
? 命名實體識別
2、BERT 不適合直接逐詞生成
BERT 不是典型的自回歸生成模型。它不像 GPT 那樣從左到右逐 token 生成文本。
因此,BERT 通常不直接用于長文本生成,而更常用于理解、編碼和判別任務(wù)。
從通俗角度看:
? BERT 更像“閱讀理解模型”
? GPT 更像“文本續(xù)寫模型”
五、BERT 的預訓練任務(wù)
BERT 通過預訓練獲得通用語言理解能力。
經(jīng)典 BERT 主要使用兩個預訓練任務(wù):MLM 和 NSP。
![]()
圖 2:BERT 預訓練任務(wù)
1、MLM:掩碼語言模型
MLM 是 Masked Language Model,通常譯為“掩碼語言模型”。
它的做法是:隨機遮住句子中的一些 token,讓模型根據(jù)上下文預測被遮住的 token。
例如:
我喜歡 [MASK] 學習。模型需要預測:
機器可以簡化表示為:
其中:
? x? 表示被遮住的 token
? x_{\setminus i} 表示除 x? 之外的上下文 token
? p 表示模型預測概率
從通俗角度看:MLM 像做完形填空。模型必須結(jié)合前后文,才能猜出被遮住的詞。
2、NSP:下一句預測
NSP 是 Next Sentence Prediction,通常譯為“下一句預測”。
它讓模型判斷兩句話是否在原文中相鄰。
例如:
句子 B:借了一本機器學習書。模型需要判斷 B 是否是 A 的下一句。
這個任務(wù)旨在幫助模型理解句子之間的關(guān)系。
需要注意:后來的許多模型對 NSP 做了改進或取消,但在經(jīng)典 BERT 中,NSP 是重要預訓練任務(wù)之一。
3、預訓練的意義
通過 MLM 和 NSP,BERT 學會了:
? 根據(jù)上下文預測詞語
? 理解詞語語義
? 建立句子之間的關(guān)系
? 形成可遷移的語言表示
從通俗角度看:預訓練讓 BERT 先獲得“語言基礎(chǔ)能力”,再用于具體任務(wù)。
六、BERT 如何用于下游任務(wù)
BERT 的典型使用方式是微調(diào)。
基本流程是:
預訓練 BERT → 添加任務(wù)層 → 在任務(wù)數(shù)據(jù)上微調(diào)
1、文本分類
對于文本分類任務(wù),通常使用 [CLS] 對應(yīng)的輸出向量表示整段文本。
![]()
圖 3:BERT 用于文本分類任務(wù)示意圖
例如:
? 輸入:這部電影很好看。
? 輸出:正面情感
可以簡化為:
其中:
? h_[CLS] 表示 [CLS] token 的最終隱藏表示
? W 和 b 表示分類層參數(shù)
? ? 表示預測類別分布
2、序列標注
對于命名實體識別等任務(wù),需要對每個 token 輸出一個標簽。
例如:
B-PER O B-LOC OBERT 會為每個 token 生成上下文表示,再接分類層預測標簽。
3、閱讀理解
對于抽取式問答,BERT 可以從文章中預測答案的開始位置和結(jié)束位置。
例如:
問題:誰提出了這個方法?
文章:該方法由李明提出……
答案:李明
可以簡化為:預測答案起點 + 預測答案終點。
4、句子匹配
BERT 可以輸入兩個句子,并判斷它們之間的關(guān)系。
例如:
? 是否語義相似
? 是否前后連貫
? 是否一方蘊含另一方
? 是否問答匹配
從通俗角度看:BERT 像一個通用文本理解底座,上面可以接不同任務(wù)頭,完成不同 NLP 任務(wù)。
七、BERT、Transformer 與 GPT 的關(guān)系
BERT 經(jīng)常與 Transformer 和 GPT 一起出現(xiàn)。
1、BERT 與 Transformer
Transformer 是一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
BERT 使用的是 Transformer 的 Encoder 部分。
可以概括為:
? Transformer 是基礎(chǔ)架構(gòu)
? BERT 是基于 Transformer Encoder 的預訓練模型
2、BERT 與 GPT
BERT 和 GPT 都基于 Transformer,但使用方式不同。
BERT 主要使用 Encoder,適合理解任務(wù)。
GPT 主要使用 Decoder,適合生成任務(wù)。
可以概括為:
? BERT:雙向編碼,適合理解
? GPT:單向生成,適合續(xù)寫
例如:
? BERT 更適合文本分類、閱讀理解、實體識別
? GPT 更適合對話、寫作、代碼生成、長文本生成
3、BERT 與現(xiàn)代大語言模型
現(xiàn)代大語言模型通常更偏向生成式架構(gòu)。
但 BERT 仍然非常重要,因為它奠定了“預訓練—微調(diào)”的范式,并且在許多理解類任務(wù)、文本編碼和檢索任務(wù)中仍有價值。
從通俗角度看:BERT 是閱讀理解高手;GPT 是語言生成高手。
它們都來自 Transformer 思想,但訓練目標和使用方式不同。
八、BERT 的優(yōu)勢、局限與常見誤解
1、BERT 的主要優(yōu)勢
BERT 最大的優(yōu)勢是強大的上下文理解能力。
它能夠:
? 根據(jù)前后文理解詞義
? 生成上下文相關(guān)的 token 表示
? 適配多種 NLP 理解任務(wù)
? 利用預訓練知識減少任務(wù)數(shù)據(jù)需求
? 在文本分類、實體識別、問答等任務(wù)中表現(xiàn)穩(wěn)定
從通俗角度看:BERT 讓機器從“看詞”進步到“讀句子、看上下文”。
2、BERT 的主要局限
BERT 也有局限。
首先,它不是專門的生成模型。
它不擅長像 GPT 那樣逐 token 生成長文本。
其次,BERT 的輸入長度有限。
長文檔通常需要分段處理或使用專門長文本模型。
再次,BERT 的知識來自訓練數(shù)據(jù)。
如果信息過時或訓練數(shù)據(jù)不足,模型仍可能理解錯誤。
此外,BERT 的輸出表示并不等于真正理解世界。
它學習的是文本模式和上下文關(guān)系,不一定具備人類意義上的常識、因果理解和真實經(jīng)驗。
3、常見誤解
誤解一:BERT = 大語言模型聊天機器人
不對。BERT 通常不是聊天生成模型,而是文本理解和表示模型。
誤解二:BERT 只能做英文任務(wù)
不對。BERT 有多語言版本,也有許多中文預訓練版本。
誤解三:BERT 能直接生成高質(zhì)量長文章
不適合。BERT 的結(jié)構(gòu)和訓練目標更偏向理解,不是自回歸生成。
誤解四:BERT 已經(jīng)過時,沒有價值
不準確。雖然生成式大模型更受關(guān)注,但 BERT 類模型在分類、檢索、編碼、序列標注等任務(wù)中仍然常用。
九、如何更好地使用 BERT
使用 BERT 時,需要根據(jù)任務(wù)選擇合適方式。
1、理解類任務(wù)優(yōu)先考慮 BERT
如果任務(wù)是:
? 文本分類
? 情感分析
? 命名實體識別
? 句子相似度
? 抽取式問答
? 文本編碼
BERT 或 BERT 類模型通常是合適選擇。
2、生成類任務(wù)不宜直接使用 BERT
如果任務(wù)是:
? 寫文章
? 長對話
? 續(xù)寫故事
? 生成代碼
? 開放式問答
通常更適合使用 GPT 類生成模型。
3、中文任務(wù)應(yīng)選擇中文或多語言模型
中文任務(wù)最好使用中文預訓練 BERT 或多語言模型。否則,分詞、詞表和語料差異可能影響效果。
4、小數(shù)據(jù)任務(wù)可先微調(diào)
如果任務(wù)標注數(shù)據(jù)較少,可以在預訓練 BERT 上微調(diào),而不是從零訓練模型。
5、長文本任務(wù)要注意長度限制
BERT 的標準輸入長度有限。
如果文本太長,可以考慮:
? 截斷
? 滑動窗口
? 分段編碼
? 長文本 Transformer
? 檢索增強
從實踐角度看,BERT 適合作為文本理解底座,但需要根據(jù)任務(wù)目標和數(shù)據(jù)特點合理使用。
十、Python 示例
下面給出幾個簡化示例,幫助理解 BERT 的基本使用方式。
示例 1:BERT 輸入結(jié)構(gòu)
其中:
? [CLS] 通常用于整句表示
? [SEP] 用于分隔或結(jié)束輸入
示例 2:掩碼語言模型任務(wù)
BERT 會根據(jù)上下文判斷哪個詞更適合填入 [MASK]。在這個例子中,“機器”更符合上下文。
示例 3:文本分類樣本
文本分類任務(wù)中,BERT 會讀取整段文本,并輸出類別。
示例 4:命名實體識別樣本
BERT 可以為每個 token 生成上下文表示,再預測實體類型。
示例 5:統(tǒng)計 BERT 輸出形狀的直觀理解
這個形狀可以理解為:
? batch_size 表示一次處理多少條文本
? seq_len 表示每條文本有多少 token
? hidden_size 表示每個 token 的向量維度
BERT 輸出的是每個 token 的上下文表示。
小結(jié)
BERT 是基于 Transformer Encoder 的雙向預訓練語言模型,核心優(yōu)勢是根據(jù)上下文理解文本含義。它通過掩碼語言模型等任務(wù)進行預訓練,再通過微調(diào)用于文本分類、實體識別、閱讀理解和句子匹配等任務(wù)。對初學者而言,可以把 BERT 理解為:一個擅長閱讀理解和文本表示的預訓練語言模型。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.