2021SC@SDUSC
交叉熵损失函数 (Cross-entropy loss function)
交叉熵损失函数的标准形式如下:
交叉熵函数使用来描述模型预测值和真实值的差距大小,越大代表越不相近,交叉熵函数可以由最大似然函数在伯努利分布的条件下推导出来
注意公式中 X 表示样本, Y 表示实际的标签, 表示预测的输出, 表示样本总数量。
二分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
多分类问题中的loss函数(输入数据是softmax或者sigmoid函数的输出):
(2)当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。
import numpy as np
def cross_entropy(Y, P):
"""Cross-Entropy loss function.
以向量化的方式实现交叉熵函数
Y and P are lists of labels and estimations
returns the float corresponding to their cross-entropy.
"""
Y = np.float_(Y)
P = np.float_(P)
return -np.sum(Y * np.log(P) + (1 - Y) * np.log(1 - P)) / len(Y)