- 多模態大模型:算法、應用與微調
- 劉兆峰
- 643字
- 2024-09-11 17:37:25
1.2.5 損失函數
我們在分詞階段創建了一張標準詞匯表,其中每個詞都由一個相同維度的向量表示,最簡單的向量表示方法是one-hot編碼,如表1-7所示。
表1-7 T5詞匯表的one-hot編碼示例

在使用Transformer模型進行有監督訓練時,模型會通過相同的前向傳播過程,將其輸出與正確的輸出進行比較。模型最終的輸出也是一個詞匯表,在剛開始訓練時,因為模型的參數是隨機初始化的,所以未訓練的模型符合隨機的概率分布。舉個例子,如果第一步是將“你好”翻譯為“Hello”,那么模型應該輸出一個表示“Hello”的概率分布序列,我們當然期望它直接輸出[1, 0, 0, 0, 0, 0, 0]。然而,由于模型剛開始訓練,這種期望的輸出是不太可能出現的,假設模型實際的輸出是[0.1, 0.2, 0.3, 0.2, 0.2, 0.1](經過softmax層向,概率和才為1.0)。我們可以通過比較期望的輸出和實際的輸出計算一個損失值,然后用反向傳播來調整模型的權重,通過訓練讓模型實際的輸出更接近期望的輸出。比較兩個概率分布序列的最簡單的方法就是計算它們的差值,具體的計算方法可以參考交叉熵和KL散度。
在實際情況中,我們的輸入通常會包含多個詞。例如,輸入可能是“你好世界!”,期望的輸出是“Hello World!”。在這種情況下,我們期望模型能夠連續輸出概率分布序列,其中每個概率分布都是一個寬度等于詞匯表大小的向量。在這個概率分布序列中,每個值都對應詞所在位置上的最大概率,如表1-8所示。
表1-8 期望輸出的概率分布序列

在訓練模型時,我們的目標是讓模型能夠生成期望的概率分布,但實際上不可能與其完全一致。如果訓練足夠長的時間,我們期望模型的輸出能夠如表1-9所示。
表1-9 實際可能輸出的概率分布序列
