当前位置: 首页 > article >正文

对条件语言模型(Conditional Language Model)的目标函数的理解

在翻看LORA这篇论文的时候,忽然对条件语言模型优化的目标函数产生了一些疑问,下面是理解。
在这里插入图片描述

这个目标函数描述了条件语言模型(Conditional Language Model)的目标,即通过最大化对数似然估计来学习参数( Φ \Phi Φ),从而使模型能够根据给定的输入序列(x)来生成输出序列(y)。

目标函数解释

max ⁡ Φ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( P Φ ( y t ∣ x , y < t ) ) \max_{\Phi}\sum_{(x,y)\in\mathcal{Z}}\sum_{t=1}^{|y|}\log\left(P_\Phi(y_t|x,y_{<t})\right) Φmax(x,y)Zt=1ylog(PΦ(ytx,y<t))

这表示在所有输入-输出对((x, y))的训练数据集( Z \mathcal{Z} Z)上,最大化对数似然函数。该函数的主要部分可以分为两层嵌套的求和,表示:

  1. 外层求和:遍历训练数据集( Z \mathcal{Z} Z),其中每一个样本包含输入序列(x)和输出序列(y)。
  2. 内层求和:对输出序列(y)中的每个位置(t)进行求和,计算输出序列中每个词或token的条件概率。
( P Φ ( y t ∣ x , y < t ) P_\Phi(y_t | x, y_{<t}) PΦ(ytx,y<t)) 的含义

P Φ ( y t ∣ x , y < t ) P_\Phi(y_t | x, y_{<t}) PΦ(ytx,y<t) 表示给定输入序列(x)以及输出序列中位置(t)之前的所有token(即( y < t y_{<t} y<t),也就是序列(y)中从1到(t-1)的部分),模型预测在位置(t)的token ( y t y_t yt)的条件概率。这是典型的自回归模型的思想,表示输出序列是一个依赖于之前已生成部分的序列。

逐项解释

  • ( max ⁡ Φ \max_{\Phi} maxΦ):我们通过优化参数(\Phi)来最大化目标函数。这里的(\Phi)是模型的参数集,可能包括神经网络的权重、偏置等。

  • ( ∑ ( x , y ) ∈ Z \sum_{(x,y)\in\mathcal{Z}} (x,y)Z):对训练数据集中所有的((x, y))对进行求和,((x, y))是数据集中一个样本,(x)是输入序列,(y)是目标输出序列。

  • ( ∑ t = 1 ∣ y ∣ \sum_{t=1}^{|y|} t=1y):对输出序列(y)中的每一个位置(t)进行求和,(|y|)表示序列(y)的长度。目标是对每个输出token ( y t y_t yt)进行建模。

  • ( log ⁡ ( P Φ ( y t ∣ x , y < t ) ) \log(P_\Phi(y_t | x, y_{<t})) log(PΦ(ytx,y<t))):这是条件语言模型的对数概率,表示给定输入序列(x)和之前已经生成的部分输出序列( y < t y_{<t} y<t)(即(y)从1到(t-1)位置的子序列),模型生成( y t y_t yt)的对数概率。对数是为了将概率转换为可以累加的量,使得更方便进行求和和优化。

总结

该目标函数的本质是在所有训练样本((x, y))上最大化输出序列每个位置(t)上的条件概率( P Φ ( y t ∣ x , y < t ) P_\Phi(y_t | x, y_{<t}) PΦ(ytx,y<t)),即给定输入和之前的输出,预测当前位置的输出的概率。通过最大化这一目标函数,我们训练模型使其能够根据输入和部分已生成的输出来正确预测后续的输出。这是条件语言模型如Transformer、BERT、GPT等语言生成任务的常见目标。

后记

2024年9月23日17点47分于上海,基于GPT4o大模型生成。


http://www.kler.cn/a/316457.html

相关文章:

  • 5G时代的关键元件:射频微波MLCCs市场前景广阔
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码原理.编码相关api
  • 如何提高自动驾驶中惯性和卫星组合导航pbox的精度?
  • 利用 Screen 保持 VSCode 连接远程任务持续运行
  • 详解kafka消息发送重试机制的案例
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • C语言编译四大阶段
  • EasyExcel的基本使用——Java导入Excel数据
  • [C#]winform 使用opencvsharp实现玉米粒计数
  • 基于windows的mysql5.7安装配置教程
  • Vue 实现高级穿梭框 Transfer 封装
  • Qt 模型视图(四):代理类QAbstractItemDelegate
  • 【数字组合】
  • C基础语法2
  • 提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案
  • 【C语言零基础入门篇 - 16】:栈和队列
  • 新一代图像生成E2E FT:深度图微调突破
  • iOS界面布局:屏幕尺寸与安全区域全面指南
  • 什么是unix中的fork函数?
  • 【RabbitMQ】快速上手
  • Spring Boot 2.x基础教程:实现文件上传
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第五集:再制作更多的敌人
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • 经典sql题(七)查找直播间最大在线人数
  • HDL coder使用手册
  • 【产品思考】低代码理解与国内落地