sigmoid 和 softmax,BCE与CE loss function

一句话概括

sigmoid 激活函数 二分类的激活函数 解决我是和不是的问题 对应二元交叉熵损失函数
softmax 激活函数 多分类的激活函数 解决我们中哪个是的问题 对应多元交叉熵损失函数

二分类推导

为什么用交叉商:

sigmoid 和 softmax,BCE与CE loss function_第1张图片

梯度下降的角度:从下面的推导过程可以看出来sigmoid对应的交叉商最后的梯度是一种残差。mse 是高斯分布的最大似然,二CE是多项式分布的最大似然。https://zhuanlan.zhihu.com/p/63731947

交叉商的本质出发:交叉熵描述了两个不同的概率分布p和q的差异程度,两个分布差异越大,则交叉熵的差异越大。交叉商关注的是正确类别的预测概率,而MSE无差别的关注全部类别上预测概率与真实概率的差 但是其实这句话,我还是有疑问的,因为通过下面的反向传播可以知道,sigmoid对应的CE函数的反向传播就是在看我们预测值与真实值之间的差异,这也是为什么,sigmoid+CE也可以用于做数值的回归,因为反向传播本身,就是计算这两者的差异。只是用sigmoid激活一般我们不会有MSE做损失。反向传播可以自行推导下。

前向传播与反向传播的推导过程:

激活函数的导数:
sigmoid 和 softmax,BCE与CE loss function_第2张图片

损失函数的梯度:

sigmoid 和 softmax,BCE与CE loss function_第3张图片
最终的梯度下降:可以看出来如果越靠近我们的准确的数值,梯度越小,也就是到了局部最优的地方了。这就是用交叉熵损失函数的意义,同理在线性回归的模型中,我们经常也是用平方差损失,他的导数就是两个数的差,也是反映了变化。
sigmoid 和 softmax,BCE与CE loss function_第4张图片
这里注意下:目标检测的中心位置就是用了BCE,其实反向传播我们就可以看出,损失函数对w的影响也是转化为了实际数值和真实数据的差距,如果将BCE用于分类的话,上面的y就是0或者1,但是也可以用于回归。其实如果将标签的数值换成其他的也就是什么的yn换成其他的为何不可呢?所以这里我们看到了BCE其实也可以用于回归,回归靠近某一个在1和0之间的数值。所以多推导还是有好处的!从原理出发才能更好的进行创新。而且一般,我们对输入的xn进行归一化处理,可以减少输入本身对反向传播的影响。

https://zhuanlan.zhihu.com/p/44591359 推导

多元分类:

https://zhuanlan.zhihu.com/p/27223959

softmax的完成推导过程:中间比如对激活函数的推导可以参考其他的。终极方向就是反向传播加链式法则。计算的过程氛围:首先对损失函数做一个初步的导数的过程,然后对激活函数softmax进行求道,这里考虑两种情况,就是我们的i和k是否相等,i是我们的当前的神经元,k是我们的类别,也就是如果这个神经元是对应的类别的情况和不对应类别的情况。接着将激活函数的导数带入到了损失函数的导数里面进一步的化简即可。

sigmoid 和 softmax,BCE与CE loss function_第5张图片

补充:损失函数:m是样本,k是总的类别,最终只有一个类别是为1的,我们只看那一项。
sigmoid 和 softmax,BCE与CE loss function_第6张图片

sigmoid 和 softmax,BCE与CE loss function_第7张图片

sigmoid 和 softmax,BCE与CE loss function_第8张图片

sigmoid 和 softmax,BCE与CE loss function_第9张图片

最终可以进行反向传播的,只有标签为1的那个点于输入之间的误差才可以进行反向传播,其他的都没有发挥相关的作用。如果是用上述两者来做二分类,那么sigmoid的输出只有一个点,但是softmax 有两个点,可以反向传播都只有一个点发挥了作用。

损失函数因为多元,所以和二元是有点改变的。应该考虑每一个了。

softmax 如果按照上面的计算,在输入的数值很大或者很小的时候,很容易出现溢出的问题,向上溢出和向下溢出的,所以一般我们要减去一个最大值。

https://blog.csdn.net/zx1245773445/article/details/86443099
https://zhuanlan.zhihu.com/p/29376573
https://blog.csdn.net/b876144622/article/details/80958092

反思:
sigmoid其实更多的是区分我是不是我的问题,所以sigmoid可以用来做回归的问题,而softmax则是区分的是这么多个我是谁的过程,softmax本质上更像是解决我是不是这个的问题。

你可能感兴趣的:(人工智能,深度学习)