![多模态大模型:算法、应用与微调](https://wfqqreader-1252317822.image.myqcloud.com/cover/939/51709939/b_51709939.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.5 损失函数
我们在分词阶段创建了一张标准词汇表,其中每个词都由一个相同维度的向量表示,最简单的向量表示方法是one-hot编码,如表1-7所示。
表1-7 T5词汇表的one-hot编码示例
![](https://epubservercos.yuewen.com/0E5F9C/30516230407062906/epubprivate/OEBPS/Images/0047-01.jpg?sign=1739560365-gv6oFN4Lnuf6Ff67A4WebqeA5TVBUyM9-0-ecb24be06d8550b61d25c61cd2d3311e)
在使用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 期望输出的概率分布序列
![](https://epubservercos.yuewen.com/0E5F9C/30516230407062906/epubprivate/OEBPS/Images/0048-01.jpg?sign=1739560365-AbErV8zxBD4dHeFoEQ8XGiayCiJQPFIS-0-fe2398a5232061856a20e8c867406b73)
在训练模型时,我们的目标是让模型能够生成期望的概率分布,但实际上不可能与其完全一致。如果训练足够长的时间,我们期望模型的输出能够如表1-9所示。
表1-9 实际可能输出的概率分布序列
![](https://epubservercos.yuewen.com/0E5F9C/30516230407062906/epubprivate/OEBPS/Images/0048-02.jpg?sign=1739560365-STBuwxhV3rRIY2yuueCSYdp5SSkN0aZp-0-1f2a4832944fe6f982d6f7a65cb4dd86)