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

server/2024/9/24 7:43:54/

在翻看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.ppmy.cn/server/121241.html

相关文章

Stable Diffusion 使用详解(13)--- 3D纹理增强

目录 背景 Normal Map 描述 原理 使用心得 例子 描述 原图 参数设置 底模 ​编辑 正负相关性提示词 其他参数 controlnet 效果 还能做点啥 调整 效果 背景 实际上&#xff0c;在stable diffusion 中&#xff0c;你获取发现很多controlnet 其实功能有点类似&…

PHP智慧教育新篇章优校管理系统小程序源码

智慧教育新篇章 —— 优校管理系统 &#x1f680;【开篇启航&#xff1a;智慧教育的浪潮已至】 在这个日新月异的时代&#xff0c;教育也在悄然发生着变革。随着科技的飞速发展&#xff0c;智慧教育已成为教育领域的新风尚。而“优校管理系统”&#xff0c;正是这股浪潮中的佼…

JavaSE高级(3)——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

腾讯 IEG 游戏前沿技术 一面复盘

前言 投了个实习内推后台开发&#xff0c;本来要电话先交流的那天直接走流程下午面试了&#xff0c;对面两人&#xff0c;面了有一个小时&#xff0c;游戏本的构思续航忘记插电了最后还掉线了一下&#xff0c;趁着还记得面试内容复盘一下 自我介绍一下 答&#xff1a; 您好…

2024.9.23 数据分析

数据脱敏&#xff1a;由于一些数据涉及商业、安全等&#xff0c;不方便公开&#xff0c;所以对隐私数据进行有策略的修改、隐藏等&#xff0c;创建一个与原始数据相似但不含真正敏感细节的数据副本&#xff0c;再由于后续的数据分析、开发测试等操作&#xff08;例如用户的姓名…

React基础教程(10):React Hooks

9.1 使用hooks理由 高阶组件为了复用,导致代码层级复杂。生命周期的复杂。写成函数组件,无状态组件,因为需要状态,又写成了class,成本高9.2 useState(保存组件状态) const [state, setState] = useState(initialState);案例:点击按钮修改name

自然语言处理实战项目

1950年&#xff0c;艾伦图灵&#xff08;Alan Turing&#xff09;发表了一篇题为“ 计算机机械与智能&#xff08;Computing Machinery and Intelligence&#xff09; ” 的文章&#xff0c;提出了著名的“图灵测试&#xff08;Turing Test&#xff09;”。这当中涉及了自动解释…