目录
(1)softmax
对于一个多分类问题,经过隐藏层的计算(式1),输出是对应类别的得分。
(1)
式中,oi代表对应第i个类别的得分,x代表输入,wi与bi为网络权重与偏置参数,均为学习的参数。假设要解决一个花的四分类问题,四个类别分别为郁金香、玫瑰、向日葵、小雏菊。
当输入类别为向日葵时,可计算此时的输入对应四个类别的分别的得分o1、o2、o3、o4。假设由公式(1)计算得分如下表1:
o1(郁金香) | o2(玫瑰) | o3(向日葵) | o4(小雏菊) |
1 | 2 | 4 | 3 |
由表可知,此时的输入属于第三类的得分最高,但我们希望得到的是一个概率,此时引入softmax算子,计算如式2。
(2)
式中, y^i对应第i个类别的预测的概率,在0-1之间。分子为对应第i个类别的得分求指数,分母为所有类别求指数再求和。此处指数的作用是可以进一步扩大第i类与其他类别间的差距。将i=1~4带入式2,分别计算对应类别的概率。
经过计算,由softmax可将对应类别的得分转换为概率如表2:
(郁金香) | (玫瑰) | (向日葵) | (小雏菊) |
0.0321 | 0.0871 | 0.6439 | 0.2369 |
由此可知,向日葵的预测概率是最大的。但向日葵0.6439的概率相对比小雏菊0.2369的概率差别并不是很大,由此判断类别是向日葵还没有太高的置信度。接下来将根据损失函数,进一步更新网络参数,使得向日葵预测的概率更高。
总结,softmax将类别的得分转换为概率分布,预测类别的置信度,并通过指数进一步扩大类别间的差异。
(2)one-hot编码
先引入one-hot编码,独热编码是指给一个类别长度的向量,对某一类为1,其余类别为0 。其实就是打标签,如表3,由于训练过程是看得到标签,因此针对向日葵的标签进行训练。
郁金香 | 玫瑰 | 向日葵 | 小雏菊 |
[1,0,0,0] | [0,1,0,0] | [y1,y2,y3,y4] [0,0,1,0] | [0,0,0,1] |
(3)交叉熵cross entropy
交叉熵用于衡量两个概率分布之间的差异,两个分布差异越大,交叉熵损失越大,计算公式如式(3),此处用交叉熵衡量预测概率(softmax预测概率 )与实际类别(one-hot编码y1、y2、y3、y4)的差异,并通过梯度反向传播优化网络参数。目标就是使得预测概率与实际类别的差异最小化。
由one-hot编码,每个类别对应的位置为1,因此对于第三个类别向日葵来说,只有y3=1,损失如式(4)。
带入 ,并对o3求导:
注:
由此可知,梯度就是预测概率与真是概率的区别。
从另一个角度去看交叉熵,
此时真是标签y3=1,当预测概率 越接近1,此时损失越小,而当预测概率 靠近0,损失越大。
总结,交叉熵关注预测正确类别的个数,目标是预测正确的概率足够大,另外也可从 的形状去理解损失。