文章目录

  • 一、 Softmax 介绍
    • 1.1 Softmax 的形式
    • 1.2 一些问题
      • 1.2.1 为什么训练阶段需要 Softmax 层?推理阶段通常不使用 Softmax 层?
  • 二、交叉熵损失(CrossEntropy Loss)
    • 2.0 信息熵
      • 2.0.0 定义:
      • 2.0.1 KL散度 (Kullback–Leibler divergence)
      • 2.0.2 JS 散度(Jensen-Shannon divergence)
      • 2.0.3 KL散度和JS散度存在的问题:
    • 2.1 交叉熵定义
      • 2.1.1 为什么交叉熵可以作为**预测值和真实标签值的距离度量**?
    • 2.2 交叉熵与 KL散度的关系
      • 2.2.1 为什么使用交叉熵用在分类任务中?
    • 2.3 在机器学习中的交叉熵
      • 2.3.1 二分类的交叉熵损失
    • 2.4 对交叉熵求导
      • 2.4.1 计算 ∂Loss∂aj\frac{\partial Loss}{\partial {a_j}}∂aj​∂Loss​
      • 2.4.2 计算 ∂aj∂zi\frac{\partial {a_j}}{\partial z_i}∂zi​∂aj​​
        • 1.当i=j时,有1. 当 i=j 时,有1.当i=j时,有
        • 2.当i≠j时,有2. 当 i \neq j 时,有2.当i​=j时,有
      • 2.4.3 计算 ∂Loss∂zj\frac{\partial Loss}{\partial {z_j}}∂zj​∂Loss​
    • 2.5 代码实现
      • 2.5.1 python 代码实现
      • 2.5.2 torch 代码实现 nn.NLLLoss()
      • 2.5.3 torch 代码实现 nn.CrossEntropyLoss()
  • 参考资料

一、 Softmax 介绍

1.1 Softmax 的形式

若 x=[x1⋯xi⋯xn]x = \left[ \begin{matrix} x_1 \\ \cdots \\ x_i \\ \cdots \\x_n \end{matrix} \right]x=⎣⎢⎢⎢⎢⎡​x1​⋯xi​⋯xn​​⎦⎥⎥⎥⎥⎤​,
那么 Softmax(x)=[ex1∑kexk⋯exi∑kexk⋯exn∑kexk]Softmax(x) = \left[ \begin{matrix} \frac{e^{x_1}}{\sum_k e^{x_k}} \\ \cdots \\ \frac{e^{x_i}}{\sum_k e^{x_k}} \\ \cdots \\\frac{e^{x_n}}{\sum_k e^{x_k}} \end{matrix} \right]Softmax(x)=⎣⎢⎢⎢⎢⎢⎡​∑k​exk​ex1​​⋯∑k​exk​exi​​⋯∑k​exk​exn​​​⎦⎥⎥⎥⎥⎥⎤​

若 y=Softmax(x)y = Softmax(x)y=Softmax(x), 那么对于任意 yiy_iyi​ 有以下特点:

  1. yi∈(0,1)y_i \in (0,1)yi​∈(0,1),且 ∑iyi=1\sum_i y_i = 1∑i​yi​=1, ⟹\Longrightarrow⟹ yi可以看做是类i的概率y_i 可以看做是 类 i 的概率yi​可以看做是类i的概率
  2. 在 计算任意一个 yiy_iyi​ 时, 都会用到所有的 xix_ixi​
  3. 会产生马太效应 ⇒\Rightarrow⇒ “大的更大, 小的更小” ⇒\Rightarrow⇒ 以 eee 为底数, exe^xex 会随着 xxx 的增大而急剧增大。

1.2 一些问题

1.2.1 为什么训练阶段需要 Softmax 层?推理阶段通常不使用 Softmax 层?

  • 相同的问题:
    由于 Softmax 函数具有保序性,在推理时,去掉 Softmax 也总能找到最大概率的类别,去掉与否有什么差别

  • 在推理阶段 为 样本 XXX 分配最优的类别 YYY 实际上有三类模型,对应三种层次的需求。
    {生成模型判别模型判别函数\begin{cases} 生成模型\\ 判别模型 \\ 判别函数 \end{cases}⎩⎪⎨⎪⎧​生成模型判别模型判别函数​

    1. 生成模型

      • 不仅关心 给定XXX 时 YYY 的概率分布;还关心输入变量的分布。
      • 建模的是 X和Y的联合分布P(XY)X 和 Y 的联合分布 P(XY)X和Y的联合分布P(XY); 在决策时 通过 BayesBayesBayes 定理获取条件分布P(Y∣X)P(Y|X)P(Y∣X)
        • 决策结果
        • 条件概率分布
        • 输入的边际分布
    2. 判别模型

      • 只关心 给定XXX 时 YYY 的概率分布;不关心输入变量的分布。
      • 建模的是 条件分布 $P(Y|X)。
        • 不仅可以获得一个 决策结果(给定XXX 时,最优的 YYY)
        • 还可以得到模型给出的 条件分布(模型决策结果的置信度)
    3. 判别函数

      • 不关心 给定XXX 时 YYY 的概率分布;只关心输入和输出的一种对应关系。
      • 建模的是 判定函数Y=f(x)判定函数 Y= f(x)判定函数Y=f(x)
        • 只能得到 Input和OutputInput 和 OutputInput和Output之间的对应关系
        • 无法获得任何其他信息
      • 在分类场景中:只得到一个分类的决策边界。
  • 解答:
    SoftmaxSoftmaxSoftmax 函数一般对应判别函数
    将SoftmaxSoftmaxSoftmax 作为 LossLossLoss 的一部分,可以认为你得到一个判别模型。
    如果不关心模型决策的条件概率分布,那么去掉SoftmaxSoftmaxSoftmax 没有什么差别。

二、交叉熵损失(CrossEntropy Loss)

2.0 信息熵

  1. 熵 是关于不确定性的数学描述。
  2. 信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大。
  3. 所以 信息的量度应该依赖于概率分布 p(x)p(x)p(x)
  • 性质:
  1. 单调性:发生概率越高的事件,其携带的信息量越低;
  2. 非负性:信息熵可以看作为一种广度量,非负性是一种合理的必然;
  3. 累加性:即多随机事件同时发生存在的总不确定性的量度是可以表示为各事件不确定性的量度的和,这也是广度量的一种体现。

2.0.0 定义:

  1. 熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度)、分散程度、混乱程度(不一致程度)。
  2. 系统内样本分布越分散(或者说分布越平均),信息熵就越大
  3. 分布越有序(或者说分布越集中),信息熵就越小。

  • 数学公式表示:
    H(X)=−∑i=1np(xi)logp(xi)H(X) = - \sum_{i=1}^n p(x_i)\ log\ p(x_i)H(X)=−i=1∑n​p(xi​) log p(xi​)

    • 概率取负对数表示了一种可能事件发生时候携带出的信息量
    • 把各种可能表示出的信息量乘以其发生的概率之后求和,就表示了整个系统所有信息量的一种期望值

2.0.1 KL散度 (Kullback–Leibler divergence)

  • 作用:

    • 用于衡量两个概率分布之间的差异。值越小,表示两个分布越接近。
  • 数学形式
    • 离散形式:DKL(p∣∣q)=∑i=1np(xi)log(p(xi)q(xi))D_{KL}(p||q) = \sum_{i=1}^n p(x_i) log(\frac{p(x_i)}{q(x_i)})DKL​(p∣∣q)=i=1∑n​p(xi​)log(q(xi​)p(xi​)​)
    • 连续形式:DKL(A∣∣B)=∫a(x)log(a(x)b(x))D_{KL}(A||B) = \int a(x) log(\frac{a(x)}{b(x)})DKL​(A∣∣B)=∫a(x)log(b(x)a(x)​)
  • 特点
    1. 非对称性 KL(p∣∣q)≠KL(q∣∣p)KL(p || q) \neq KL(q || p)KL(p∣∣q)​=KL(q∣∣p),KL散度尽管被用来度量两个分布的相似度或者说距离,但是KL散度本身不是距离。
    2. 非负性,【当 p(x)和q(x)p(x) 和 q(x)p(x)和q(x)两个分部完全相同时,其值=0,】
    3. 不满足三角不等式性

本质上,KL散度度量的是两者之间的信息损失,而不是两者之间的距离。

2.0.2 JS 散度(Jensen-Shannon divergence)

  • JS散度度量两个概率分布的差异度,它基于KL散度的变体,
  • 解决了KL散度非对称的问题
  • 其取值是 0 到 1 之间。
    定义如下:
    JS(p∣∣q)=12KL(p,p+q2)+12KL(q,p+q2)J S ( p ∣ ∣ q ) = \frac{1}{2} KL( p , \frac{p + q}{ 2 }) + \frac{1}{2} K L ( q , \frac{p + q}{ 2 } ) JS(p∣∣q)=21​KL(p,2p+q​)+21​KL(q,2p+q​)

2.0.3 KL散度和JS散度存在的问题: