对比线性回归模型其输出为连续值,softmax回归模型的输出则为离散值。
对于像图像类别这样的离散值预测问题,我们可以使用诸如softmax回归在内的分类模型。
一.具体问题
考虑一个简单的图像分类问题,其输入图像的高和宽均为2像素,且色彩为灰度。这样每个像素值都可以用一个标量表示。我们将图像中的4像素分别记为 x 1 x_1 x1, x 2 x_2 x2, x 3 x_3 x3, x 4 x_4 x4。假设训练数据集中图像的真实标签为狗、猫或鸡(假设可以用4像素表示出这3种动物),这些标签分别对应离散值 y 1 y_1 y1, y 2 y_2 y2, y 3 y_3 y3 。我们通常使用离散的数值来表示类别,例如 y 1 = 1 y_1=1 y1=1, y 2 = 2 y_2=2 y2=2, y 3 = 3 y_3=3 y3=3。如此,一张图像的标签为1、2和3这3个数值中的一个。虽然我们仍然可以使用回归模型来进行建模,并将预测值就近定点化到1、2和3这3个离散值之一,但这种连续值到离散值的转化通常会影响到分类质量。因此我们一般使用更加适合离散值输出的模型来解决分类问题。
二.softmax回归模型
softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。因为一共有4种特征和3种输出动物类别,所以权重包含12个标量(带下标的
w
w
w)、偏差包含3个标量(带下标的
b
b
b),且对每个输入计算
o
1
o_1
o1,
o
2
o_2
o2,
o
3
o_3
o3这3个输出:
o
1
=
x
1
w
11
+
x
2
w
21
+
x
3
w
31
+
x
4
w
41
+
b
1
o_1=x_1w_{11}+x_2w_{21}+x_3w_{31}+x_4w_{41}+b_1
o1=x1w11+x2w21+x3w31+x4w41+b1,
o
2
=
x
1
w
12
+
x
2
w
22
+
x
3
w
32
+
x
4
w
42
+
b
2
o_2=x_1w_{12}+x_2w_{22}+x_3w_{32}+x_4w_{42}+b_2
o2=x1w12+x2w22+x3w32+x4w42+b2,
o
3
=
x
1
w
13
+
x
2
w
23
+
x
3
w
33
+
x
4
w
43
+
b
3
o_3=x_1w_{13}+x_2w_{23}+x_3w_{33}+x_4w_{43}+b_3
o3=x1w13+x2w23+x3w33+x4w43+b3,
既然分类问题需要得到离散的预测输出,一个简单的办法是将输出值
o
i
o_i
oi当作预测类别是
i
i
i的置信度,并将值最大的输出所对应的类作为预测输出,即输出
a
r
g
i
m
a
x
o
i
arg_imaxo_i
argimaxoi,例如,如果
o
1
o_1
o1,
o
2
o_2
o2,
o
3
o_3
o3分别为0.1,10,0.1,由于
o
2
o_2
o2最大,那么预测类别为2,其代表猫。
此时出现两个问题:
- 输出值的范围不确定。
- 由于输出值不确定,以及真实标签是离散值,因此不好衡量预测误差。
**softmax运算符(softmax operator)**解决了以上两个问题。
通过数学运算,将输出值变换成正值且和为1的概率分布:
其中
很明显,经过对数处理后,输出值全为正值且
y
^
1
+
y
^
2
+
y
^
3
=
1
\hat{y}_1+\hat{y}_2+\hat{y}_3=1
y^1+y^2+y^3=1。这时候,如果
y
^
2
=
0.8
\hat{y}_2=0.8
y^2=0.8,不管
y
^
1
\hat{y}_1
y^1和
y
^
3
\hat{y}_3
y^3的值是多少,我们都知道图像类别为猫的概率是80%。
三.矢量计算表达式
根据回归模型的定义,我们可以将上文提到的
o
1
o_1
o1,
o
2
o_2
o2,
o
3
o_3
o3的表达式一并写成矢量的形式进行计算。
设高和宽分别为2个像素样本的特征为
输出层的输出为
预测为狗、猫或鸡的概率为
总的softmax回归计算表达式
补充概念:
神经网络图:
在深度学习中,我们可以使用神经网络图直观地表现模型结构。下图使用神经网络图表示softmax回归模型。神经网络图隐去了模型参数权重和偏差。
在所示的神经网络中,输入分别为
x
1
x_1
x1,
x
2
x_2
x2,
x
3
x_3
x3,
x
4
x_4
x4,因此输入层的输入个数为4。输入个数也叫特征数或特征向量维度。同理,该输出层的输出个数为3。
由于输出层的计算依赖全部的输入,也就是说,输出层中的神经元和输入层中各个输入完全连接。因此,这里的输出层又叫全连接层(fully-connected layer)或稠密层(dense layer)。
四.交叉熵损失函数
在上述图像分类的例子里,如果其中一个预测值比其他两个预测值大,那么就可以说明问题了。在衡量误差的时候,平方损失对于分类问题就显得过于严格,例如,
y
^
1
=
y
^
2
=
0.2
\hat{y}_1=\hat{y}_2=0.2
y^1=y^2=0.2比
y
^
1
=
0
\hat{y}_1=0
y^1=0,
y
^
2
=
0.4
\hat{y}_2=0.4
y^2=0.4的损失要小很多,虽然两者都有同样正确的分类预测结果
y
^
3
\hat{y}_3
y^3.
引入概念:交叉熵(cross entropy)
原文解释:
推荐博客:一文搞懂交叉熵在机器学习中的使用
交叉熵损失函数: