You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向交叉熵中添加负熵项构建自定义损失函数?

正则化损失实现说明

论文核心信息

  • 参考论文题目:《REGULARIZING NEURAL NETWORKS BY PENALIZING CONFIDENT OUTPUT DISTRIBUTIONS》
  • 核心实现逻辑:在负对数似然基础上加入负熵项,对低熵输出分布进行惩罚,实现神经网络正则化,可基于该规则构造自定义损失函数用于模型训练
  • 损失计算公式:损失公式
  • 超参数说明:β为惩罚系数,用于控制置信惩罚的强度

现有代码基础

已完成的基础分类交叉熵损失函数代码如下:

import tensorflow as tf
def custom_loss(y_true, y_pred):
    cce = tf.keras.losses.CategoricalCrossentropy()
    cce_loss = cce(y_true, y_pred)    
    return cce_loss

补充负熵项后的完整实现

import tensorflow as tf

def custom_loss(y_true, y_pred, beta=0.1):
    # 计算原始分类交叉熵损失
    cce = tf.keras.losses.CategoricalCrossentropy()
    cce_loss = cce(y_true, y_pred)
    # 计算预测分布的熵,添加极小值避免log(0)报错
    entropy = -tf.reduce_sum(y_pred * tf.math.log(y_pred + 1e-10), axis=-1)
    # 叠加负熵惩罚项得到最终损失
    total_loss = cce_loss + beta * (-tf.reduce_mean(entropy))
    return total_loss

注:可根据实际训练效果调整beta的取值,适配不同任务的正则化强度需求。

内容的提问来源于stack exchange,提问作者shiva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:51:02