让 AI 算 Mixup:标签可以按比例混合,两个原样本的损失为何不能直接平均

昨天 3阅读

Mixup把两条训练输入按比例合成,同时混合它们的标签。实现时有时只看见“两份损失加权”,便误以为原样本各算一次再平均就够了。关键要问:两份损失是不是基于同一个混合输入的预测?用一个非线性小函数可以把区别算清楚。

让 AI 算 Mixup:标签可以按比例混合,两个原样本的损失为何不能直接平均

AI模型生成的概念插图:输入与标签同步混合;图形叠合没有对应真实图像数据、精确混合比例或训练界面。

输入与标签沿用同一个系数

取两个虚构二分类样本:A的输入x=0、正类标签y=1;B的输入x=2、标签y=0。固定λ=1/4代表A所占权重,B占3/4。混合输入为(1/4)×0+(3/4)×2=1.5,混合正类目标为(1/4)×1+(3/4)×0=0.25。

若用完整两类目标向量,结果是[0.25,0.75],和仍为1。它表达训练目标的混合,不表示人工已经确认新输入有25%的客观正类概率。把目标直接取最大项变成硬标签0,会改变这次练习的损失。

模型必须实际看见混合输入

为核算方便,设预测正类概率p(x)=0.2+0.1x²,只在本例输入范围[0,2]使用,因此概率均合法。A的预测为0.2,B的预测为0.6;混合输入1.5的预测为0.425。原预测按相同权重混合却得到0.5,两者不同,因为这个函数是非线性的。

对混合输入使用二元交叉熵:-0.25ln(0.425)-0.75ln(0.575),约为0.628955。这里用自然对数,0.575是同一个混合输入的负类概率,而不是B的预测。

若先让A、B各通过模型,分别算硬标签损失再加权,得到(1/4)×[-ln(0.2)]+(3/4)×[-ln(0.4)],约1.089578。数值不同并非舍入误差,而是两个流程送进模型的输入已经不同。

两份损失加权,怎样才等价

固定混合输入的同一个预测0.425,分别对原标签1与0算损失,再按1/4和3/4加权,结果仍是0.628955。这来自交叉熵对目标分布的线性关系。因此实现可以不显式建立软标签向量,但两份损失都必须使用混合输入的预测。

本次程序分别计算软标签交叉熵、同一预测配两个硬标签的加权,以及两个原输入各自损失的加权,前两项一致,第三项不同。让AI把每个概率旁边标出来自哪个输入,比只盯着公式中的λ更容易检查错误。

边界也可以直接核对:λ=1时,输入与标签都回到A;λ=0时都回到B。如果输入用λ而标签误用1-λ,两个端点就会暴露错配。真实批量实现还要让配对索引同时作用于输入和标签,避免打乱其中一份后失去对应。

原始Mixup使用随机凸组合进行增强,本例固定系数只为说明一次计算。数字输入可线性插值,并不意味着所有字段都适合直接混合:类别编号、文本token ID等不能仅因能写成整数就照此运算。应先明确输入表示和标签语义,再评估这种增强是否适合任务。

这份算例没有训练分类器,也没有把损失较小解释成效果更好。两种流程优化的是不同样本上的目标;检查Mixup实现时,先确认混合对象、配对、系数和模型前向入口,再讨论真实验证集的结果。

资料核对日期:2026年10月2日。算例为原创教学设定,已用独立程序复核,未进行真实模型训练或效果测试。

参考资料

Zhang等:mixup: Beyond Empirical Risk Minimization,第2节

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。