一个简单例子说明白softmax 逻辑回归与 one-hot 编码的关系

1. one-hot 只关注最强分量

看一个简单例子:假设神经网络模型输出三分类结果 ( z 1 , z 2 , z 3 ) (z_1,z_2,z_3) (z1,z2,z3),已知某训练样本 x x x 的类别是 ( 1 , 0 , 0 ) (1,0,0) (1,0,0),模型参数调整前输出 ( 0.9 , 0.7 , 0.5 ) ) (0.9,0.7,0.5)) (0.9,0.7,0.5)),参数调整后输出为 ( 0.9 , 0.6 , 0.6. ) (0.9, 0.6, 0.6.) (0.9,0.6,0.6.).。我们看一下二者的损失函数:

L o s s ( w 1 ) = ∣ 0.9 − 1 ∣ + ∣ 0.7 − 0 ∣ + ∣ 0.3 − 0 ∣ = 1.1 (1) \tag1 Loss(w_1) = |0.9-1|+|0.7-0|+|0.3-0|=1.1 Loss(w1)=0.91+0.70+0.30=1.1(1)
L o s s ( w 2 ) = ∣ 0.9 − 1 ∣ + ∣ 0.5 − 0 ∣ + ∣ 0.5 − 0 ∣ = 1.1 (2) \tag2 Loss(w_2) = |0.9-1|+|0.5-0|+|0.5-0|=1.1 Loss(w2)=0.91+0.50+0.50=1.1(2)

因为采用 one-hot 编码,我们最关心向量分量的最大值和次大值之间的差距,这个差越大越好。虽然 (1)、(2) 两式结果一样,其实我们更看好 (2) 式的结果。因此,我们需要引入一种算法,拉开最大值与其他值之间的差距。

记得有人曾说过,大家都知道世界第一高峰,但是世界第二高峰却被大家忽略。one-hot 也和我们这些俗人一样,只关心最大的分量,其他的一概无视。

2. 去掉最后隐层的 sigmoid 函数

按照上面的例子,如果去掉网络模型最后隐层的 sigmoid 函数后,输出应该是什么呢?看下面方程:
z = σ ( y ) = 1 1 + e − y (3) \tag3 z=\sigma(y)=\frac{1}{1+e^{-y}} z=σ(y)=1+ey1(3)
于是
y = l n ( z 1 − z ) (4) \tag4 y=ln(\frac{z}{1-z}) y=ln(1zz)(4)
可以算出,去掉最后隐层的 sigmoid函数,网络的输出是

z y
(0.9, 0.7, 0.3) (2.20,0.83,-0.85)
(0.9, 0.5, 0.5) (2.20,0.00, 0.00)

从这个表中,我们可以看到,去掉 sigmoid 函数后,第二个结果更好了。这说明原模型最后隐层中的sigmoid函数实际上降低了最大分量和第二大分量的差距,不利于最后的 one-hot 输出。

3. softmax 逻辑回归

one-hot 输出要求分量的值域落在 [0, 1] 范围,于是我们需要把输出结果规范化一下,有人想到在此过程中能否进一步拉大第一名和第二名的距离?当然可以,做变换
u = e y (5) \tag5 u=e^y u=ey(5)
因为,
d e y = e y d y > d y , ( y > 0 ) (6) \tag6 \mathrm{d}e^y=e^y\mathrm{d}y\gt\mathrm{d}y,(y>0) dey=eydy>dy(y>0)(6)
可以断定,这个变换一定能加大第一名和第二名的距离。此外,此变换把自变量的定义域 ( − ∞ , + ∞ ) (-\infty, +\infty) (,+) 变换到 ( 0 , + ∞ ) (0, +\infty) (0,+),适合最归一化操作。于是我们得到 softmax 变换公式,
u 1 = e y 1 e y 1 + e y 2 + e y 3 (7) \tag7 u_1 = \frac{e^{y_1}}{e^{y_1}+e^{y_2}+e^{y_3}} u1=ey1+ey2+ey3ey1(7)
u 2 = e y 2 e y 1 + e y 2 + e y 3 (8) \tag8 u_2 = \frac{e^{y_2}}{e^{y_1}+e^{y_2}+e^{y_3}} u2=ey1+ey2+ey3ey2(8)
u 3 = e y 3 e y 1 + e y 2 + e y 3 (9) \tag9 u_3 = \frac{e^{y_3}}{e^{y_1}+e^{y_2}+e^{y_3}} u3=ey1+ey2+ey3ey3(9)
最后我们看一下经过 softmax 变换后的输出结果,

z y u 第一名/第二名
(0.9, 0.7, 0.3) (2.20,0.83,-0.85) (0.77, 0.20, 0.04) 3.85
(0.9, 0.5, 0.5) (2.20,0.00, 0.00) (0.82, 0.09, 0.09) 9.11

显然,经过 softmax 变幻后,第一名和第二名分量之间的差距进一步放大,softmax 变换后结果更接近 one-hot 编码。

4. 一点体会

softmax,和她的名字一样,温柔地提升老大地位。借助这个机制,可以使网络模型更快地输出优质的 one-hot 编码,缩短训练周期。

你可能感兴趣的:(神经网络,深度学习,TensorFlow)