多分类问题为什么使用 softmax 函数,其背后的数学原理是什么?
周五的时候,总结了二分类使用 sigmoid 作为激活函数的原因,今天来总结多元分类问题使用 softmax 函数的原因。主要是下面这几个要点:
- 多项分布与多元分类
- 指数族分布
- softmax 函数的推导
多项分布与多元分类
多项分布是二项分布(伯努利分布)的推广,推广至 k 个不同的类别。伯努利分布的典型例子是抛硬币,而多项分布的典型例子是投骰子,一个骰子总共有 6 种可能的结果,即是 6 个类别非多分类问题。
在单次试验中,假设共有 k 种可能的情况,每种情况的概率分别为 μ = [μ1, μ2, … , μk]。但是所有情况发生的总概率是为 100%,所以有 Σk μk = 1。记 x ∈ {x1,x2, … , xk },xk ∈ {0,1},且 Σk xk = 1,这样即表示 xk 中只有一个为 1,其余为 0 ,也就是说每次试验只有一种可能。这种方法在机器学习中称为 one-hot 编码(可以参考这篇文章: 数据预处理-对类别数据的处理方法)
使用 one-hot 编码处理类别数据后,假设 x3 = 1,其 one-hot 向量为:x = (0,0,1,0,0…)T。如果通过参数 μ 来表示关于 xk 的概率,可以写成如下式子:
P
(
x
∣
μ
)
=
P
(
x
1
,
x
2
,
.
.
.
,
x
k
∣
μ
)
=
∏
k
=
1
K
μ
k
x
k
P(\mathbf{x}|\mu) =P(x_{1},x_{2},...,x_{k}|\mu)=\prod_{k=1}^{K}\mu_{k}^{x_{k}}
P(x∣μ)=P(x1,x2,...,xk∣μ)=k=1∏Kμkxk
指数族分布
在这里再提一下指数族分布的概念,同样后面推导公式的时候会用到。
指数族分布(Exponential family Distribution )是在给定参数 η 后,基于 x 的分布。定义式如下所示:
p
(
x
∣
η
)
=
h
(
x
)
g
(
η
)
e
x
p
{
η
T
μ
(
x
)
}
p(x|η) = h(x)g(η)exp\left \{ η^{T}μ(x)\right \}
p(x∣η)=h(x)g(η)exp{ηTμ(x)} 其中 x 可以为标量也可以为向量,可以是离散的,也可以是连续的。η 表示分布的自然参数。μ(x) 是关于 x 的函数。函数 g(η) 可以解释为确保分布标准化的系数,它满足下面式子:
g
(
η
)
∫
h
(
x
)
e
x
p
{
η
T
μ
(
x
)
}
d
x
=
1
g(η)\int h(x)exp\left \{ η^{T}μ(x)\right \}dx = 1
g(η)∫h(x)exp{ηTμ(x)}dx=1
softmax 函数的推导
同样,知道了 softmax 函数的推导,也就知道为什么多元分类会使用 softmax 函数了。
再次,回到多项分布的式子:
P
(
x
∣
μ
)
=
P
(
x
1
,
x
2
,
.
.
.
,
x
k
∣
μ
)
=
∏
k
=
1
K
μ
k
x
k
P(\mathbf{x}|\mu) =P(x_{1},x_{2},...,x_{k}|\mu)=\prod_{k=1}^{K}\mu_{k}^{x_{k}}
P(x∣μ)=P(x1,x2,...,xk∣μ)=k=1∏Kμkxk
将其 log 化后,再以指数函数进行转换可以得到(用另一种表达形式):
P
(
x
∣
μ
)
=
∏
k
=
1
K
μ
k
x
k
=
e
x
p
(
∑
k
=
1
M
x
k
l
n
μ
k
)
P(\mathbf{x}|\mu) =\prod_{k=1}^{K}\mu_{k}^{x_{k}} = exp(\sum_{k=1}^{M}x_{k}ln\mu_{k})
P(x∣μ)=k=1∏Kμkxk=exp(k=1∑Mxklnμk)
p
(
x
∣
η
)
=
h
(
x
)
g
(
η
)
e
x
p
{
η
T
μ
(
x
)
}
p(x|η) = h(x)g(η)exp\left \{ η^{T}μ(x)\right \}
p(x∣η)=h(x)g(η)exp{ηTμ(x)}
将多项分布的式子和指数族的式子对比,发现是符合指数族分布的特征的。其中 ηk = lnμk,η =(η1, … , ηM)T;μ(x) = x;h(x) = 1;g(η)=1。多项分布也就可以表示成下面的形式:
P
(
x
∣
μ
)
=
e
x
p
{
η
T
x
}
P(\mathbf{x}|\mu) = exp\left \{ \eta ^{T} \mathbf{x} \right \}
P(x∣μ)=exp{ηTx}
需要注意的是,参数 μ 并不独立,其是有限定范围的,即受到下面式子的约束:
∑
k
=
1
M
μ
k
=
1
\sum_{k=1}^{M}\mu_{k}=1
k=1∑Mμk=1
总共有 M 个参数,我们只需要求解出 M-1,就可以计算出全部的参数了。因此,有:
P.S:softmax 函数的推导会比 sigmoid 函数要绕,想要弄清楚的话,还请耐心一点点。
可以确定出:
l
n
(
μ
k
1
−
∑
j
μ
j
)
=
η
k
ln(\frac{\mu_{k}}{1-\sum_{j}\mu_{j}})=\eta _{k}
ln(1−∑jμjμk)=ηk
此时令 μj 如下所示,已知 M 个参数的总概率为 1 和 M-1 个参数的概率,所以第 M 个参数的概率就很容易求得:
μ
j
=
1
−
∑
j
M
−
1
μ
j
\mu_{j} =1-\sum_{j}^{M-1}\mu_{j}
μj=1−j∑M−1μj
已知 ηk 的公式,可以得到:
e
η
k
=
μ
k
μ
j
,
μ
j
=
μ
k
e
η
k
e^{\eta_{k}} = \frac{\mu_{k}}{\mu_{j}},\mu_{j} = \frac{\mu_{k}}{e^{\eta_{k}}}
eηk=μjμk,μj=eηkμk
因为有限制条件:
∑
k
=
1
K
μ
k
=
1
\sum_{k=1}^{K}\mu_{k}=1
k=1∑Kμk=1
所以,可以得到:
∑
k
=
1
K
μ
k
=
∑
k
=
1
K
e
η
k
μ
j
=
1
\sum_{k=1}^{K}\mu_{k} = \sum_{k=1}^{K}e^{\eta_{k}}\mu_{j} = 1
k=1∑Kμk=k=1∑Keηkμj=1
移项可以得到:
μ
j
=
1
∑
k
=
1
K
e
η
k
\mu_{j} = \frac{1}{\sum_{k=1}^{K}e^{\eta_{k}}}
μj=∑k=1Keηk1
将 μj = μk / eηk,代入上式,可得:
μ
k
=
e
η
k
∑
k
=
1
K
e
η
k
\mu_{k} = \frac{e^{\eta_{k}}}{\sum_{k=1}^{K}e^{\eta_{k}}}
μk=∑k=1Keηkeηk
为了区别分母的累加,将分母部分的下标 k 改为 j,既有:
μ
k
=
e
η
k
∑
j
e
η
j
\mu_{k} = \frac{e^{\eta_{k}}}{\sum_{j}e^{\eta_{j}}}
μk=∑jeηjeηk
以上就是 softmax 函数的推导过程了。
P.S:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?