热门话题
#
Bonk 生态迷因币展现强韧势头
#
有消息称 Pump.fun 计划 40 亿估值发币,引发市场猜测
#
Solana 新代币发射平台 Boop.Fun 风头正劲
另一个有趣的观察是
在你的文本语料库上对交叉熵损失执行SGD
等同于
REINFORCE,即,基于策略的策略梯度,使用二元奖励“我的模型是否从语料库中生成了文本”

8月12日 00:20
为什么交叉熵是语言预训练的一个好损失函数?
注意:这都是众所周知的;有趣的是,尽管对“为什么使用交叉熵”有许多观点和直觉,但它们都可以从一个单一的出发点得出。
这里有一个简单的第一原则推导,不假设任何关于数据分布的内容。它来自一个非常合理的操作要求:)
“我希望我的模型听起来聪明”
但我们无法测量这一点,所以我们问
“我希望我的模型听起来像人类”
虽然我们可以访问所有曾经写过的文本,但我们也无法准确测量这一点,因此我们改为问
“我希望我的模型尽可能有可能生成任何曾经写过的文本”
或者更直白地说:
“我希望我的模型记住训练数据。”
考虑这个思想实验:
给定一个数据集 S,包含人类所写的所有文本,我们对 S 中的每个“文本”进行独立试验:
从我们的模型中抽样:“样本文本” Pr( ;W)
检查:“样本文本”是否与原始文本完全匹配?注意:我们不对任何内容进行条件限制!我们只是问,在模型可以生成的所有内容中,我们是否得到了“文本”。
将成功定义为事件
E = “所有每个样本检查成功”
E 的概率是,你的模型 W 对正确真实值分配的概率的乘积
Pr(E) = Π_{text in S} Pr(text; W)
最大化 log Pr(E) 相对于 W 给你交叉熵目标。
你如何用 SGD 优化这个?
从语料库中抽样文本
计算每个文本前缀的 grad log Pr(token|prefix)
更新模型
优雅的是,这同样同时:
1) 最小化模型 P( ;W) 下数据的描述长度(压缩视角)
2) 最小化与真实分布的 KL 散度——如果存在的话(尽管我们从未假设存在)
3) 实现最大似然估计
推导是直接且众所周知的,但它突出了一个重要的事情:
交叉熵自然地从想要精确重现训练数据中出现。
附言:你本可以选择最大化
Pr(模型生成的文本在真实值中)
有趣的是,优化这个可能导致模式崩溃,因为一个最优解是始终预测语料库中的单一文本。然而,梯度再次看起来像交叉熵,但带有一个乘法因子
即,Pr(text;W) grad log Pr(text;W)
63.46K
热门
排行
收藏