每日一问之二元分类为什么使用 sigmoid 函数

说说 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μ)1x
在伯努利分布中,其期望和方差如下:

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μ)1x
将其 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μ+(1x)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:文中有错欢迎指出,互相学习。以及欢迎关注我的公众号 ?

你可能感兴趣的:(每日一问)