说说 sigmoid 函数为什么用于二分类问题?
之前在学习 《Pattern Recognition and Machine Learning》这本书的时候,写笔记的时候,记录了 sigmoid 函数的推导,今天专门单拎出来从下面几个方面再总结一遍,再讲的细致一点。
- 伯努利实验
- 伯努利分布
- 二元分类
- 指数族函数
- sigmoid 函数的推导
伯努利实验
在介绍伯努利分布之前,先介绍一个有名的实验 – 伯努利实验。在概率统计理论中,伯努利试验是一个随机实验,恰好有两种可能的结果,即 “成功” 和 “失败”,其中每次实验时成功的概率都是相同的。比如,对于一个随机变量 x,随机变量只能有两个值,一个结果是 x = 1,另一种结果是 x = 0;两种结果对应的概率为: P ( x = 1 ∣ μ ) = μ , P ( x = 0 ∣ μ ) = 1 − μ P(x=1|μ) = μ, P(x=0|μ)=1-μ P(x=1∣μ)=μ,P(x=0∣μ)=1−μ在日常生活中,抛硬币就是一个伯努利实验,其只有两个结果,正面或者反面。
伯努利分布
伯努利分布(Bernoulli distribution),又称为两点分布或者 0-1 分布。它是一个离散概率分布,来源于伯努利实验。当随机变量 x 的值为 1 时,及伯努利实验成功的时候,概率为 p;当随机变量 x 的值为 0 时,即伯努利实验失败的时候,概率为 1 - p。即满足下面式子:
P
(
x
=
1
∣
μ
)
=
μ
,
P
(
x
=
0
∣
μ
)
=
1
−
μ
P(x=1|μ) = μ, P(x=0|μ)=1-μ
P(x=1∣μ)=μ,P(x=0∣μ)=1−μ
0
<
=
μ
<
=
1
0<=μ <= 1
0<=μ<=1
两个式子结合一下就是下面这个公式:
B
e
r
n
(
x
∣
μ
)
=
μ
x
(
1
−
μ
)
1
−
x
Bern(x|μ) = μ^{x}(1-μ)^{1-x}
Bern(x∣μ)=μx(1−μ)1−x
在伯努利分布中,其期望和方差如下:
E [ x ] = μ , v a r [ x ] = μ ( 1 − μ ) E[x] = μ,var[x] = μ(1-μ) E[x]=μ,var[x]=μ(1−μ)
二元分类
在深度学习中,最著名的二元分类的例子,就是吴恩达大神的鉴别图像中有无猫的例子了。在该例子中,如果一个图像中有猫,则结果输出结果为 1;如果图像中没有猫,则输出结果为 0。可以发现这个例子,或者说所有的二元分类都可以看成是伯努利分布,因为二元分类只输出两种结果。
指数族分布
再耐心一点点,铺垫就要完成了。在推导 sigmoid 函数之前。再提一下指数族分布的概念。
指数族分布(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
没有懂也没关系,主要的是公式,后面会用于推导。
sigmoid 函数的推导
在做二元分类或者逻辑回归的时候,我们都会使用 sigmoid 这个函数作为激活函数,但知道为什么使用 sigmoid 函数吗?现在我们看看 sigmoid 函数的推导过程,就可以理解了。
再次回到伯努利分布的式子:
p
(
x
∣
μ
)
=
μ
x
(
1
−
μ
)
1
−
x
p(x|μ) = μ^{x}(1-μ)^{1-x}
p(x∣μ)=μx(1−μ)1−x
将其 log 化后,再以指数函数进行转换可以得到(用另一种表达形式):
p
(
x
∣
μ
)
=
e
x
p
{
x
l
n
μ
+
(
1
−
x
)
l
n
(
1
−
μ
)
}
=
(
1
−
μ
)
e
x
p
{
x
l
n
μ
1
−
μ
}
p(x|μ) = exp\left \{ xlnμ + (1-x)ln(1-μ) \right \}=(1-μ)exp\left \{ xln\frac{\mu }{1-\mu } \right \}
p(x∣μ)=exp{xlnμ+(1−x)ln(1−μ)}=(1−μ)exp{xln1−μμ}
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 的函数,所以,可以得出 η = ln(μ/1-μ),再将其转换回指数函数的类型,可以得到:eη = μ/1-μ。最后可以得出求解概率参数 μ 的式子:μ = 1/(1+e-η), 其范围也符合 0 <= μ <= 1 。这个式子是不是很熟悉,这个就是我们一直使用的 sigmoid 函数。
用 σ(η) 来表示 sigmoid 函数,即为 σ(η) = 1/(1+e-η)。所以伯努利分布也可以表示成这样:
p
(
x
∣
η
)
=
σ
(
−
η
)
e
x
p
(
η
x
)
p(x|η) = σ(-η)exp(ηx)
p(x∣η)=σ(−η)exp(ηx)
根据公式也能发现这样的特性:1 − σ(η) = σ(−η),所以指数族分布的相关函数可以表示成:μ(x) = x ;h(x) = 1;g(η) = σ(−η)。
以上过程,可以自己按照公式推一遍,就会恍然大悟(x)。
同样地,使用相同的方法,也可以推导出 softmax 函数。这个明天或者后天会整理。
P.S:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?