官术网_书友最值得收藏!

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 實際可能輸出的概率分布序列

主站蜘蛛池模板: 河曲县| 浦江县| 昆明市| 贵阳市| 凉城县| 文安县| 关岭| 河津市| 卓资县| 秦皇岛市| 阜阳市| 武宁县| 桐庐县| 兴安盟| 盐池县| 普宁市| 沭阳县| 崇文区| 九龙坡区| 农安县| 山阳县| 陇川县| 白银市| 玛沁县| 合山市| 正镶白旗| 吴旗县| 芜湖市| 安庆市| 开远市| 普兰店市| 唐河县| 西和县| 定襄县| 仪征市| 九江市| 嘉鱼县| 南和县| 晋城| 寿宁县| 泗洪县|