圖解 LLM(大語言模型)的工作原理
在 x(原帖鏈接見文章末尾) 上看到有人分享一組圖解 LLM 工作原理的帖子,內容通俗易懂,就搬運過來漢化一下,和大家一起學習!
分享者是 Akshay,他是一位 AI/ML 工程師,在 x 上的介紹如下圖所示:
LLM 工作原理解釋
條件概率解釋
他提到,在介紹 LLM 之前,需要先了解一下條件概率(conditional probability),應該是與高中、大學學的概率學相關。有一個很形象的例子:
有 14 個人,他們中的一部分人(7 個)喜歡網球、一部分人(8 個)喜歡足球、少部分人(3 個)同時喜歡網球和足球、也有極少一部分人(2 個)都不喜歡網球和足球。用圖表示如下:
所以如果要表示喜歡網球的人數概率,表示方法爲 P(A),結果是 7/14;喜歡足球的人數概率,表示方法爲 P(B),結果爲 8/14;同時喜歡網球和足球的人數概率,表示方法爲 P(A∩B),結果是 3/14;同時表示既不喜歡網球又不喜歡足球的人數概率,結果爲 2/14。
那什麼條件概率呢?
其實就是在另外一件事情發生的前提下,某件事情發生的概率。比如上面的事件 A 和事件 B,如果要表示在事件 B 發生的前提下,事件 A 發生的概率,那麼表示方法是 P(A∣B)。
所以,如果要計算一個人在喜歡足球的情況下,還喜歡網球的概率,計算方法爲 P(A|B)=P(A∩B)/P(B)=(3/14)/(8/14)=3/8。
再拿陰天和下雨天爲例來將條件概率:如果將今天下雨當作事件 A,陰天可能下雨作爲事件 B(按照常識,陰天會有下雨的可能),而且事件 B 會影響下雨的預測。所以,陰天的時候就可能會下雨,這個時候就可以說條件概率 P(A|B) 是非常高的。
LLM 預測解釋
回到 LLM 上來說,這些模式的任務就是預測下一個出現的單詞。這就和前面講的條件概率類似:如果給定已經出現過的單詞,那下一個最可能出現的單詞是哪一個?
所以,要預測下一個單詞,模型就要根據之前給定的單詞(上下文)來爲每一個接下來可能出現的單詞進行條件概率的計算,條件概率最高的單詞就會被作爲預測單詞所選中。
而 LLM 學習的是一個高維度的單詞序列概率分佈。這個分佈的參數就是經過訓練的權重。但是這種概率畢竟是一種預測,並不是實際的結果,所以這個過程中就有一個 損失計算 (Loss calculation) 的概念。
以下內容來自 ChatGPT。
Loss calculation(損失計算) 是指模型在預測過程中產生的誤差的度量,通常用來衡量模型預測的結果與實際目標之間的差異。通過最小化損失函數,模型能夠不斷優化其參數,以提高對新數據的預測能力。
上圖中提到的 Cross-entropy loss 和 Negative log-likehood 是兩種損失函數。
- • Cross-entropy loss
Cross-entropy loss 指交叉墒損失,用來度量模型預測的概率分佈與真實標籤(即實際單詞)間的差異。
交叉墒 用於計算兩個概率分佈之間的差異。在語言模型中,一個概率分佈是模型對每個可能的下一個單詞的預測概率,另一個是實際的單詞標籤的 “真實分佈”(通常是一個 one-hot 分佈,即正確單詞的概率爲 1,其他爲 0)。交叉熵損失的計算公式如下:
- • Negative Log-Likelihood
Negative Log-Likelihood,負對數似然,簡稱 NLL。是機器學習中常用的一個損失函數,尤其在概率模型和分類問題中廣泛應用。
以上內容來自 ChatGPT。
這種概率預測並選擇最有可能的單詞會帶來一個問題如果總是選擇可能性最大的單詞,那麼結果就是重複性的,這就讓 LLM 顯得缺乏創造性。
所以,這裏面就有一個 temperature(溫度) 的概念產生。
temperature(溫度)
LLM 中,temperature(溫度)是一個調整模型輸出概率分佈的超參數,通常用於文本生成和採樣。它影響生成文本時的多樣性和創造性,以及模型在選擇下一個單詞時的隨機性。
因爲在 LLM 中,大模型通常會生成一個概率分佈,表示下一詞在給定上下文下出現的可能性。例如,模型可能會爲每個可能的下一個單詞生成一個概率,就像前面圖中所畫的:
上下文是 “The boy went to the“,下一個單詞可能是 “Cafe、Hospital、Playground、Park、School“,這幾個單獨對應的概率是 “0.1、0.05、0.4、0.15、0.3“。
temperature 控制如何從概率分佈進行採樣:
-
• Low temperature(低溫度,比如 0.1 ~ 0.5):模型的輸出會更加具有確定性,也就是更傾向於選擇概率較高的單詞,此時生成的文本更連貫、理性,內容更 “保守”,但是也可能缺乏多樣性和創意。
-
• High temperature(高溫度,比如 0.8 ~ 1.0):模型的輸出會更加隨機,也就使得低概率的單詞有更大的機會被選中。這會增加生成文本的多樣性和創造性,但是也可能導致輸出不那麼流暢或不太符合上下文。
temperature 是通過使用 softmax 函數來調整每個詞的 logits(即原始的未經過歸一化的分數)來對大模型的輸出進行影響的。
softmax 函數是一個激活函數,用來將向量中的每個值轉換成一個概率分佈。其輸出的每個值都會被轉換成一個介於 0 和 1 之間的概率,並且所有輸出的概率之和等於 1。
隨後,作者給了兩個不同 temperature 時候的示例來說明差別,第一張圖是 low temperature 的,第二張圖是 high temperature 的。
所以 LLM 並不是選擇最佳(概率最大)的 token,而是對預測進行採樣。所以,概率最高的 token 也有可能不會被選中。
所以,在 softmax 函數中,溫度引入了一些調整,反過來這種調整又影響了採樣過程。
最後作者給了一個很直觀的代碼示例來對 temperature 對採樣的影響:
看來要學習 LLM,還需要深入學習大學的概率分佈、統計、線性相關的課程啊。
原帖鏈接
https://x.com/akshay_pachaar/status/1919368985092780189
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/9mv9lJWkMInb7dyd7YX9ZA