softmax神经元
softmax神经元的想法其实就是位神经网络定义一种新式的输出层,开始时和S型神经元一样,首先计算带权输入
z
j
L
=
∑
k
w
j
k
L
a
k
L
−
1
+
b
j
L
z_j^L=\sum_kw_{jk}^La_k^{L-1}+b_j^L
zjL=∑kwjkLakL−1+bjL。不过们这里我们不会使用S型神经元来获得输出。而是在这一层上应用一种叫做softmax函数在
z
j
L
z_j^L
zjL上。根据这个函数,第j个神经元的输出值
a
j
L
a_j^L
ajL就是:
a
j
L
=
e
z
j
L
∑
k
e
z
k
L
(1)
a_j^L=\frac{e^{z_j^L}}{\sum_ke^{z_k^L}} \tag1
ajL=∑kezkLezjL(1)
其中,分母中的求和是在所有输出神经元上进行的。
为了更好地理解softmax函数的作用,可以先试试这个动画,拖动四个滑块来观察输出的变化。
很明显可以发现一个事情:当你增大一个值的时候,它的输出也会相应地增大,同时,其他三个值的输出都会响应的减少。
并且如果仔细观察的话,可以发现增大的量与减小的量之和是相等的,并且所有输出值之和为1!
这一点很容易证明,从定义就可以看出:
∑
j
a
j
L
=
∑
j
e
z
j
L
∑
k
e
z
k
L
=
1
(2)
\sum _j a_j^L=\frac{\sum_j e^{z_j^L}}{\sum_ke^{z_k^L}}=1 \tag2
j∑ajL=∑kezkL∑jezjL=1(2)
所以,如果一个值增加,那么其输出也会增加,其他值的输出就会相应减少增加的量,以保证最后各输出的和为1。
同时,根据定义,我们还可以发现无论怎么改变输入值的大小,所有的输出值都是正的。
将这两点结合起来我们可以看到softmax的输出是一些相加为1的正数的结合。换言之,softmax的输出可以被看做是一个概率分布。
这样的效果非常令人满意,即在数字分类问题中,我们可以将输出看做是网络估计正确数字分类为 j j j的概率。
log-likelihood 损失函数
我们现在已经对柔性最⼤值神经元层有了⼀定的认识。但是我们还没有看到⼀个柔性最⼤值层会怎么样解决学习缓慢问题。为了解决这点,我们先定义一个log-likelihood(对数似然)代价函数。我们使用
x
x
x表示网络的训练输入,
y
y
y表示对应的目标输出。然后关联这个训练输入的对数似然代价函数就是:
C
≡
−
ln
a
y
L
(3)
C \equiv -\ln a_y^L \tag3
C≡−lnayL(3)
例如,对于数字识别问题来说,如果输入为7的图像,那么对应的对数似然函数就是
−
ln
a
7
L
-\ln a_7^L
−lna7L。当网络表现很好的时候,它的输出值
a
7
L
a_7^L
a7L的值就十分接近于1,含义是该数字为7的概率接近
100
%
100\%
100%,这个时候代价函数的值就非常小($\ln 1 $接近于0);当网络表现不好的时候,输出值就会离1比较远,这个时候的输出代价函数就会比较大一点。
那么关于学习缓慢的问题呢?为了分析他,我们首先要完求出C对于权重和偏置的偏导数:
∂
C
∂
b
j
L
=
a
J
L
−
y
j
∂
C
∂
w
j
k
L
=
a
k
L
−
1
(
a
J
L
−
y
j
)
(4)
\begin{aligned} \frac{\partial C}{\partial b_j^L}&=a_J^L-y_j\\ \frac{\partial C}{\partial w_{jk}^L}&=a_k^{L-1}(a_J^L-y_j)\\ \end{aligned} \tag 4
∂bjL∂C∂wjkL∂C=aJL−yj=akL−1(aJL−yj)(4)
这些方程与cross-entropy(交叉熵)得到的方程类似,尽管后者对整个训练样本进行了平均,不过形式还是一致的。正如对于交叉熵的分析一样,这些表达式确保我们不会遇到学习缓慢的问题。
如果对于
cross-entropy损失函数不了解,可以先看一下这篇博客
事实上,把一个具有对数最大似然代价的softmax输出层,看做与一个具有交叉熵代价的S型输出层非常相似,这是很有用的。
本文介绍了一种新的神经网络输出层——softmax神经元,它通过softmax函数产生类似于概率分布的输出。此外,文中还详细解释了log-likelihood损失函数如何避免学习缓慢的问题。
 损失函数&spm=1001.2101.3001.5002&articleId=122564980&d=1&t=3&u=06b2c9f1cc8645c7af1c4e57c7ac05a6)
4673

被折叠的 条评论
为什么被折叠?



