> 文章列表 > Softmax和Cross Entropy Loss在分类问题中的作用

Softmax和Cross Entropy Loss在分类问题中的作用

Softmax和Cross Entropy Loss在分类问题中的作用

在这里插入图片描述

  本文以三分类神经网络为例,讲解Softmax和Cross Entropy Loss在分类问题中的作用。

  首先,对类别标签进行一位有效编码

y=[y1,y2,y3]Ty=[y_{1},y_{2},y_{3}]^{T}y=[y1,y2,y3]T

yi={1,if(i=y)0,otherwisey_{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=[o1,o2,o3]O=[o_{1},o_{2},o_{3}]O=[o1,o2,o3]进行Softmax运算,输出匹配概率(非负,和为1):

y^=softmax(o)\\hat{y}=softmax(o)y^=softmax(o)

y^i=exp(oi)∑k=1nexp(ok)\\hat{y}_{i}=\\frac{exp(o_{i})}{\\sum_{k=1}^{n}exp(o_{k})}y^i=k=1nexp(ok)exp(oi)

(本文为333分类,所以上式中的n=3n=3n=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])

  然后,对真实值yyy和输出值y^\\hat{y}y^做Cross Entropy Loss(交叉熵损失)计算,将其作为损失值:

l(y,y^)=−∑i=1nyilogy^i=−logy^yl(y,\\hat{y})=-\\sum_{i=1}^{n}y_{i}log\\hat{y}_{i}=-log\\hat{y}_{y}l(y,y^)=i=1nyilogy^i=logy^y

(由于真实值yyy是一个一位有效编码的向量,即只在真实类别处的值为111,其余类别处的值为000,所以上述交叉熵损失计算可简化为:某个类别的损失值 === 输出值y^\\hat{y}y^中该类别对应概率值的−log-loglog值。即在分类问题中,不关心非正确类的预测值,只关心正确类的预测值)