softmax及其反向传播的计算

lnx 导数为1/x, e^x导数为e^x,logax = lnx / lna --》导数为1 / x * lna

 

换底公式logab=logcb/logca(a和c为底)

1、2、3为输入,命名为i1, i2, i3,4、5、6为全连接输出结果o4, o5, o6

o4 = i1 * w41 + i2 * w42 + i3 * w43 + b4

o5 = i1 * w51 + i2 * w52 + i3 * w53 + b5

o6 = i1 * w61 + i2 * w62 + i3 * w63 + b6

使用softmax将输出的结果o4, o5, o6转换为[0, 1]之间的概率得到a4, a5, a6

softmax公式:ai = e^oi / sum(e^oj); i为4, 5, 6中的一个,j取值4,5,6

例如, a4 = e^o4 / (e^o4 + e^o5 + e^o6 )

使用交叉熵最为损失函数:Loss = -sum(yi * logai);y是对应的标注值(0或1),ai为对应的预测概率, ai的log底取e方便后面计算

假设yi对应的职位[0, 0, 1],即a6为正确值,概率应最大,Loss=-loga6

使用Loss值反向传播更新参数W,Loss对W求导,链式法则,Loss对ai求导 * ai对oi求导 * oi对W求导

Loss对ai的导数为 -yi / ai * lne = -yi / ai;oi对W的导数为对应的i值;

ai对oi的导数即是对下面公式的zi求导(注:ai对应下面的Si,oi对应下面的zi)

这里是S为(2)公式,这个公式对zi求导,分为k=i和k!=i两种情况

由此可获得Loss对ai(下面公式的si)的导数,如下

 yk的和应为1,则最终为ai - yi

最终参数W和b的导数(si等同于上面的ai):

Softmax Loss的缺点:

1、随着分类数目的增大,分类层的线性变化矩阵参数也随着增大;

2、对于封闭集分类问题,学习到的特征是可分离的,但对开放集如人脸识别问题,所学特征却没有足够的区分性。对于人脸识别问题,人脸数目是很多的且不断有新数据,不是封闭集分类问题。

此外,sigmoid(softmax)+cross-entropy loss 擅长于学习类间的信息,因为采用了类间竞争机制,只关心对于正确标签预测概率的准确性,忽略了其他非正确标签的差异,导致学习到的特征比较散,对这个问题的优化有很多,如L-Softmax、SM-Softmax、AM-Softmax等。

Log Softmax:,解决了 Softmax 函数计算数值稳定性不高,可能报 NaN的错误;同时省了一个指数计算,省了一个除法,数值上相对稳定一些。

 

参考:https://zhuanlan.zhihu.com/p/25723112

https://blog.csdn.net/bqw18744018044/article/details/83120425 

https://blog.csdn.net/u014380165/article/details/77284921 

卷积神经网络系列之softmax loss对输入的求导推导_AI之路-CSDN博客_卷积神经网络推导

https://zhuanlan.zhihu.com/p/138117543(softmax+交叉熵,在多标签分类中的应用)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值