全连接层的输入是最后一个卷积层的输出, 假设是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的时候更新该层的权重参数。