当前位置: 代码迷 >> 综合 >> SoftMax推导,SoftMax-Loss推导
  详细解决方案

SoftMax推导,SoftMax-Loss推导

热度:94   发布时间:2023-10-27 03:09:45.0

在这里插入图片描述
全连接层的输入是最后一个卷积层的输出, 假设是100x4x4(通道数chanel = 100, featureMap = 4x4)的tensor, 输入到全连接层之前需要平展为N*1的向量(N=100x4x4), 这就是X.
W是全连接层的参数, T是类别数.得到一个Tx1向量,其值为(-无穷, +无穷).
将Logits输入到SoftMax层,输出向量prob(Tx1), 其值为此样本属于每个类的概率,范围为(0, 1).

SoftMax公式:

------------------------------- 在这里插入图片描述
对于某样本A,3分类(类别1,2,3)问题,样本的真实的类别是3(T=3), WxX是一个3x1的向量, aj表示这个向量的第j个值.

SoftMax Loss:


在这里插入图片描述
Sj是Softmax的输出向量的S的第j个值,是此样本属于第j个类别的概率.
Yi是一个1xT的向量,只有一个值是1, 其他全是0. 真实类别处值为1.假设为yb.
所以
在这里插入图片描述

SoftMax关于输入的导数:

在这里插入图片描述
DjSi是Si关于aj的导数.
当i==j时:
在这里插入图片描述
当i != j时:
DjSi = -SjSi

即:

在这里插入图片描述

SoftMax Loss对输入的求导:

模型在训练的时候先进行前向计算,得到在当前模型参数下的预测值,也就是Sj;
然后计算这次预测的损失,也就是下式的L;
然后反向传递损失并计算梯度(这个梯度包含损失对参数的梯度和对该层输入的梯度);
最后再正向更新参数。
在这里插入图片描述
推导如下:
在这里插入图片描述

即:

在这里插入图片描述
因此假设一个5分类任务,一张图像经过softmax层后得到的概率向量p是[0.1,0.2,0.25,0.4,0.05],真实标签y是[0,0,1,0,0],那么损失回传时该层得到的梯度就是p-y=[0.1,0.2,-0.75,0.4,0.05]。这个梯度就指导网络在下一次forward的时候更新该层的权重参数。

  相关解决方案