前言
自然語言處理是人工智能的一個分支。在自然語言處理領域,有兩個相當著名的大語言模型——BERT和GPT。兩個模型是同一年提出的,那一年BERT以不可抵擋之勢,讓整個人工智能屆為之震動。據說當年BERT的影響力是GPT的十倍以上。而現在,由GPT-3.5模型產生的chatGPT,則以一己之力,讓整個世界重新認識了人工智能。現在,用婦孺皆知來形容chatGPT一點也不為過。是什么讓GPT在后來完成復仇,碾壓BERT模型?這篇文章帶你了解這兩個模型的“恩恩怨怨”。
自然語言處理(背景)
自然語言處理(Natural Language Processing),簡稱NLP,是人工智能領域的一個重要方向。NLP主要處理四類任務,分別是序列標注、文本分類任務、句子關系判斷和生成式任務。
序列標注是NLP中最基礎的任務,應用十分廣泛,如詞性標注、命名實體識別、語義角色標注等實質上都屬于序列標注的范疇。
文本分類任務是NLP中的經典問題,包括主題分析和情感分析等。
句子關系判斷任務的輸入是兩個句子,輸出是句子間的關系,常用的判別有語義相似度、語義關系推理(蘊含/中立/矛盾)、問答對匹配、搜索相關性排序等。
生成式任務包括對話生成、摘要生成、機器翻譯等。
其中,生成式任務就是我們的chatGPT最擅長的任務。我們問它問題,它可以自動生成回答。
自然語言處理的一些早期處理方法(鋪墊)
在計算機領域,我們一般不喜歡文字,更喜歡數字。所以怎么把文字轉換成計算機可以理解的數字,就是一個很重要的問題。
獨熱編碼
比較早的轉換方式是獨熱編碼(one-hot encoding)。獨熱編碼的處理方式是把N個要處理的字(或者單詞)轉換為一個N維向量,第 i i i個字轉換后的向量為 ( 0 , 0 , … , 0 , 1 , 0 , … , 0 , 0 ) (0,0,\dots,0,1,0,\dots,0,0) (0,0,…,0,1,0,…,0,0),其中第 i i i維為1,其它維都是0。這樣的弊端也非常明顯,那就是當處理的字數比較多的時候,維數會非常高。比如中國有約10萬個漢字,為了表示這些漢字,需要10萬的向量。這顯然是我們無法接受的。
word2vec模型
2013年,google提出了word2vec模型。這個模型的提出,使得NLP進入神經網絡時代。顧名思義,這個模型就是專門把單詞(或者字)轉換成向量的模型。通過這個模型,給每個單詞賦予了一個低維向量。且意思相近的單詞之間,其向量的距離也會越近。向量的每一維也不再是0或1,而是一個0-1之間的實數。這種把高維的文字表示成低維的向量的方式,叫做詞嵌入(word embedding)。這樣的一個最大的缺點是無法識別多義詞。因為一個詞在不同的上下文中所表達的意思可能是不一樣的,而靜態的向量沒有辦法處理這些情況。
特征提取器
神經網絡、深度學習最擅長的事情就是提取特征。而在NLP領域,字與字之間會有一些特征,句與句之間也會有一些特征,可以把這些特征統稱為語言學知識。而我們要做的,就是找到一個優秀的特征提取器,把這些語言學知識提取出來。常見的特征提取器有RNN(循環神經網絡)、LSTM(RNN的一種特殊形式)、CNN(卷積神經網絡)、Transformer。Transformer是目前最好的特征提取器。Transformer就像其另一個霸氣的名字“變形金剛”一樣,被更多人研究,并不斷地變化。
自然語言處理元年(正文)
我們的故事要從2018年開始。2018年,被稱為自然語言處理元年。這一年,許多重要模型相繼發布,為NLP帶來了里程碑式的進展。這一年,無監督預訓練+微調的模式開始流行。這些重要的模型中,就包含我們的主角,BERT模型和GPT模型。
ELMo模型(配角登場)
2018年3月,ELMo模型被提出。ELMo模型基于LSTM這個特征提取器,采用雙向訓練的模式,會根據上下文的含義來動態產生表示這個詞的向量,解決了word2vec不能表示多義詞的弊端。ELMo模型先讓模型在大量無標注數據集上進行訓練,通過雙向LSTM,提取數據特征,學習到基本的語言學特征。當應用于下游任務時,只需要給少量的有標注數據集進行訓練,模型就能達到不錯的效果。這種模式稱為預訓練+微調,這種模式也被GPT和BERT所采用。無標注數據集的獲取相對來說較容易,所以這種無監督預訓練+微調也逐漸流行。
GPT模型(男主登場)
2018年6月,GPT誕生了。GPT (Generative Pre-Training Transformer) 是 OpenAI GPT 系列的開山之作。
從名字上可以看出,GPT是基于Transformer的生成式預訓練模型。它主要處理的是自然語言處理四大任務中的生成式任務。因為在做生成式任務時,是看不到下文的,只能給出上文來生成下文,所以像ELMo這種雙向訓練的模式不適合GPT。
Transformer以其卓越的性能擊敗了LSTM,GPT也以優異的表現戰勝了ELMo。
BERT模型(男二登場)
2018年10月,BERT模型橫空出世!BERT當年的成績可謂是拳打ELMo,腳踩GPT,霸占了各大自然語言處理榜單的榜首。而且,在后面幾年,BERT的追隨者越來越多,衍生出了一系列跟BERT相關的模型,比如RoBERTa、SpanBERT、ALBERT、MacBERT等等,大家都在BERT的基礎上進行優化。BERT的影響力可見一斑。
關于BERT,前亞馬遜首席科學家李沐曾在2021年11月說過:“如果對自然語言處理在過去三年里面最重要的文章做排序的話,你把BERT排在第二的位置,那么很難有另外一篇論文能夠名正言順地排在第一的位置。BERT及后續的一系列文章使得自然語言處理在過去三年里面有一個質的飛躍。”
那么BERT為什么這么厲害呢?因為BERT結合了ELMo和GPT的優勢。相比于ELMo,BERT把特征提取器換成了更加厲害的Transformer(當然還有其它的一些改變,但是這里略過)。相比于單向訓練的GPT,它采取了雙向訓練的方式,使得其產生的向量更加貼合上下文的意思。
GPT VS BERT(決戰)
和GPT相比,BERT所使用的掩碼語言模型任務(Masked Language Model)雖然讓它失去了直接生成文本的能力,但換來的是雙向編碼的能力,這讓模型擁有了更強的文本編碼性能,直接的體現則是下游任務效果的大幅提升。而GPT為了保留生成文本的能力,只能采用單向編碼。以當年的眼光來看,BERT絕對是一個更加優秀的模型。因為既然BERT和GPT兩者都是采用預訓練+微調的范式,并且下游任務依然是分類、匹配、序列標注等等經典的NLP任務形式,那么像BERT模型這種更注重特征編碼的質量,下游任務選一個合適的損失函數去配合任務做微調,顯然比GPT這種以文本生成的方式去迂回地完成這些任務更加直接。從BERT模型出來以后,無監督訓練+下游任務微調的范式便奠定了它的霸主地位,各類沿著BERT的思路,琢磨如何獲得更好的文本特征編碼的方法大量涌現,以至于GPT這個以生成式任務為目標的模型顯得像一個異類。馬后炮地說,如果當時OpenAI順應大勢,放棄生成式預訓練這條路,也許我們要等更長的時間才能見到ChatGPT這樣的模型。
總結
在自然語言處理四大任務中,GPT更擅長生成式任務,而BERT更擅長其它三個。而在如今,以對話任務為代表的生成式任務成為了主流,且隨著參數量的增大,GPT系列的效果也越來越好,這也是GPT后來能打敗BERT的重要原因吧。
參考文章
自然語言處理技術的模型和任務
OpenAI是如何勝過谷歌的?ChatGPT發展簡史
語言大模型的進化軌跡
ChatGPT的前世今生:OpenAI的技術“執拗”與“豪賭”