softmax函数在机器学习中是常用的多分类器,特别是在卷积神经网络中,最后的一层经常都是使用softmax分类器进行多类别分类任务。虽然softmax看上去相对比较简单,但是其实其中蕴含的数学推导还是比较复杂的,特别是对于数学不太好的同学。这篇文章主要就是结合自己学习《神经网络与深度学习》的一些笔记和体会。其中很多公式部分参考了《神经网络与深度学习》,
如有不恰当的地方,欢迎批评指正。
softmax
函数是logistic函数的一般形式,是将分类问题转化为概率问题,其实说白了,就是求解统计所有可能的概率,然后概率最大的即认为为该类别。首先
直接建立多类线性分类器。假设
y
=
{
1
,
· · ·
, C
}
共
C
个类别,首先定义C个判别函数。
这里W
c
为类
c
的权重向量。
这样,对于空间中的一个点 x ,如果存在类别 c ,对于所有的其他类别 c ˜( w T c x ̸ = c ) 都满足 f c ( x ) > f c ˜ ( x ) ,那么 x 属于类别 c 。相应的分类函数可以表示为:
这样,对于空间中的一个点 x ,如果存在类别 c ,对于所有的其他类别 c ˜( w T c x ̸ = c ) 都满足 f c ( x ) > f c ˜ ( x ) ,那么 x 属于类别 c 。相应的分类函数可以表示为:
当
C
= 2 时,就是Logistics二类分类器,
SoftMax
回归是
Logistic
回归的多类推广。
多类线性分类函数的参数 w 有很多种优化算法。这里我们介绍一种常用的学习算法: SoftMax 回归 。在 SoftMax 回归中,机器学习模型预测目标为每一个类别的后验概率。这就需要用到 softmax 函数。
多类线性分类函数的参数 w 有很多种优化算法。这里我们介绍一种常用的学习算法: SoftMax 回归 。在 SoftMax 回归中,机器学习模型预测目标为每一个类别的后验概率。这就需要用到 softmax 函数。
利用 softmax函数,我们定义目标类别 y = c的后验概率为:
对于样本
(
x
, y
)
,输出目标
y
=
{
1
,
· · ·
, C
}
,我们用
C
维的
one-hot
向量
y
来表示输出目标。对于类别
c
,
这里,
I
()
是指示函数。
同时,我们将公式
3.59
重新定义一下,直接输出
k
维向量
其中,
W
= [
w
1
,
· · ·
,
w
C
]
是
C
个类对应权重向量组成的矩阵。
y
ˆ
的第
c
维的值是第
c
类的预测后验概率。其中,
z
ˆ =
W
T
x
,为
softmax
函数的输入向量。
给定 N 给样本 ( x ( i ) , y ( i ) ) , 1 ≤ i ≤ N ,我们使用交叉熵损失函数,模型在训练集的风险函数为:
给定 N 给样本 ( x ( i ) , y ( i ) ) , 1 ≤ i ≤ N ,我们使用交叉熵损失函数,模型在训练集的风险函数为:
采样梯度下降法,我们要计算
J
(
W
)
关于
W
的梯度。首先,我们列下要用到的公式。
1. softmax
函数的导数为
下面讲述的是关于softmax的导数求法, 对于 K 个标量 x 1 , · · · , x K , softmax 函数定义为
这样,我们可以将
K
个变量
x
1
,
· · ·
, x
K
转换为一个分布:
z
1
,
· · ·
, z
K
,满足
当
softmax
函数的输入为
K
维向量
x
时
其中,
1¯
K
= [1
,
· · ·
,
1]
K
×
1
是
K
维的全
1
向量