逻辑回归可生成介于0和1之间的小数。例如,某电子邮件分类器的逻辑回归输出值为0.8,表明电子邮件是垃圾邮件的概率为80%,不是垃圾邮件的概率为20%。很明显,这封电子邮件是垃圾邮件与不是垃圾邮件的概率之和为1。
在处理多元分类中,Softmax将逻辑回归的思想延伸到多类别领域。
在多类别问题中,Softmax为每个类别分配一个小数形式的概率,介于0到1之间,并且这些概率的和必须是1。
Softmax 层实际上是通过Softmax方程来实现,把y的值经过运算,映射到多分类问题中属于每个类别的概率值:
其计算公式如下:
p
i
=
e
(
y
i
)
∑
k
=
1
c
e
y
k
p_i=\frac{e^{(y_i)}}{\sum_{k=1}^ce^{y_k}}
pi=∑k=1ceyke(yi)
这里的 y k y_k yk指的是所有的类别
交叉熵
H
(
p
,
q
)
=
−
∑
x
p
(
x
)
l
o
g
(
q
(
x
)
)
H(p,q)=-\sum_xp(x)log(q(x))
H(p,q)=−x∑p(x)log(q(x))
刻画的是两个概率分布之间的距离,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近,损失越低。对于机器学习中的多分类问题,通常用交叉熵做为损失函数。
下面来看一个交叉熵计算的例子:
假设有一个3分类问题,某个样例的正确答案是(1,0,0),即它属于第一个类别。甲模型经过softmax回归之后的预测答案是(0.5,0.2,0.3),乙模型经过softmax回归之后的预测答案是(0.7,0.1,0.2)。它们俩哪一个模型预测的更好一些呢(更接近正确答案)?
通过下面交叉熵的计算可以看到,乙模型的预测更好:
于是,多分类的损失函数为:
L
o
s
s
=
−
1
n
∑
i
=
1
n
y
i
l
o
g
(
y
^
i
)
Loss=-\frac 1 n \sum_{i=1}^ny_ilog(\hat y_i)
Loss=−n1i=1∑nyilog(y^i)