神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导

本文深入解析了Softmax与CrossEntropyLoss在深度学习分类任务中的应用,详细推导了该组合的梯度计算过程,并揭示了其在反向传播中的巧妙之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

传统机器学习中两大经典任务就是回归分类。分类在深度学习中也很常见,令我印象最深的是图像分类。当然,在NLP中,分类也无处不在。从RNN与其变体,到Transformer、Bert等预训练模型,只要涉及到在词表挑选单词,就可以使用分类任务的思路来解决。在深度学习模型中,区分回归还是分类,往往只需要看最后一层的激活函数以及损失函数。这里有一个定式:凡是采用 S o f t m a x + C r o s s E n t r o p y L o s s \mathrm{Softmax+CrossEntropy Loss} Softmax+CrossEntropyLoss就一定是在分类。本文主要对这个组合的梯度进行计算,证明其巧妙之处,以加深自己对分类问题及其方法的理解

1 关于Softmax

1.1 Softmax的形式

若 x = [ x 1 . . . x i . . . x n ] , 那 么 S o f t m a x ( x ) = [ e x 1 ∑ k e x k . . . e x i ∑ k e x k . . . e x n ∑ k e x k ] 若\bm{x}=\begin{bmatrix} x_1\\ ...\\ x_i\\ ...\\ x_n\\ \end{bmatrix},那么\mathrm{Softmax}(\bm{x})=\begin{bmatrix} \frac{e^{x_1}}{\sum_ke^{x_k}}\\ ...\\ \frac{e^{x_i}}{\sum_ke^{x_k}}\\ ...\\ \frac{e^{x_n}}{\sum_ke^{x_k}}\\ \end{bmatrix} x=x1...xi...xn,Softmax(x)=kexkex1...kexkexi...kexkexn

y = S o f t m a x ( x ) \bm{y}=\mathrm{Softmax}(\bm{x}) y=Softmax(x),那么对于任意 y i y_i yi有以下特点:

  1. y i ∈ ( 0 , 1 ) y_i\in(0,1) yi(0,1),且 ∑ i y i = 1 \sum_iy_i=1 iyi=1,所以可以 y i y_i yi当成属于类 i i i的概率
  2. 在计算任意一个 y i y_i yi时,都会用到所有 x i x_i xi
  3. 在计算任意一个 y i y_i yi时,都会以 e e e为底数,我们知道 e x e^x ex会随着 x x x的增大而急剧增大,这就会产生一种“大的更大,小的更小”的马太效应

1.2 一些其他细节

  1. 为什么叫这个名字?
    其实 S o f t m a x \mathrm{Softmax} Softmax就是 s o f t \mathrm{soft} soft版本的 m a x \mathrm{max} max。我们平时所说的 m a x \mathrm{max} max,就是从多个值中选出一个最大的,这其实是 H a r d m a x \mathrm{Hardmax} Hardmax。而 S o f t m a x \mathrm{Softmax} Softmax分别给这些值一个相应的概率,另外由于其有马太效应,数值相差越大,概率相差也越大。如果给其前面加一个 l o g \mathrm{log} log,那么就是 m a x \mathrm{max} max的一个可微的近似
  2. 关于 S o f t m a x \mathrm{Softmax} Softmax其实还有很多细节,比如数值稳定性问题,本文就不一一展开讲了,可以参考Softmax vs. Softmax-Loss: Numerical Stability 这篇文章,是一篇不错的延伸

2 关于CrossEntropy Loss

2.1 CrossEntropy

给定两个概率分布 p , q p,q p,q,其交叉熵为:

H ( p , q ) = − ∑ x p ( x ) l o g q ( x ) H(p,q)=-\sum_xp(x)\mathrm{log}q(x) H(p,q)=xp(x)logq(x)

它刻画了两个概率分布之间的距离。其中 p p p代表正确分布, q q q代表的是预测分布。交叉熵越小,两个概率的分布越接近

2.2 CrossEntropy Loss

在分类问题中,提出了交叉熵损失。形式如同:

C = − ∑ i y i l o g y i ^ C=-\sum_iy_i\mathrm{log}\hat{y_i} C=iyilogyi^

其中, y i y_i yi为真实标签, y i ^ \hat{y_i} yi^为预测结果中对应的分布。在本篇文章中, y i ^ \hat{y_i} yi^就对应了网络最后一层第 i i i个位置的输出 a i a_i ai,也就是 e z i ∑ k N e z k \frac{e^{z_i}}{\sum_k^N e^{z_k}}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值