上次讲了logistic回归模型,常用于二分类,今天梳理的softmax loss则常用于多分类场景,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类。
假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是:
softmax就是这么一个简单的式子,接下来讲loss部分:
loss函数选取交叉熵公式,
由于多分类的真实值通常是oneShot形式,最终loss函数可简化为
Loss = -lnaj (j为实际预测的分类对应的softmax预测值)
aj = wj1 o1 + wj2 o2 + wj3 * o3… (o1,o2,o3为特征量)
loss’ = - 1 / aj
因为我们需要对全部wij求导,所以需要对全部zj求导:
loss’/zi’ = loss’ (aj对zi求导) = - 1/aj (aj’ / zi’)
aj = e^j / (e^k累加)
这边分两种情况,i = j 及 j != j
求导分别为:
乘以- 1 / aj后,得到Loss函数的对zi的求导分别为ai, ai-1
eg: 如果预测的softmax值是[0.0903,0.2447,0.665],如果这个样本正确的分类是第二个的话,那么计算出来的偏导就是[0.0903,0.2447-1,0.665]=[0.0903,-0.7553,0.665]