在閱讀本文前,有幾個(gè)熱身的問(wèn)題,您嘗試回答一下。
(資料圖片)
1. 什么是大語(yǔ)言模型(LLM)?
2. 大語(yǔ)言模型開(kāi)發(fā)與傳統(tǒng)機(jī)器學(xué)習(xí)開(kāi)發(fā)有什么區(qū)別?
3. 什么是任務(wù)特定模型?
4. 什么是大語(yǔ)言模型的微調(diào)和參數(shù)有效調(diào)整?
5. 如何理解大語(yǔ)言模型的一體多用特性?
下面就讓我們開(kāi)啟探討大語(yǔ)言模型奧秘之旅。
引言
深度學(xué)習(xí)的子領(lǐng)域中有兩個(gè)重要的概念:大型語(yǔ)言模型(LLMs)和生成式人工智能(Generative AI)。這兩者在許多方面都有交集,并且都屬于深度學(xué)習(xí)的研究范疇。如果您對(duì)生成式人工智能感興趣,建議您閱讀金博士的《生成式人工智能簡(jiǎn)介》一文。
在過(guò)去的幾年中,生成式人工智能發(fā)展迅速,吸引了大量的關(guān)注。這種類型的人工智能能夠生成全新的內(nèi)容,包括文本、圖像、音頻和合成數(shù)據(jù)。
本文我們探討一下什么是大型語(yǔ)言模型。這類模型預(yù)先通過(guò)大量的文本數(shù)據(jù)進(jìn)行訓(xùn)練,通常是從互聯(lián)網(wǎng)或其他公開(kāi)可獲取的書籍中提取的。預(yù)訓(xùn)練期間,模型學(xué)習(xí)并理解文本數(shù)據(jù)的模式和結(jié)構(gòu)。之后,在微調(diào)階段,模型會(huì)根據(jù)特定的任務(wù)進(jìn)行優(yōu)化,這些任務(wù)可能包括機(jī)器翻譯、文本生成、情感分析等。
前文回顧:
AI技術(shù)干貨|從頭開(kāi)始圖解大語(yǔ)言模型(上篇)
深度網(wǎng)絡(luò)近似函數(shù)的深度討論
神經(jīng)網(wǎng)絡(luò)被譽(yù)為通用近似器,理論上它們可以擬合任何函數(shù)。然而,在實(shí)際操作中,如果想要模擬一種復(fù)雜的函數(shù),比如我們希望模擬的語(yǔ)言模型,我們需要一個(gè)具有足夠"容量"的神經(jīng)網(wǎng)絡(luò)。所謂的"容量"可以理解為神經(jīng)網(wǎng)絡(luò)的復(fù)雜程度或者說(shuō)是神經(jīng)網(wǎng)絡(luò)的大小。換句話說(shuō),如果一個(gè)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)過(guò)于簡(jiǎn)單,那么它可能無(wú)法擬合一些復(fù)雜的函數(shù)。
為了更好地理解這個(gè)概念,我們可以做一個(gè)比喻。假設(shè)我們現(xiàn)在有一條藍(lán)色的曲線,我們希望用一個(gè)神經(jīng)網(wǎng)絡(luò)去擬合它。但如果我們選擇的神經(jīng)網(wǎng)絡(luò)過(guò)于簡(jiǎn)單,比如只有四個(gè)權(quán)重參數(shù),那么這個(gè)神經(jīng)網(wǎng)絡(luò)可能就無(wú)法擬合藍(lán)色曲線的第二個(gè)波峰,因?yàn)樗?容量"不足以表達(dá)這么復(fù)雜的結(jié)構(gòu)。
此外,神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)決策也很重要,比如激活函數(shù)的選擇。比如,ReLU(Rectified Linear Unit,修正線性單元)激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中非常流行,但它們只能給出分段線性的結(jié)果,所以如果要擬合一個(gè)曲線函數(shù),就需要更多的ReLU單元。
那么,我們?nèi)绾卧O(shè)計(jì)一個(gè)能夠模擬語(yǔ)言的神經(jīng)網(wǎng)絡(luò)呢?這需要我們進(jìn)行更深入的探索和學(xué)習(xí)。在下一部分中,我們將創(chuàng)建一個(gè)強(qiáng)大的神經(jīng)網(wǎng)絡(luò),它可以生成詩(shī)歌,翻譯語(yǔ)言,甚至編寫計(jì)算機(jī)代碼。這樣的網(wǎng)絡(luò),會(huì)給我們展示人工智能在語(yǔ)言處理上的潛力和魅力。
詞嵌入(Word Embedding) 方法
對(duì)于一段給定的文本,“the hair was still ...", 我們想要預(yù)測(cè)下一個(gè)單詞"red",這就需要使用某種類型的神經(jīng)網(wǎng)絡(luò)。首先,我們需要把單詞轉(zhuǎn)換成數(shù)字,這樣神經(jīng)網(wǎng)絡(luò)才能理解。你可能會(huì)想到直接按照字母順序給每個(gè)單詞編碼,但這樣會(huì)有個(gè)問(wèn)題,那就是一些語(yǔ)義相近的詞,比如"apex"(頂點(diǎn))和"zenith"(頂峰),就會(huì)被賦予非常不同的數(shù)字。
為了解決這個(gè)問(wèn)題,我們更傾向于將語(yǔ)義相似的詞映射到相似的數(shù)字,或者在這種情況下,是相似的向量。這種方法被稱為詞嵌入(Word Embeddings),這樣做的好處是顯著改善了詞匯的表示,我們也可以在網(wǎng)絡(luò)上輕易找到已經(jīng)訓(xùn)練好的詞嵌入模型。
擁有了詞嵌入這個(gè)工具后,我們就可以開(kāi)始設(shè)計(jì)我們的大型語(yǔ)言神經(jīng)網(wǎng)絡(luò)了。一個(gè)基礎(chǔ)的設(shè)計(jì)可能看起來(lái)非常簡(jiǎn)單,你可能只需添加更多的層、神經(jīng)元和權(quán)重,以增加網(wǎng)絡(luò)的容量。
圖 30 多層神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)單詞 red
然而,這種簡(jiǎn)單的增加并不能滿足我們的需求,原因是這個(gè)問(wèn)題的難度遠(yuǎn)超我們的想象,我們需要給神經(jīng)網(wǎng)絡(luò)提供更多的幫助。
那么,如何設(shè)計(jì)一個(gè)更強(qiáng)大、更準(zhǔn)確的語(yǔ)言模型呢?我們需要挖掘更深層次的模型設(shè)計(jì)思路。比如,我們可以嘗試使用更先進(jìn)的模型架構(gòu),或者引入更多的上下文信息。甚至,我們可以嘗試使用一些專門針對(duì)語(yǔ)言建模的先進(jìn)技術(shù),比如自注意力機(jī)制、變換器(Transformer)模型等。這些技術(shù)不僅能夠幫助我們的模型更好地理解語(yǔ)義的深層次聯(lián)系,還能夠更準(zhǔn)確地預(yù)測(cè)下一個(gè)單詞。只有深入理解并巧妙利用這些先進(jìn)技術(shù),我們才能設(shè)計(jì)出真正強(qiáng)大的語(yǔ)言模型。
變換器(Transformer)
回顧我們前面提到的例子"the hair was still ...",如果把最后一個(gè)詞 "red" 留在口中不說(shuō),估計(jì)大家也能猜出來(lái)。實(shí)際上,你可能只需要聽(tīng)到前四個(gè)詞就能猜出,即和"bed"押韻一種發(fā)型或顏色。通過(guò)這個(gè)示例我們可以洞察到:在預(yù)測(cè)下一個(gè)詞時(shí),我們只需要關(guān)注到一部分詞語(yǔ)。
圖 31 變換器預(yù)測(cè)單詞red 圖一
那么,如果我們能訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)模擬這種注意力機(jī)制會(huì)怎么樣呢?我們需要使用一種稱為"注意力網(wǎng)絡(luò)"的網(wǎng)絡(luò)來(lái)解決這個(gè)問(wèn)題。這種網(wǎng)絡(luò)會(huì)接收輸入詞語(yǔ),并為每一個(gè)詞計(jì)算出一個(gè)介于0和1之間的注意力權(quán)重。然后,我們將這些權(quán)重與對(duì)應(yīng)的詞語(yǔ)相關(guān)聯(lián),并將結(jié)果輸入到下一個(gè)單詞預(yù)測(cè)網(wǎng)絡(luò)中。
然而問(wèn)題來(lái)了,如何訓(xùn)練這個(gè)注意力網(wǎng)絡(luò)呢?你或許想到人工標(biāo)注的方法,即可以雇傭人力在大量的文本中標(biāo)注哪些詞押韻,哪些詞之間存在關(guān)聯(lián),然后使用這些信息作為訓(xùn)練數(shù)據(jù)。但是,這聽(tīng)起來(lái)就很繁瑣且費(fèi)力。其實(shí),我們有一個(gè)更好的方法。
理解了上述內(nèi)容后,我們可以開(kāi)始討論一種更有效的訓(xùn)練方式,那就是使用一種被稱為"自監(jiān)督學(xué)習(xí)"的方法。在這種方法中,我們不需要顯式地標(biāo)注訓(xùn)練數(shù)據(jù)。相反,我們可以讓模型在大量的未標(biāo)注文本中自我學(xué)習(xí),這可以通過(guò)讓模型預(yù)測(cè)被隨機(jī)遮蓋的單詞,或者學(xué)習(xí)預(yù)測(cè)單詞的順序來(lái)實(shí)現(xiàn)。通過(guò)這種方式,模型可以在大量的數(shù)據(jù)中自我學(xué)習(xí),無(wú)需我們花費(fèi)巨大的努力去標(biāo)注數(shù)據(jù)。
為了改善預(yù)測(cè)的精確性,我們可以同時(shí)訓(xùn)練這兩個(gè)網(wǎng)絡(luò),也就是注意力網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)。在這種情況下,預(yù)測(cè)網(wǎng)絡(luò)會(huì)指導(dǎo)注意力網(wǎng)絡(luò)在何處需要進(jìn)行學(xué)習(xí)以更好地預(yù)測(cè)下一個(gè)詞。例如,假設(shè)網(wǎng)絡(luò)預(yù)測(cè)出的詞是“brown”而不是“red”。由于"brown"并不和"bed"押韻,因此反向傳播算法可能會(huì)試圖增加對(duì)"bed"的注意力,同時(shí)減少那些導(dǎo)致選擇"brown"的權(quán)重。
圖 32 變換器預(yù)測(cè)單詞red圖二
這種聯(lián)合訓(xùn)練的方法效果顯著,形成的這種組合網(wǎng)絡(luò)被稱為變換器(Transformer),變換器的整個(gè)架構(gòu)相當(dāng)復(fù)雜,我們這里只是做些基礎(chǔ)性的介紹。注意力網(wǎng)絡(luò)的實(shí)現(xiàn)方式與之前描述的有所不同,它并非是整體處理所有詞語(yǔ),而是一個(gè)詞一個(gè)詞地進(jìn)行處理。例如,對(duì)于"still"這個(gè)詞,網(wǎng)絡(luò)會(huì)評(píng)估每個(gè)其他詞與"still"的相關(guān)性,并將這些注意力得分編碼為介于0和1之間的值。然后,我們會(huì)取這些詞的加權(quán)和,將其編碼為一個(gè)上下文向量"c"。
關(guān)鍵詞: