每日一问之多元分类为什么使用 softmax 函数

多分类问题为什么使用 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=1Kμ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=1Kμ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=1Kμkxk=exp(k=1Mxklnμ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=1Mμ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(1jμ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=1jM1μ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=1Kμ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=1Kμk=k=1Keη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:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值