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
。相应的分类函数可以表示为:
当
C
= 2 时,就是Logistics二类分类器,
SoftMax
回归是
Logistic
回归的多类推广。 多类线性分类函数的参数
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
,我们使用交叉熵损失函数,模型在训练集的风险函数为:
采样梯度下降法,我们要计算
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
向量
转载请注明原文地址: https://ju.6miu.com/read-660023.html