本文以三分类神经网络为例,讲解Softmax和Cross Entropy Loss在分类问题中的作用。
首先,对类别标签进行一位有效编码:
y = [ y 1 , y 2 , y 3 ] T y=[y_{1},y_{2},y_{3}]^{T} y=[y1,y2,y3]T
y i = { 1 , i f ( i = y ) 0 , o t h e r w i s e y_{i}=\left\{\begin{matrix} 1 ,& if (i=y) & \\ 0, & otherwise & \end{matrix}\right. yi={1,0,if(i=y)otherwise
(假设对于猫、狗、马三分类问题,有一张猫的图片,它的标签为 y = [ 1 , 0 , 0 ] y=[1,0,0] y=[1,0,0];有一张狗的图片,它的标签为 y = [ 0 , 1 , 0 ] y=[0,1,0] y=[0,1,0];有一张马的图片,它的标签为 y = [ 0 , 0 , 1 ] y=[0,0,1] y=[0,0,1])
其次,对输出值 O = [ o 1 , o 2 , o 3 ] O=[o_{1},o_{2},o_{3}] O=[o1,o2,o3]进行Softmax运算,输出匹配概率(非负,和为1):
y ^ = s o f t m a x ( o ) \hat{y}=softmax(o) y^=softmax(o)
y ^ i = e x p ( o i ) ∑ k = 1 n e x p ( o k ) \hat{y}_{i}=\frac{exp(o_{i})}{\sum_{k=1}^{n}exp(o_{k})} y^i=∑k=1nexp(ok)exp(oi)
(本文为 3 3 3分类,所以上式中的 n = 3 n=3 n=3,将猫的图片输入网络,输出结果可能为 y ^ = [ 0.6 , 0.15 , 0.25 ] \hat{y}=[0.6,0.15,0.25] y^=[0.6,0.15,0.25];将狗的图片输入网络,输出结果可能为 y ^ = [ 0.15 , 0.6 , 0.25 ] \hat{y}=[0.15,0.6,0.25] y^=[0.15,0.6,0.25];将马的图片输入网络,输出结果可能为 y ^ = [ 0.15 , 0.25 , 0.6 ] \hat{y}=[0.15,0.25,0.6] y^=[0.15,0.25,0.6])
然后,对真实值 y y y和输出值 y ^ \hat{y} y^做Cross Entropy Loss(交叉熵损失)计算,将其作为损失值:
l ( y , y ^ ) = − ∑ i = 1 n y i l o g y ^ i = − l o g y ^ y l(y,\hat{y})=-\sum_{i=1}^{n}y_{i}log\hat{y}_{i}=-log\hat{y}_{y} l(y,y^)=−i=1∑nyilogy^i=−logy^y
(由于真实值 y y y是一个一位有效编码的向量,即只在真实类别处的值为 1 1 1,其余类别处的值为 0 0 0,所以上述交叉熵损失计算可简化为:某个类别的损失值 = = = 输出值 y ^ \hat{y} y^中该类别对应概率值的 − l o g -log −log值。即在分类问题中,不关心非正确类的预测值,只关心正确类的预测值)