硬核科普:從貝葉斯定理到大語(yǔ)言模型,智能寫(xiě)作創(chuàng)業(yè)者的探索之路
最近這段時(shí)間,大語(yǔ)言模型(LLM)火了起來(lái),而這一現(xiàn)象和趨勢(shì)也給許多AI創(chuàng)業(yè)者或智能產(chǎn)品的從業(yè)者們帶來(lái)了更多思考。比如本文作者便曾經(jīng)在幾年前嘗試過(guò)智能寫(xiě)作產(chǎn)品研發(fā),在大語(yǔ)言模型火了之后,他對(duì)語(yǔ)言模型、對(duì)先前的創(chuàng)業(yè)項(xiàng)目又有了新的思考,一起來(lái)看。
2019年,我們?cè)谧鲋悄軐?xiě)作的時(shí)候,面臨的最大的挑戰(zhàn)就是AI給的數(shù)據(jù)效果和預(yù)期偏差太遠(yuǎn)。特別是做擴(kuò)寫(xiě)的時(shí)候,發(fā)現(xiàn)生成的文字很容易跑偏。
當(dāng)時(shí),我們做了很多算法和模型研究。幾乎爬取了全網(wǎng)的自媒體文章,然后訓(xùn)練一批模型,問(wèn)題依然很多。因?yàn)橹形牟┐缶罡鞣N修辭手法和陰陽(yáng)怪氣,再加上隨著時(shí)代的發(fā)展,特殊詞的用法也如雨后春筍一般涌現(xiàn),如何讓AI能跟上人類語(yǔ)言的理解能力是個(gè)讓人頭痛的問(wèn)題。
當(dāng)時(shí)我們也訓(xùn)練了不少語(yǔ)言模型,發(fā)現(xiàn)它根本無(wú)法弄懂詞的含義,無(wú)法理解“心靈雞湯”和“雞湯”是完全兩碼事,寫(xiě)出了“老鼠愛(ài)喝心靈雞湯”的令人啼笑皆非的錯(cuò)誤;另外,很容易跑偏,從“心靈雞湯”跑偏到“老鼠喝湯”再跑偏到“動(dòng)物世界”,一口氣擴(kuò)寫(xiě)出幾百個(gè)字,能跑偏到十萬(wàn)八千里,讓人完全摸不著頭腦。
在試了很多方案之后,我們得到了一個(gè)結(jié)論:機(jī)器無(wú)法真正理解人類的語(yǔ)言。然后,我們悄悄把“擴(kuò)寫(xiě)”放到了“實(shí)驗(yàn)室”的板塊,放棄了文本生成的持續(xù)研發(fā)。
AI生成文字這條路到底通不通?到2023年,在沒(méi)有體驗(yàn)ChatGPT之前,我還是持保留態(tài)度,但是體驗(yàn)之后,我忍不住驚呼:“這三四年的時(shí)間到底發(fā)生了什么?”
我和大家一樣,重新補(bǔ)起了功課……
一、什么是語(yǔ)言模型?
語(yǔ)言模型(Language Model)是一種機(jī)器學(xué)習(xí)算法,它可以根據(jù)給定文本來(lái)預(yù)測(cè)下一個(gè)詞語(yǔ)或字符的出現(xiàn)的概率。
語(yǔ)言模型通過(guò)大量的文本數(shù)據(jù)來(lái)學(xué)習(xí)語(yǔ)言的統(tǒng)計(jì)特征,進(jìn)而生成具有相似統(tǒng)計(jì)特征的新文本。其核心目標(biāo)是建立一個(gè)統(tǒng)計(jì)模型,用來(lái)估計(jì)文本序列中每個(gè)詞語(yǔ)或字符出現(xiàn)的概率,從而實(shí)現(xiàn)語(yǔ)言生成、語(yǔ)言理解等自然語(yǔ)言處理任務(wù)。
比如,我們可以給一句話讓ChatGPT做擴(kuò)寫(xiě):
我今天吃了一個(gè)___
它可能會(huì)擴(kuò)寫(xiě)出“蘋(píng)果”,“饅頭”、“面包”、“漢堡”。根據(jù)大量的文本統(tǒng)計(jì),這些詞出現(xiàn)頻率大致如下圖:
蘋(píng)果為0.07,饅頭為0.035,面包為0.025,漢堡為0.022。
因?yàn)椤疤O(píng)果”出現(xiàn)得比較多,ChatGPT大概率會(huì)寫(xiě)出“今天我吃了一個(gè)蘋(píng)果”。但它不太可能預(yù)測(cè)出“我今天吃了一個(gè)火車”,因?yàn)椤盎疖嚒辈皇鞘澄?,雖然語(yǔ)法通順。但喂給GPT訓(xùn)練的語(yǔ)料里面基本沒(méi)有人會(huì)這樣造句。
正是因?yàn)镚PT在訓(xùn)練過(guò)程中吸收了大量的人類語(yǔ)言數(shù)據(jù),所以我們會(huì)覺(jué)得它的回答符合我們的邏輯。
人類區(qū)別于普通動(dòng)物的最主要智慧特征可能就是強(qiáng)大的語(yǔ)言能力。語(yǔ)言不僅僅只是一種溝通工具,還包含著人類的思考邏輯和對(duì)世界的認(rèn)知。
不管AI是否有真正的智慧,我相信只要語(yǔ)言模型的預(yù)測(cè)能力做到極致,就能夠讓人類信以為真。
二、概率從哪里來(lái)?
那么,語(yǔ)言模型是如何預(yù)測(cè)概率的呢?這要從200多年前的貝葉斯學(xué)派說(shuō)起。
貝葉斯定理,由英國(guó)數(shù)學(xué)家貝葉斯 ( Thomas Bayes 1702-1761 ) 發(fā)明的。其主要思想就是,通過(guò)已知的知識(shí)來(lái)預(yù)測(cè)接下來(lái)要發(fā)生事情的概率。即我們通過(guò)以往的經(jīng)驗(yàn)、分析或?qū)嶒?yàn),可以推斷出一些事件發(fā)生的概率。為了更好的理解,我們舉個(gè)預(yù)測(cè)地震的例子。
假設(shè)有人收集了大量歷史數(shù)據(jù),我們可以發(fā)現(xiàn)地震和自然界的某些異?,F(xiàn)象有某種關(guān)系,如雞飛狗跳、老鼠上街、青蛙搬家、湖水干涸等現(xiàn)象,我們可以根據(jù)歷史的數(shù)據(jù)事先計(jì)算好這些現(xiàn)象出現(xiàn)的概率,叫做先驗(yàn)概率。地震的概率可以寫(xiě)作P(地震),異?,F(xiàn)象的概率可以寫(xiě)為P(異常現(xiàn)象),例如,老鼠上街的概率可以寫(xiě)作P(老鼠上街)。
正所謂:一切偶然背后都會(huì)有個(gè)必然。根據(jù)歷史數(shù)據(jù),我們可以算出地震和異常現(xiàn)象的概率關(guān)系,我們稱之為條件概率。例如,在某個(gè)異?,F(xiàn)象發(fā)生后出現(xiàn)地震的概率,可以寫(xiě)作P(地震|異?,F(xiàn)象),先決條件寫(xiě)在|后面。如果是已知地震再計(jì)算異常現(xiàn)象的概率,也可以反過(guò)來(lái)P(異常現(xiàn)象|地震)。
有了這些數(shù)據(jù),我們就可以根據(jù)觀測(cè),預(yù)測(cè)還未發(fā)生的地震了。通過(guò)觀測(cè)一些現(xiàn)象來(lái)預(yù)測(cè)的還未發(fā)生的概率,這叫做后驗(yàn)概率,我們記為P(新地震|異?,F(xiàn)象)。
例如,P(新地震|雞飛狗跳)表示的是我們觀測(cè)到雞飛狗跳,預(yù)測(cè)可能發(fā)生地震的概率。這時(shí)我們可以用到貝葉斯公式。
后驗(yàn)概率=(先驗(yàn)概率*條件概率)/證據(jù)概率
我們把預(yù)測(cè)地震的例子遷移回語(yǔ)言模型。假設(shè)要預(yù)測(cè)在給定“吃”這個(gè)詞之后,下一個(gè)詞是“蘋(píng)果”的概率,即P(蘋(píng)果|吃)。
首先,語(yǔ)言模型學(xué)習(xí)了大量的文本數(shù)據(jù),獲得了大量的先驗(yàn)知識(shí),已經(jīng)知道了P(吃|蘋(píng)果)、P(蘋(píng)果)和P(吃)這三個(gè)概率值。其中,P(吃|蘋(píng)果)表示在給定“蘋(píng)果”這個(gè)詞之后,出現(xiàn)“吃”的概率;P(蘋(píng)果)表示“蘋(píng)果”這個(gè)詞出現(xiàn)的概率;P(吃)表示“吃”這個(gè)詞出現(xiàn)的概率。
然后,我們可以根據(jù)貝葉斯定理,計(jì)算后驗(yàn)概率P(蘋(píng)果|吃):
我們還可以通過(guò)輸入法的聯(lián)想詞模擬整個(gè)句子的生成過(guò)程。
我們以“今天吃”這個(gè)詞作為輸入,語(yǔ)言模型會(huì)繼續(xù)根據(jù)統(tǒng)計(jì)數(shù)據(jù),計(jì)算出在“今天吃”這個(gè)詞之后,各個(gè)詞出現(xiàn)的概率。例如,它可能計(jì)算出“飯”這個(gè)詞出現(xiàn)的概率為0.4,“了”這個(gè)詞出現(xiàn)的概率為0.35,“的”這個(gè)詞出現(xiàn)的概率為0.33……我們結(jié)合語(yǔ)境選擇“了”,然后輸入法刷新聯(lián)想詞,然后我們選擇“一個(gè)”。依次重復(fù)這個(gè)過(guò)程,最終得到了“今天吃了一個(gè)蘋(píng)果”的句子。
大家可能也注意到了它的問(wèn)題。輸入法的語(yǔ)言模型,只能預(yù)測(cè)上一個(gè)詞和下一個(gè)詞的關(guān)系,如果沒(méi)有人類的主動(dòng)選擇就很容易跑偏,這是一個(gè)長(zhǎng)文本預(yù)測(cè)的問(wèn)題。
在2019年,我們遇到了問(wèn)題是一樣的。而且我們?cè)趯?shí)際應(yīng)用中我們會(huì)使用更加復(fù)雜的模型,我們會(huì)用到一些RNN等深度學(xué)習(xí)的技術(shù),讓語(yǔ)言模型可以預(yù)測(cè)更長(zhǎng)一點(diǎn)的句子。但是針對(duì)長(zhǎng)文本依然無(wú)法解決跑偏的問(wèn)題。
當(dāng)時(shí)的解決方案就是一句一句的擴(kuò),讓用戶隨時(shí)可以糾正偏差。但問(wèn)題是這種擴(kuò)寫(xiě)的意義又在哪里呢?讓我對(duì)AI文本生成的信仰頓時(shí)崩塌。
三、什么是大語(yǔ)言模型(LLM)?
2023年,讓整個(gè)人類最為振奮的AI技術(shù)就是ChatGPT?!按笳Z(yǔ)言模型(Large Language Model)”這個(gè)詞也隨之映入人們的眼簾。ChatGPT讓人覺(jué)得驚艷之處,能夠結(jié)合上下文,像人一樣有邏輯性地回答問(wèn)題,就算生成超長(zhǎng)的文本也不會(huì)跑偏。到底什么是大語(yǔ)言模型?
大語(yǔ)言模型與普通語(yǔ)言模型相比,大語(yǔ)言模型的一個(gè)顯著區(qū)別在于其規(guī)模。大語(yǔ)言模型通常具有大量的參數(shù),并且在訓(xùn)練過(guò)程中使用了巨量的文本數(shù)據(jù)。大型語(yǔ)言模型的參數(shù)規(guī)模通常與效果成正比,能夠更好地理解和生成自然語(yǔ)言文本,更好地完成各種自然語(yǔ)言處理任務(wù),如寫(xiě)作、翻譯、問(wèn)答等。
GPT優(yōu)秀之處是做了前無(wú)古人的突破性的嘗試,使用了巨量的參數(shù)和預(yù)訓(xùn)練數(shù)據(jù)。GPT-3擁有1750億個(gè)參數(shù),使用了45TB的文本數(shù)據(jù)進(jìn)行訓(xùn)練。訓(xùn)練數(shù)據(jù)和參數(shù)量都遠(yuǎn)遠(yuǎn)超過(guò)傳統(tǒng)的語(yǔ)言模型。
1. 大規(guī)模的參數(shù)有什么用?
我們要從詞嵌入(Word Embedding)說(shuō)起,為幫助語(yǔ)言模型更好地理解每個(gè)詞的特征和含義, 我們需要使用大量的參數(shù)來(lái)存儲(chǔ)和處理信息。我們會(huì)將這些詞嵌入一個(gè)高維的向量空間里面,像GPT-3的向量空間的維數(shù)就有12288,這意味著GPT-3可以使用12288個(gè)維度來(lái)充分理解某個(gè)詞。對(duì)于很多單詞的理解可能比人類都要透徹。
語(yǔ)言模型還可以通過(guò)詞向量空間中的位置的遠(yuǎn)近來(lái)理解詞與詞之間的關(guān)系。
假設(shè)我們的詞向量空間有三個(gè)維度:顏色、形狀和類別。我們有三個(gè)單詞:“蘋(píng)果”、“橘子”、“手機(jī)”,應(yīng)該如何嵌入到向量空間呢?
“蘋(píng)果”和“橘子”都屬于水果類別,因此它們?cè)陬悇e維度上的值相同都是用數(shù)字“1”表示;但“蘋(píng)果”的顏色是紅色用數(shù)字“1”表示,而“橘子”的顏色是橙色用數(shù)字“2”表示;至于形狀維度,由于“蘋(píng)果”和“橘子”的形狀都是圓形,都用數(shù)字“1”表示,于是有下面這個(gè)數(shù)值。
“手機(jī)”屬于電子產(chǎn)品類別,數(shù)值用“3”表示;手機(jī)的形狀是方的,數(shù)值用“2”表示;顏色是多色的,數(shù)值用“8”來(lái)表示。
他們之間的關(guān)系可以一目了然地展示在向量空間的關(guān)系中,如下圖:
我們可以看到語(yǔ)義相似的單詞在向量空間中彼此靠近。當(dāng)GPT在生成文字的時(shí)候,它可以根據(jù)向量空間知道“蘋(píng)果”和“橘子”是一類水果,在“吃”的語(yǔ)境中可以相互替換。
但是這也有新的問(wèn)題,“蘋(píng)果”也有可能是指生產(chǎn)手機(jī)的“蘋(píng)果公司”, GPT怎么能知道“蘋(píng)果”是否特指“蘋(píng)果公司”呢,根據(jù)不同的語(yǔ)境推理出不同含義的“蘋(píng)果”呢?
2019年,如何結(jié)合語(yǔ)境,讓語(yǔ)言模型能夠準(zhǔn)確地理解詞的含義,這在當(dāng)時(shí)也是個(gè)巨大的難題。我們當(dāng)時(shí)想的策略也相對(duì)簡(jiǎn)單粗暴,就是通過(guò)命名實(shí)體技術(shù)強(qiáng)制將它們標(biāo)記為不同的實(shí)體名詞,例如,“蘋(píng)果手機(jī)”類別為電子產(chǎn)品,“蘋(píng)果公司”為企業(yè)。但是遇到的問(wèn)題是,我們沒(méi)有辦法列舉完所有的命名實(shí)體,需要不斷擴(kuò)充新詞庫(kù);另外在很多語(yǔ)境中“蘋(píng)果”就能代表“蘋(píng)果公司”和“蘋(píng)果手機(jī)”,沒(méi)辦法根本解決這個(gè)問(wèn)題。
GPT-3高明之處就是使用上下文相關(guān)的詞嵌入方法和自注意力機(jī)制來(lái)解決這個(gè)問(wèn)題。它的詞嵌入方法考慮了單詞在給定文本中使用的上下文,而自注意力機(jī)制則允許模型在生成文本時(shí)考慮前面的所有的單詞。最終,讓機(jī)器能更好地理解語(yǔ)境 ,解決詞的多義性和歧義性問(wèn)題。
2. 什么是注意力機(jī)制?
GPT的Transformer模型通過(guò)使用自注意力機(jī)制(Self-attention mechanism),能夠讓模型在處理每個(gè)單詞時(shí)都能考慮到文本中所有單詞的信息,從而更好地捕捉文本中的長(zhǎng)距離依賴關(guān)系,解決了長(zhǎng)文本的跑偏的問(wèn)題。這在傳統(tǒng)的模型中是無(wú)法做到的。
注意力機(jī)制的靈活性來(lái)自于它的“軟權(quán)重”特性,即這種權(quán)重是可以在運(yùn)行時(shí)改變的,可以根據(jù)上下文來(lái)推斷出單詞的含義,來(lái)達(dá)到更好的預(yù)測(cè)效果。
舉個(gè)例子,假設(shè)我們有一個(gè)句子:“我喜歡吃蘋(píng)果,但我不喜歡蘋(píng)果手機(jī)。”在這個(gè)句子中,“蘋(píng)果”這個(gè)詞出現(xiàn)了兩次,第一個(gè)“蘋(píng)果”是指一種水果,而第二個(gè)“蘋(píng)果”是指一種手機(jī)品牌。
如果是沒(méi)有注意力機(jī)制的模型來(lái)處理這個(gè)句子,那么模型可能會(huì)將兩次出現(xiàn)的“蘋(píng)果”都當(dāng)做水果來(lái)處理。但對(duì)于GPT來(lái)說(shuō)就不一樣了,它能夠根據(jù)上下文來(lái)推斷出每次出現(xiàn)的“蘋(píng)果”的含義。
這主要?dú)w功于GPT包含的巨量參數(shù)中不僅僅包含了詞匯的意義,還包含了詞在句子中結(jié)構(gòu)和語(yǔ)法、語(yǔ)言風(fēng)格、語(yǔ)境信息等等。
注意力機(jī)制可以通過(guò)計(jì)算每個(gè)詞的相似度來(lái)實(shí)現(xiàn)注意力權(quán)重的計(jì)算。當(dāng)它處理第一個(gè)“蘋(píng)果”時(shí),會(huì)注意到前面有一個(gè)權(quán)重較高的“吃”字,因此會(huì)推斷出這里的“蘋(píng)果”指的是一種水果;而當(dāng)模型處理第二個(gè)“蘋(píng)果”時(shí),它會(huì)注意到后面有一個(gè)權(quán)重較高的“手機(jī)”,因此會(huì)推斷出這里的“蘋(píng)果”指的是一種手機(jī)品牌。
我們可以簡(jiǎn)單模擬一下這個(gè)注意力權(quán)重的計(jì)算過(guò)程。
假設(shè)我們有個(gè)三維的詞向量空間,我們先把“我”、“喜歡”、“吃”、“蘋(píng)果”這4個(gè)詞嵌入到這個(gè)空間里面:
如果繪制成圖,他們?cè)谙蛄靠臻g中的關(guān)系一目了然。如下圖,兩個(gè)詞越是接近,關(guān)系就越緊密。
語(yǔ)言模型可以用數(shù)學(xué)方法來(lái)分別計(jì)算“蘋(píng)果”與“我”“喜歡”“吃”三個(gè)詞的權(quán)重分?jǐn)?shù),我們可以通過(guò)向量的點(diǎn)積計(jì)算方式模擬計(jì)算一下,值越大代表的是向量的相關(guān)性越大:
通過(guò)計(jì)算我們發(fā)現(xiàn)“吃”的相似度最大為2.66,那就說(shuō)明“吃”這個(gè)詞相對(duì)于“蘋(píng)果”應(yīng)該有更高的注意權(quán)重。
或許看到這里,你已經(jīng)覺(jué)得自己消耗了不少的腦細(xì)胞。但似乎我們也能夠理解GPT的工作量是有多么的大。因?yàn)橐粩嗟貏?dòng)態(tài)的生成和預(yù)測(cè)下個(gè)詞,需要消耗大量的算力。沒(méi)辦法一步到位,所以它只能是一個(gè)字一個(gè)字地給你呈現(xiàn)出來(lái)。
算力也是我們?cè)?019年遇到的難題,因?yàn)橛?xùn)練模型的沉沒(méi)成本很高。稍微復(fù)雜一點(diǎn)的模型訓(xùn)練可能需要幾天的時(shí)間,但是你也沒(méi)有辦法保證預(yù)期結(jié)果。而且,在模型訓(xùn)練好之后,用戶還需要長(zhǎng)時(shí)間的等待計(jì)算結(jié)果,導(dǎo)致體驗(yàn)非常糟糕。對(duì)于一個(gè)爭(zhēng)分奪秒的創(chuàng)業(yè)團(tuán)隊(duì)來(lái)說(shuō),顯然有些不切實(shí)際。
所以我們當(dāng)時(shí)思路是盡可能把模型做多做小,按照不同的文章分類進(jìn)行訓(xùn)練,想通過(guò)這種方式平衡時(shí)間和效果,但效果依然不盡人意。從今天的結(jié)果來(lái)看,沒(méi)有通用的大語(yǔ)言模型作為基座,把模型做小做細(xì)基本就是一條不歸路。最終,我們放棄了文本生成算法的持續(xù)研發(fā)。
GPT的成功之處,不僅僅是技術(shù)的成功,也是在商業(yè)上面的成功。有了微軟的算力加持,可以更好的保證模型訓(xùn)練和服務(wù)體驗(yàn),才能在普通的用戶人群獲得巨大的反響。
四、尾聲
今天,在ChatGPT閃耀的光環(huán)之下,我們看到OpenAI的CEO 山姆·奧特曼(Sam Altman) 風(fēng)光無(wú)限,我在短視頻平臺(tái)經(jīng)常能刷到他的精彩演講語(yǔ)錄,我也總是希望能夠從他的成功經(jīng)歷上學(xué)到點(diǎn)什么。
如果有一天,我拿著2023年的大語(yǔ)言模型的論文,穿越回了2019年,重新開(kāi)始智能寫(xiě)作的項(xiàng)目,我會(huì)做得更好嗎?其實(shí),我依然覺(jué)得很難,因?yàn)閯?chuàng)業(yè)需要“天時(shí)地利人和”。
先不提OpenAI所在的土壤對(duì)于創(chuàng)新極其的開(kāi)放,它吸納了全球最頂尖的人才,并獲得了資本的鼎力支持。光是能夠看清未來(lái)的方向,并且能夠堅(jiān)定不移地走下去,也是我們大多數(shù)創(chuàng)業(yè)團(tuán)隊(duì)無(wú)法企及的高度。
對(duì)于一個(gè)創(chuàng)業(yè)者來(lái)說(shuō),看見(jiàn)未來(lái)很重要,但認(rèn)清自己也很重要。看見(jiàn)未來(lái),你才能堅(jiān)定不移地走下去;認(rèn)清自己,你才能力所能及地把事情做得更好。在沒(méi)有能力之前,需要先學(xué)會(huì)成長(zhǎng);在機(jī)遇沒(méi)有到來(lái)之前,需要先學(xué)會(huì)等待;在沒(méi)有成功之前,也要學(xué)會(huì)選擇堅(jiān)持。
現(xiàn)在ChatGPT的熱度之下,又有一些朋友重新投入到AI創(chuàng)業(yè)的大潮中。雷軍說(shuō)過(guò):“站在風(fēng)口,豬也能被吹上天。”但是風(fēng)很大,浪也會(huì)很急,挑戰(zhàn)也會(huì)很多。希望各位創(chuàng)業(yè)者能夠一帆風(fēng)順。
專欄作家
PM熊叔,微信公眾號(hào):PM熊叔,人人都是產(chǎn)品經(jīng)理專欄作家。教育類產(chǎn)品產(chǎn)品經(jīng)理出身,學(xué)過(guò)設(shè)計(jì),做過(guò)開(kāi)發(fā),做過(guò)運(yùn)營(yíng)的產(chǎn)品經(jīng)理。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
MARK
通俗易懂