对条件语言模型(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)∈Z∑t=1∑∣y∣log(PΦ(yt∣x,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Φ(yt∣x,y<t)) 的含义

P Φ ( y t ∣ x , y < t ) P_\Phi(y_t | x, y_{<t}) PΦ(yt∣x,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=1∣y∣) :对输出序列(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Φ(yt∣x,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Φ(yt∣x,y<t)),即给定输入和之前的输出,预测当前位置的输出的概率。通过最大化这一目标函数,我们训练模型使其能够根据输入和部分已生成的输出来正确预测后续的输出。这是条件语言模型如Transformer、BERT、GPT等语言生成任务的常见目标。

后记

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

相关推荐
needn2 小时前
TRAE为什么要发布SOLO版本?
人工智能·ai编程
毅航2 小时前
自然语言处理发展史:从规则、统计到深度学习
人工智能·后端
前端付豪2 小时前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
ursazoo3 小时前
写了一份 7000字指南,让 AI 帮我消化每天的信息流
人工智能·开源·github
_志哥_6 小时前
Superpowers 技术指南:让 AI 编程助手拥有超能力
人工智能·ai编程·测试
YongGit7 小时前
OpenClaw 本地 AI 助手完全指南:飞书接入 + 远程部署实战
人工智能
程序员鱼皮8 小时前
斯坦福大学竟然开了个 AI 编程课?!我已经学上了
人工智能·ai编程
星浩AI9 小时前
Skill 的核心要素与渐进式加载架构——如何设计一个生产可用的 Skill?
人工智能·agent
树獭非懒9 小时前
告别繁琐多端开发:DivKit 带你玩转 Server-Driven UI!
android·前端·人工智能
阿尔的代码屋9 小时前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python