- 损失函数区别于代价函数,损失函数是针对一个样本/数据而言的(参考自吴恩达深度学习&神经网络课程),而代价函数是对整个数据集而言的,通常代价函数是损失函数的算数平均值(可能乘上某些系数)
交叉熵损失函数
L
(
y
,
y
^
)
=
?
y
?
l
o
g
(
y
^
)
?
(
1
?
y
)
?
l
o
g
(
1
?
y
^
)
L(y, \hat{y})=-y*log(\hat{y})-(1-y)*log(1-\hat{y})
L(y,y^?)=?y?log(y^?)?(1?y)?log(1?y^?)
- 交叉熵损失函数本质上是极大似然估计。当输出值位于0到1之间时,认为输出是取某一类的概率,通过对数函数的性质可以知道,交叉损失函数可以理解成:根据输入准确得到输出的概率的负对数,对数不改变函数的单调性,通过负号将函数单调性改变
- 在tensorflow的用法:
tf.keras.losses.CategoricalCrossentropy(
from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO,
name='categorical_crossentropy'
)
- 此处还有疑问/不确定:为什么使用对数函数,是根据熵的概念(概率的对数)吗?交叉熵损失函数中的“熵”是由此得名吗?那么“交叉”来自哪?
平方误差损失函数
- 个人认为不应该称为均方误差损失函数,而应该称为均方误差代价函数,因为均方误差是描述整个数据集上的代价
|