Softmax Regression
使用神经网络进行多分类任务时,通常在最后一层会使用一个softmax
层,个人感觉它与sigmoid函数类似,都是将结果转变成一个类似概率的东西,
这样会更加有利于计算当前损失,提升模型学习的效果。
首先对于一个输入
前面的操作每一层都一样,但是激活函数就不一样了,
首先将输出转成
举例,对于一个
求
那么
这里的到的
Loss_function:
由于softmax
可以看成是Logistic Regression
的推广,那么这里对损失函数的计算也对照Logistic Regression
来推。
Logistic Regression
的代价函数,这里把上面的
首先,考虑单个样本,那么在Logistic Regression
中单个样本的概率函数就是,
同样的,在softmax
中单个样本的概率函数以同样的形式可以写为,
进行对数似然,
改为最小化似然函数,加上一个负号,
那么现在就可以考虑多样本输入的情况,直接在前面加上一个求和就行,
梯度
代价函数就是上面的负对数似然,同样先考虑单样本,
将
先求一个
所以,对于一个样本的导数就可以写为,
当然,多个样本的形式也和上面一模一样,所以反向传播时,其实计算是十分简单的。
注:
在cs231n课程里面,提到这里还有一个地方需要注意,因为中间会去求e的幂次, 这很容易会造成上溢,所以通常对这个地方要做一个额外的处理,
这里的
那么为什么要叫做softmax
呢?
它其实对应的是hard max
,hard max
的操作就是直接将soft
…