從0構(gòu)建大模型知識體系(5):大模型BERT

0 評論 1527 瀏覽 6 收藏 27 分鐘

在自然語言處理(NLP)領(lǐng)域,BERT(Bidirectional Encoder Representations from Transformers)是一個具有里程碑意義的大模型,它憑借強大的預訓練能力和廣泛的應用價值,深刻改變了語言理解的范式。本文將從BERT的起源、架構(gòu)、預訓練方法以及實際應用等方面展開,詳細探討B(tài)ERT如何通過“預訓練+微調(diào)”的模式實現(xiàn)對多種NLP任務的強大適配能力,以及它在互聯(lián)網(wǎng)行業(yè)中的廣泛應用,例如美團如何利用BERT提升用戶評論情感分析、搜索詞意圖識別和搜索詞改寫等業(yè)務的準確性和效率。

按照慣例,結(jié)論先行

這篇文章要討論啥?

討論由 Transformer 編碼器部分發(fā)展而來的大模型 BERT 。這是一個里程碑式的大模型,它憑借深遠的技術(shù)影響力早已成為眾多互聯(lián)網(wǎng)應用(如搜索、推薦)的核心,因此學習 BERT 有助于我們洞悉當前大模型強大能力的技術(shù)奠基與實際價值。

文章討論的核心問題和結(jié)論是啥?

① BERT 是什么,它與 Transformer 有什么關(guān)系?

BERT 是一個基于 Transformer 的編碼器部分發(fā)展而來的模型,旨在通過預訓練成為一個“通用”的語言理解模型。BERT 與 GPT(基于 Transformer 解碼器發(fā)展而來)并列為 Transformer 架構(gòu)的兩個最負盛名的分支。

② BERT 如何實現(xiàn)其“通用性”并解決多種自然語言處理任務?

BERT 的“通用性”是通過預訓練實現(xiàn)的。之后進行簡單的微調(diào)就能解決多種 NLP 任務。 這種“預訓練 + 微調(diào)”的范式是 BERT 成功的關(guān)鍵。

③ BERT 是如何預訓練的?

通過“完形填空”和“判斷下一句”兩個無監(jiān)督的預訓練任務。完形填空指在輸入句子中隨機遮蓋一部分詞再讓模型預測這些被遮蓋的詞是什么。這迫使模型理解上下文信息來推斷詞義。判斷下一句是指給模型輸入兩個句子 A 和 B,讓模型判斷句子 B 是否是句子 A 在原文中的下一句,以此讓模型學習句子間的關(guān)系和連貫性。

④ BERT 的實際應用價值和影響如何?

學術(shù)上 BERT 的引用量為13萬,遠高于GPT 的1.3萬。行業(yè)應用上 BERT “一次訓練、多次復用”的特性非常契合互聯(lián)網(wǎng)行業(yè)快速迭代的需求,已廣泛應用于各互聯(lián)網(wǎng)業(yè)務中。美團在其業(yè)務中應用 BERT 提升了用戶評論情感分析的準確性、搜索詞意圖識別準確率以及搜索詞改寫準確率,并估算能帶來顯著的年營收增長。

“BERT 飽覽了世間所有情話,只為在你每一次輕喚時都能恰如其分地溫柔?!?/strong>

——題記

在上一篇文章《從0構(gòu)建大模型知識體系(4):大模型的爸爸Transformer》中我們聊到,Transformer 以注意力機制為核心搭建了編碼器-解碼器(Encoder-Decoder)架構(gòu),編碼器負責將輸入轉(zhuǎn)化成機器可理解的代碼,解碼器負責將代碼轉(zhuǎn)化成人類可理解的輸出。這種完全以注意力機制構(gòu)建起的編碼器-解碼器架構(gòu)徹底解決了 RNN 健忘和訓練慢的老大難問題,且在多項語言翻譯任務上取得了最佳成績。

在此之后,大量基于 Transformer 的模型被提出,其中最負盛名的兩個模型便是 BERT 和 GPT。前者基于 Transformer 的編碼器發(fā)展而來,后者則基于 Transformer 的解碼器部分發(fā)展而來。本文將詳細討論 BERT。

誒~我好像聽到屏幕前有人說“GPT 我知道,但從來沒聽說過 BERT ?沒覺得它很有名???”確實,BERT 并不能像 GPT 那樣可以做個非技術(shù)人群也能輕松使用的聊天機器人,所以在技術(shù)圈外名氣沒有 GPT 大。但在技術(shù)圈內(nèi) BERT 的名氣可是 GPT 的 10 倍。截止到2025年5月,BERT 的原始論文引用量為13萬,十倍于 GPT 的1.3萬

BERT 在技術(shù)圈內(nèi)之所以能這么火熱的一個重要原因是它只需要經(jīng)過簡單的調(diào)整便可處理一堆自然語言任務。這一特性使得研究者們紛紛基于 BERT 進行優(yōu)化改造,在解決實際問題的同時,也為學術(shù)成果的產(chǎn)出提供了便利。換句話說,BERT 真正實現(xiàn)了 NLP 學者們長期以來的理想 —— 打造一個 “通用” 的語言模型。

從通用語言模型說起

BERT 出現(xiàn)前,解決一類任務需要專門設(shè)計一種模型。比如在之前的文章中我們用 RNN 解決文本生成類任務,用 Transformer 解決翻譯類任務。可一旦遇到新任務還得重新設(shè)計一個模型,這未免也太麻煩了。

BERT 出現(xiàn)后,解決一類任務只需要在 BERT 的基礎(chǔ)上簡單改改即可。有了 BERT 之后,我們只需要在 BERT 的基礎(chǔ)上外裝一些“配件”就能解決問題。比如一個馬達,給它外裝四個輪子可以當車用,外裝個攪拌棒可以當攪拌機用,外裝個圓盤刀片可以當切割機用。類似地,通過外裝一些簡單的結(jié)構(gòu),BERT 就能同時勝任閱讀理解、文本分類、語義匹配等多種任務,所以被稱為 “通用”。

BERT 能做到“通用”主要得益于基于 Transformer 編碼器的設(shè)計。回顧一下,Transformer 是一個采用編碼器-解碼器架構(gòu)的翻譯模型,其中編碼器負責理解原文的語義,解碼器負責將語義翻譯成目標語言。所以 Transformer 的編碼器本就是一個強大的語義理解器,要是把它單獨拿出來再增強一下,那這語義理解能力豈不是能飛天?誒,沒錯,BERT 就是這么做的,而且成功了。所以下面我們來看下 BERT 的具體設(shè)計

這,就是 BERT

BERT的基本組成單元:Transformer 的編碼器塊(Transformer Encoder Block)。在上一篇文章《從0構(gòu)建大模型知識體系(4):大模型的爸爸Transformer》中我們的 Transformer 架構(gòu)圖是這樣的

其中為便于理解,編碼器部分只畫出了注意力層,而實際上真正的 Transformer 編碼器中每個注意力層還會搭配一個前向反饋和歸一化層,也就是下圖這樣

這個層的作用簡單來說是對注意力層輸出的整合,對非技術(shù)同學來說無需過多關(guān)注。一個【注意力層】外加一個【前向反饋&歸一化層】就被稱作一個Transformer 編碼器塊(Transformer Encoder Block)。

BERT 就是12個 Transformer 編碼器塊的疊加。Transformer 的編碼器一共有6個這樣的模塊,而 BERT 則有12個,二者的核心差別就在模塊數(shù)量上,也就是下面這樣

然后,BERT 就搭建好了……沒錯,真就這么簡單。但其實在原論文中除了用12個這樣的模塊搭建BERT外,作者還測試了用24個來搭會得到什么效果,最后結(jié)論是越大越好。

到此,我們已經(jīng)完成了 BERT 的搭建。但完成搭建僅僅是開始,更關(guān)鍵的是要讓它具備理解自然語言的能力,成為一個通用語言模型。而讓 BERT 具備這種能力所進行的訓練任務有兩個:“完形填空”和“判斷下一句”。

BERT 的兩大訓練任務:“完形填空”和“判斷下一句”

完形填空:從一句話中隨機遮住一個詞,讓模型預測被遮住的詞是什么。舉個例子:

  • 原句:這老板真水
  • 遮住“老板”:這____真水
  • 任務:讓 BERT 預測被被遮住的詞是什么,我們期望模型能輸出“老板”這個詞

判斷下一句:給模型兩個句子A和B,讓它判斷句子B是否是原文中句子A的下一句。舉倆例子:

例子一:

  • 句子A:今天天氣真好
  • 句子B:我們?nèi)ス珗@玩吧
  • 任務:讓 BERT 判斷句子B會不會是原文中句子A的下一句話,我們期望 BERT 能輸出“是”

例子二:

  • 句子A:今天天氣真好
  • 句子B:這老板真水
  • 任務:讓 BERT 判斷句子B會不會是原文中句子A的下一句話,我們期望 BERT 能輸出“否”

如此一來,我們讓 BERT 在“完形填空”中學會通過上下文信息來推斷詞義,以及在“判斷下一句”中學習句子間的關(guān)系和連貫性。這樣 BERT 就能逐漸學會深刻理解詞語含義和句子之間的邏輯關(guān)系。

模型結(jié)構(gòu)有了,訓練方式也清楚了,接下來就是準備訓練數(shù)據(jù)并開始實際訓練了。

訓練前:準備訓練數(shù)據(jù)

文檔級語料:BooksCorpus 與英文維基百科。BERT 的訓練數(shù)據(jù)來源于 BooksCorpus(收錄了約7000本書,共計約8億英文單詞)和英文維基百科(約25億英文單詞)。需要特別注意的是這兩個數(shù)據(jù)集中的語料都是文檔級的,好處在于文檔級語料保留了原文結(jié)構(gòu)與上下文,利于提取長連續(xù)文本序列,從而能讓模型學習復雜語義。

無需人工標注便可構(gòu)造訓練數(shù)據(jù)。顯然,對于“完形填空”任務來說我們只要隨機從已有的句子中遮擋住幾個單詞就行,這事兒完全可以自動化快速搞定。對于“判斷下一句”任務來說哪些句子在原文中是挨在一起的我們也知道,所以也無需人工標注。因此我們可以快速構(gòu)造如下的訓練數(shù)據(jù):

完形填空訓練數(shù)據(jù):

判斷下一句訓練數(shù)據(jù)

將二者結(jié)合一下得到最終的訓練數(shù)據(jù)

訓練中:這,就是預訓練

以第一條數(shù)據(jù):(今天____真好,我們出去玩吧),(天氣,是)為例:

所以整個訓練過程可以這樣表示:

單論訓練過程,預訓練和之前我們介紹的模型訓練并沒有什么不同。二者都是給定輸入數(shù)據(jù),讓模型輸出,計算模型輸出的誤差然后用來反向傳播更新參數(shù)。那二者的核心差別在哪呢?

預訓練和正常訓練的核心差別在于訓練目標是否直接指向某個具體任務。比如對于“判斷用戶評論的情感傾向是正向還是負向”這個具體任務而言,目前我們所做的“完形填空”和“判斷下一句”訓練并不能讓模型直接完成這個任務,但我們知道這倆任務是在幫模型先建立起基本的語義理解能力,對最終完成這個任務肯定是有幫助的,因此這里的訓練被稱作“預訓練”。

訓練后:微調(diào)即可完成眾多 NLP 任務

微調(diào) = 添加配件 + 少量數(shù)據(jù)訓練。對BERT進行微調(diào)一般包含兩項具體的工作:

  1. 根據(jù)目標任務為 BERT 添加合適的輸入轉(zhuǎn)換器、輸出轉(zhuǎn)換器,或兩者同時添加。
  2. 使用相對少量的數(shù)據(jù)調(diào)整模型的參數(shù)(“相對少” 指此時所需的數(shù)據(jù)規(guī)模遠小于預訓練 BERT 本身所需的數(shù)據(jù)規(guī)模)

舉個例子,讓 BERT 來判斷用戶評論的情感傾向。也就是給定一條用戶評論,讓 BERT 來判斷到底是在夸還是在罵。由于 BERT 本身就能讀取句子,所以在輸入方面不需要做修改,但在輸出上需要加一層控制保證 BERT 的輸出是“正向”、“負向”、“中立”三者之一,也就是下圖這樣:

然后準備下圖所示的訓練數(shù)據(jù):

最后再整體訓練一下就可以了

所以你看,BERT 誕生之初并不是為了解決某個具體的問題,而是通過大量語料來“通用地”學習如何理解人類語言。當我們要用它來解決具體問題時,只需進行簡單的修改和少量訓練就行,這個過程就是微調(diào)。

在 BERT 原論文中,作者通過上述方式微調(diào) BERT 解決了4大類,共計11個具體的 NLP 任務,這4個類別分別是:句子對分類任務、單句子分類任務、問答任務、單句子標注任務,分別舉例說明一下:

  • 句子對分類任務:比如給定一對句子,判斷后一句表達的觀點和前一句是矛盾、支持還是中立
  • 單句子分類任務:比如我們剛舉的例子,給定一句話,判斷這句話的感情是正向、負向還是中立
  • 問答任務:比如給定一個問題以及一篇包含此問題答案的文章,讓模型回答這篇文章具體是從哪到哪回答了這個問題
  • 單句子標注任務:識別文本中具有特定意義的實體,主要包括人名、地名、時間等。比如給定“張三今天上午吃了蘋果”,則需要能夠標注出【張三:人名】、【今天上午:時間】、【吃了:動作】、【蘋果:名詞】

所以總結(jié)一下,BERT 憑借預訓練 + 微調(diào)的技術(shù)范式展現(xiàn)出對眾多 NLP 任務的強大適配能力。

這種 “一次訓練、多次復用”的特性就特別滿足互聯(lián)網(wǎng)行業(yè)“快速迭代”的模式。所以雖然技術(shù)圈外的用戶沒怎么聽說過和使用過 BERT ,但 BERT 早已在各種互聯(lián)網(wǎng) app 中遍地開花,比如美團。

BERT 在美團業(yè)務中的應用

注:內(nèi)容參考自美團BERT的探索和實踐

應用1:通過 BERT 提升用戶評論情感分析準確性,讓商家評價標簽為用戶提供更精準的消費指引。所謂細粒度情感分析是指機器能夠識別一段文本中不同對象的情感傾向。比如能夠識別出“這家店味道很棒,但是服務不太好”中“味道”是正面的,“服務”是負面的。美團積累了海量的用戶評論,引入 BERT 后對這些評論的細粒度情感傾向分析準確率達到了 72.04%(引入 BERT 之前是多少沒找到公開數(shù)據(jù),但行業(yè)經(jīng)驗是65%-70%)。

落實到產(chǎn)品設(shè)計中,細粒度情感分析讓美團能夠?qū)ι碳业亩鄺l評論進行精準的情感聚合,從而可以直接呈現(xiàn)下圖中【裝修精美 999+】 這樣的評價標簽及相關(guān)評價數(shù)量,甚至還能高亮是哪部分文本體現(xiàn)了這種情感傾向,從而讓用戶高效的從評論中獲取商家信息。

應用2:通過 BERT 提升搜索詞意圖識別準確率,讓用戶更快搜到想搜的東西。所謂搜索詞意圖識別是指判斷用戶輸入的搜索詞屬于什么需求類型。比如用戶搜“霸王別姬”和“霸王茶姬”雖然只有一字之差,但前者是電影意圖,那么應該向用戶展示電影列表,后者是商家意圖,則應該向用戶展示商家列表。顯然,意圖識別不準確會導致展示內(nèi)容完全不符合用戶預期,輕則讓用戶搜索體驗不暢,重則讓用戶失去耐心轉(zhuǎn)而用別的 app 下單。美團引入 BERT 后搜索詞意圖識別準確率達到了 93.24%(引入BERT之前是多少沒找到公開數(shù)據(jù),但行業(yè)經(jīng)驗是85%-90%)。

在業(yè)務收益上,BERT 上線預計能讓年營收增加5個億。據(jù)美團技術(shù)團隊2019年發(fā)布的數(shù)據(jù),美團美食頻道在使用 BERT 后搜索QV-CTR從約57.60%提升至約58.80%。我們來計算下收益,按照“用戶觸發(fā)搜索→用戶點擊搜索結(jié)果→用戶下單”的業(yè)務鏈路來算,假設(shè)當時的日均搜索QV是500萬,并且點擊某個搜索結(jié)果后下單的概率是10%,再考慮到美團美食頻道以正餐為主,所以假設(shè)一單的營收是100元,那么:

  • BERT上線前的營收 = 500萬 x 57.60% x 10% x 100 = 2800萬
  • BERT上線后的營收 = 500萬 x 58.80% x 10% x 100 = 2940萬

WoW~這樣一天的營收就多了140萬,一年就多5.11億,搜索技術(shù)團隊的年終獎應該可以拿滿了哈哈哈

應用3:提升搜索詞改寫準確率,讓搜索結(jié)果更相關(guān)。我們平時在搜索框輸入一個搜索詞后,系統(tǒng)并不會原封不動的用這個詞進行搜索,而是有可能對它做改寫。比如原始搜索詞是“附近的kfc”,系統(tǒng)會自動改寫為 “附近的肯德基”后再進行搜索,因為肯德基真正的商店名稱是“肯德基”三個字而不是“kfc”。這種在不改變用戶意圖的情況下,對原始搜索詞進行優(yōu)化調(diào)整,使其能夠匹配到更相關(guān)信息的環(huán)節(jié)就叫搜索詞改寫。顯然,在美團的業(yè)務體量下需要改寫的搜索詞數(shù)量非常多,不可能人工核驗所有的改寫是否準確,因此美團引入 BERT 來判斷原搜索詞和改寫后的搜索詞是否語義一致。實驗證明,基于 BERT 的改寫方案在準確率和召回率都超過原先的 XGBoost(一個于2015年提出的分類模型) ,但具體是多少沒說。

復盤一下,我們學到了什么

BERT 是個通用的語言模型。所謂“通用”是指它并不是為了解決某個具體問題而生,而是具備理解自然語言的底層能力,當我們需要用它解決某個具體問題時只要進行簡單修改就行。

BERT 是Transformer Encoder Block的疊加。將12個 Transformer Encoder Block 疊加就得到了 BERT。

BERT 通過“完形填空”和“判斷下一句”兩個任務來學會理解自然語言。所謂“完形填空”是指挖掉句子中的某個詞后給 BERT 看,讓它預測這個被挖掉的詞是什么。“判斷下一句”是指給 BERT 兩個句子A和B,讓他判斷B在原文中是不是A的下一句話。

BERT 的訓練數(shù)據(jù)無需人工標注。無論是完形填空還是判斷下一句,其訓練數(shù)據(jù)都可以通過自動化的方式高效構(gòu)建,這使得 BERT 可以在大規(guī)模的語料上進行充分訓練,不會讓數(shù)據(jù)標注成本成為阻礙。

預訓練是指訓練目的不直接指向目標任務的訓練。比如我們用“完形填空”和“判斷下一句”兩個任務讓 BERT 先學會理解自然語言,之后會再訓練它去完成別的任務。這倆訓練就是預訓練。

微調(diào) BERT 即可完成眾多具體任務。微調(diào) BERT 具體指給它外加一些配件,讓它能夠接受目標任務的輸入并給出符合預期的輸出,再用少量的相關(guān)數(shù)據(jù)訓練整個模型即可讓 BERT 勝任目標任務。

BERT “一次訓練,多次復用”的特性特別滿足互聯(lián)網(wǎng)行業(yè)快速迭代的發(fā)展模式。比如美團就用 BERT 來提升用戶評論情感分析的準確性、搜索詞意圖識別準確率以及搜索詞改寫準確率。

歡迎來到2018

BERT 的提出源自2018年谷歌發(fā)表的論文BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

到此,恭喜你對大模型知識的理解來到了2018年,此時距離DeepSeek-R1發(fā)布還有7年。

AI Heroes

Jacob Devlin, BERT的第一作者

因BERT而聞名的杰出科學家。BERT 徹底改變了NLP領(lǐng)域,使得機器理解和處理人類語言的方式取得了重大進展,截止2025年5月BERT的引用量已達13萬,據(jù)我所知在NLP領(lǐng)域應該僅次于 Transformer 的18萬。

在頂尖科技研究機構(gòu)的職業(yè)生涯。Jacob是谷歌的高級研究科學家,其許多包括 BERT 在內(nèi)的有影響力的工作都在此完成。他曾在微軟研究院擔任首席研究科學家,期間領(lǐng)導了微軟翻譯向神經(jīng)網(wǎng)絡的過渡,并為移動端神經(jīng)網(wǎng)絡翻譯開發(fā)了先進的設(shè)備端模型。2023 年的報道曾指出他短暫加入 OpenAI 后又重返谷歌。

致力于開發(fā)快速、強大且可擴展的深度學習模型以用于語言理解。他目前的工作涵蓋信息檢索、問答和機器翻譯等領(lǐng)域,持續(xù)推動著自然語言處理及其應用的邊界。

“他在語言的荒原上辟筑絲路,一次夯土成基,便可讓千萬商隊沿著預訓練的磚石走向不同的城邦?!?/strong>

——后記

作者:夜雨思晗,專注AI的產(chǎn)品經(jīng)理。公眾號:上線前夜的月光

往期文章:

從0構(gòu)建大模型知識體系(4):大模型的爸爸Transformer

從0構(gòu)建大模型知識體系(3):大模型的祖宗RNN

從 0 構(gòu)建大模型知識體系(2):給模型開眼的CNN

從 0 構(gòu)建大模型知識體系(1):啥是模型?

本文由 @夜雨思晗 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖由作者提供

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!