对于了解机器学习相关知识的朋友,对一个函数肯定不陌生,没错,就是我今天要说的sigmoid(S型)函数,这个函数的图像如下:
它的函数表达式为:
这个函数有很好的特性,它的定义域为实数域,而值域为(0,1),它的导数可以用自身的值计算出来: f′(x)=f(x)(1−f(x)) 。在机器学习领域里面到处可以看到它的身影,比如我们常用的 Logistic Regression以及 Softmax Regression分类器就是用它作为输出单元的响应激活函数。以及神经网络中的神经元激活函数也大多用它。为什么是这个函数呢?其实并不是人为故意选出来的,而是有严密的数学逻辑推理出来的。
以二分类问题来说明,我们如果假设类密度符合
p(x|Ci)
高斯分布,并且具有共同的协方差矩阵,则判别式函数是线性的。即:
gi(x)=wTix+wi0
,这个不难证明。
我们定义
y=p(C1|x),P(C2|x)=1−y
。则在分类时,我们选择
C1
,如果
logy1−y
称作分对数(logit)变换或
y
的对数几率。在两个共享相同的协方差矩阵的正态类的情况下,对数几率是线性的:
=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
其中
分对数的逆
通过上述推导,大家应该看到了,在假定模式类密度服从正态分布以及协方差矩阵相同的情况下,线性判别式与基于S型函数概率分类的效果是等价的。当然即使没有这个假设,也可以使用S型函数进行概率的估计,从而进行分类。