Improving the way neural networks learn--Softmax

说在前面的话:其实就是在翻译neural networks and deep learning,不如也改名叫×××阅读笔记好了😂。


之前提到解决神经网络学习率下降问题的两个大方向:更改activation function和更改cost function,原本我以为softmax属于前一种方向,稍作了解后才发现并没有这么简单。

Definition

Softmax确实是对activation function的一种修改(但貌似仅仅是在output layer使用)它的定义如下:

softmax

作为一种全新的activation function,可以看到随着输入z的增加,a也会增加,与此同时其他output就会相应减少。同时,it is obvious that the output activations always sum up to 1,因此这些输出可以看作一种概率分布,即输出aLj是数据为j class的概率。要知道sigmoid function的所有输出之和并不一定是1,所以使用softmax的output layer的输出也更加直观、容易理解。

Properties

Monotonicity:随着输入z的增长,输出a也随之增长。

Non-locality:输出a依赖于所有的输入weights而不仅仅是与之相连的neurons之间的weights。

Reversibility:可以算出
$$
z^L_j=\ln a^L_j+C
$$

‘ITS’ cost function

但仅仅做上面的修改并不足以解决learning rate的问题,模仿之前的思路,既然sigmoid和cross-entropy搭配使用效果较好,何不为softmax设计一款cost function呢?于是有了log-likelihood cost function:
$$
C≡-\ln a^L_y
$$
这里y代表着desired output类的编号,在我们的神经网络中即为0、1、2……9。可以简单验证一下,C始终非负,且a越接近1,cost就越接近0;反之cost呈指数级增长(应该是指数级吧),满足cost function的基本要求。

C分别对weight、bias求导,有如下结果(我没有算)

gradient

结果和之前sigmoid+cross-entropy一样,又巧妙解决了learning rate下降的问题。

Origin of its name

考虑如下公式
$$
a^L=\frac{e^{cz^L}}{\sum_ke^{cz^L}}
$$
显然,当c=1是它就是softmax。现在令c→∞,会发现a是有界的,值域是[0,1],c=1时的函数——softmax是

“softened” version of the maximum function

从这张图就更加显而易见了

name

Others

sigmoid+cross-entropy和softmax+loglikelihood function都是可用的方法,两者效果都很好,如果想把输出表示成possibility distribution则选择后者。

0%