0%

Softmax Regression 总结


Softmax Regression

使用神经网络进行多分类任务时,通常在最后一层会使用一个softmax层,个人感觉它与sigmoid函数类似,都是将结果转变成一个类似概率的东西, 这样会更加有利于计算当前损失,提升模型学习的效果。

首先对于一个输入$a^{[L-1]}$,先线性运算,

前面的操作每一层都一样,但是激活函数就不一样了,

首先将输出转成$t$,这样能够保证所有数值不为负,然而以它们在总和中所占的比例,作为它们当前的概率, 也就是$a^{[L]_i}$就是分类为第$i$个分类的概率。

举例,对于一个$z^{[L]}$取值如下,

求$t$为,

那么$a^{[L]}$为,

这里的到的$a^{[L]}$就可以看作一个概率值。


Loss_function:

由于softmax可以看成是Logistic Regression的推广,那么这里对损失函数的计算也对照Logistic Regression来推。

Logistic Regression的代价函数,这里把上面的$a^{[L]}$写为$\hat y$:

首先,考虑单个样本,那么在Logistic Regression中单个样本的概率函数就是,

同样的,在softmax中单个样本的概率函数以同样的形式可以写为,

进行对数似然,

改为最小化似然函数,加上一个负号,

那么现在就可以考虑多样本输入的情况,直接在前面加上一个求和就行,


梯度

代价函数就是上面的负对数似然,同样先考虑单样本,

将$\hat y_j$换一下,忽略上标,

先求一个$z_i$的导数,

所以,对于一个样本的导数就可以写为,

当然,多个样本的形式也和上面一模一样,所以反向传播时,其实计算是十分简单的。

注:

在cs231n课程里面,提到这里还有一个地方需要注意,因为中间会去求e的幂次, 这很容易会造成上溢,所以通常对这个地方要做一个额外的处理,

这里的$C$,一般取值为,

那么为什么要叫做softmax呢?

它其实对应的是hard maxhard max的操作就是直接将$z^{[L]}$按照取值大小, 直接硬转为0、1,所以这里取了一个soft