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