分类器中的S型函数

来源:互联网 发布:剑网3不合法的脸数据 编辑:程序博客网 时间:2024/05/17 05:10

      对于了解机器学习相关知识的朋友,对一个函数肯定不陌生,没错,就是我今天要说的sigmoid(S型)函数,这个函数的图像如下:

                                                                  sigmoid

它的函数表达式为:

f(x)=11+exp(x)

       这个函数有很好的特性,它的定义域为实数域,而值域为(0,1),它的导数可以用自身的值计算出来:f(x)=f(x)(1f(x))。在机器学习领域里面到处可以看到它的身影,比如我们常用的Logistic Regression以及Softmax Regression分类器就是用它作为输出单元的响应激活函数。以及神经网络中的神经元激活函数也大多用它。为什么是这个函数呢?其实并不是人为故意选出来的,而是有严密的数学逻辑推理出来的。

       以二分类问题来说明,我们如果假设类密度符合p(x|Ci)高斯分布,并且具有共同的协方差矩阵,则判别式函数是线性的。即:gi(x)=wTix+wi0,这个不难证明。
       我们定义y=p(C1|x),P(C2|x)=1y。则在分类时,我们选择C1,如果

y>0.5y1y>1,logy1y>0C2

logy1y称作分对数(logit)变换或y的对数几率。在两个共享相同的协方差矩阵的正态类的情况下,对数几率是线性的:
logit(P(C1|x)=logP(C1|x)1P(C1|x)=logP(C1|x)P(C2|x)=logp(x|C1)p(x|C2)+logP(C1)P(C2)

                            =log(2π)d/2|Σ|1/2exp[(1/2)(xμ1)TΣ1(xμ1)](2π)d/2|Σ|1/2exp[(1/2)(xμ2)TΣ1(xμ2)]+logP(C1)P(C2)

                            =wTx+w0

其中

w=Σ1(μ1μ2)
w0=12(μ1+μ2)TΣ1(μ1μ2)

分对数的逆
logP(C1|x)1P(C1|x)==wTx+w0
是Logistic函数,也就是所谓的sigmoid(S型)函数:
P(C1|x)=sigmoid(wTx+w0)=11+exp[(wTx+w0)]

通过上述推导,大家应该看到了,在假定模式类密度服从正态分布以及协方差矩阵相同的情况下,线性判别式与基于S型函数概率分类的效果是等价的。当然即使没有这个假设,也可以使用S型函数进行概率的估计,从而进行分类。

0 0
原创粉丝点击