动手学深度学习——softmax与分类模型

softmax基本概念

softmax是单层神经网络,与线性回归相同,通常用于离散的分类问题。掌握softmax需要掌握模型数据集损失函数优化函数四个方面。

  1. softmax的使用场景
    softmax一般用于离散分类问题,使用softmax主要解决两个问题:
    (1)不采用softmax层直接使用输出层会使得输出值的范围不确定,难以通过直观意义确定输出数值的意义。
    (2)数据集的真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。

  2. softmax模型
    在这里插入图片描述
    注:上述图片引自https://segmentfault.com/a/1190000017320763

如上图所示,softmax是单层神经网络,其主要作用在于将输出值再通过softmax运算符(softmax operator)进行转换,使其变为所有值为正且和为1的概率分布。转换后,要知道分类后的结果只需找到最大的概率值即可。
z ^ 1 = e 1 z / k = 1 K e k z , z ^ 2 = e 2 z / k = 1 K e k z , . . . , z ^ K = e K z / k = 1 K e k z \hat{z}_{1} = e_{1}^{z} /\sum_{k=1}^Ke_{k}^{z} , \hat{z}_{2} = e_{2}^{z} /\sum_{k=1}^Ke_{k}^{z},..., \hat{z}_{K} = e_{K}^{z} /\sum_{k=1}^Ke_{k}^{z}
因此,目标函数转换成为:
a r g   m a x z ^ arg \ max\hat{\boldsymbol{z}}
3. 损失函数
对于softmax而言,若采用均方差函数作为损失函数,则要求过于严格,导致不必要的资源浪费。对于离散分类问题而言,最重要的在于对于分类正确的预测值显著大于其余预测值即可。改善该问题的一个方法就是使用更适合衡量两个概率分布差异的测量函数。其中,交叉熵(cross entropy)是一个常用的衡量方法:
H ( z ( i ) , z ^ ( i ) ) = j = 1 q z j ( i ) log z ^ j ( i ) H\left(\boldsymbol{z}^{(i)}, \hat{\boldsymbol{z}}^{(i)}\right)=-\sum_{j=1}^{q} z_{j}^{(i)} \log \hat{z}_{j}^{(i)}
假设每次迭代的训练数据样本数量为 N N ,则交叉熵损失函数定义为:
  l o s s = ( 1 / N ) i = 1 N H ( z ( i ) , z ^ ( i ) ) \ loss= (1/N)\sum_{i=1}^{N}H\left(\boldsymbol{z}^{(i)}, \hat{\boldsymbol{z}}^{(i)}\right)
最小化交叉熵损失函数等价于最大化训练数据集所有标签类别的联合预测概率。
对于交叉熵的理解,本文举一个小例子: [^1]
假如有一个三分类问题,其采用模型的预测概率和真实的标签如下表所示:
在这里插入图片描述
根据交叉熵损失的计算公式可得到:
在这里插入图片描述
[^1]:https://zhuanlan.zhihu.com/p/35709485

发布了19 篇原创文章 · 获赞 17 · 访问量 1467

猜你喜欢

转载自blog.csdn.net/weixin_43839651/article/details/104315195