最后更新于
最后更新于
首先声明变量符号. 以下所有表示都是针对单个样本, 多样本(batch)只需将向量表示扩展为矩阵表示即可.
对于多分类问题, 假设有个分类, 则真实的标签向量是一个One-Hot向量, 其中是真实类别对应的索引, 则对于有:
另外, 将softmax函数的入参记为, 表示经过前面结构转换后的输出值, softmax函数的作用就是将这个值归一化后输出, 因此每个类别的对应的这个输出值, 可以作为预测概率, 所有类别的输出之和为1. 将softmax函数的输出向量记为:
对于其中的每个元素, 就是最后的输出值, 有:
其中连加符号的索引记号用只是因为被占用了, 在这里特指第个元素.
对于单个样本, 其交叉熵以向量的形式表示为:
其中只有, 其余的. softmax和交叉熵经常一起出现, 因此这种组合的导数在后向传播中经常被使用的, 需要理解深刻.
这里说的导数, 即偏导数, 它本身也是一个长度为的向量, 每个元素是最后的损失对于对应的导数. 将对每个元素求导, 需要分为两种情况.
情况一,
这一项比较特殊, 因为它对应的是真实类别, 推导如下:
因此综上推导过程, softmax函数结合交叉熵损失:
用向量表示为:
情况二,
此时的.