softmax回归 讨论区

关于交叉熵,推荐这个blog《 简单谈谈Cross Entropy Loss》
https://blog.csdn.net/xg123321123/article/details/80781611

2赞

我理解这两个公式的本质是一样的。你说的这个公式适用于二分类的情况,只是文中公式的一种特殊情况。我举个三分类和二分类的例子,都能用文中的公式。
三分类情况:
假设onehot标签为(0,0,1),预测结果为(0.2, 0.2, 0.6),那么交叉熵损失为:
-(0log(0.2) + 0log(0.2) + 1log(0.6))= 0.22
二分类情况:
假设onehot标签为(0,1),预测结果为(0.2, 0.8),那么交叉熵损失为:
-(0
log(0.2) + 1log(0.8))= 0.097
上面的式子其实也就是 y
log( p)+(1-y)*log(1-p), 只是此时y=0, p =0.2

我也出现了类似的问题 刷新一下就好了

https://blog.csdn.net/bitcarmanlee/article/details/82320853

这样比较好反向求导?(我之前也这样觉得)

我有个疑惑

是什么意思?为什么公式里要带个负号?

因为如果计算结果和label差异很大的话,log的输入会非常小,那么log计算完的结果会是一个比较大的负数,所以加上一个负号的话,就可以让结果是一个正的大数,也就和他们想要的loss比较契合。

3.4.5小节,已知三个标签分别是1,2,3,那么y1=y2=0.2,y3=0.6 和y1=0,y2=0.4,y3=0.6在平方损失函数计算的情况下是不是应该前者的损失大一点呢

不是的,是我理解错误,yi=3的时候,三个标签已经用类别分布表达为 0,0,1, 而不是以前的1, 2, 3

直接使用输出层的输出有两个问题。

一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中(0.1, 10, 0.1)的输出值10表示“很置信”图像类别为猫, 因为该输出值是其他两类的输出值的100倍。但如果o1 = o3 = $10^3$即(1000, 10, 1000),那么输出值10却又表示图像类别为猫的概率很低。

另一方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

你这样做了之后这两个问题,仍然没解决。
解决办法本质上是从连续数值变为离散概率分布,再用概率分布差异衡量损失。

假设有一个样本标签打错了,本来是狗,却标记成猫。而预测器表现很好,判定该样本为狗概率是1,猫的概率是0。由于标签打错了,那么交叉熵的误差函数就会很大。怎样应对这种情况呢。

此刻的$y \hat ^(i) \in (0,1)$ 而 $y = log(x)$在 x \in (0,1) 值域为$(- \infty, 0]$ 为了更好的构造loss 函数与后期的计算公式里加上负号。

y(i)是一个数字