如何通过向交叉熵添加负熵来创建自定义损失函数?

shi*_*iva 5 python numpy deep-learning keras tensorflow

我最近读了一篇题为“通过惩罚可信输出分布来调整神经网络https://arxiv.org/abs/1701.06548”的论文。作者讨论了通过向负对数似然添加负熵项并为模型训练创建自定义损失函数来惩罚低熵输出分布来正则化神经网络。

在此处输入图片说明

价值 ?控制置信惩罚的强度。我为分类交叉熵编写了一个自定义函数,如下所示,但需要将负熵项添加到损失函数中。

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
Run Code Online (Sandbox Code Playgroud)

Iva*_*van 1

的熵y_pred本质上是 和 自身之间的分类交叉熵y_pred

在此输入图像描述

def custom_loss(y_true, y_pred, beta):
    cce = tf.keras.losses.CategoricalCrossentropy()
    return cce(y_true, y_pred) - beta*cce(y_pred, y_pred)
Run Code Online (Sandbox Code Playgroud)