从后验概率到逻辑回归,从逻辑回归到神经网络

1. 后验概率

对于给定数据,我们首先假设数据是由某种分布产生的,这样,根据贝叶斯公式我们可以得到后验概率分布,将后验概率最大的类作为 x x x的类输出。后验概率计算根据贝叶斯定理进行:

(1) P ( Y = c k ∣ X = x ) = p ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k p ( X = x ∣ Y = c k ) P ( Y = c k ) P(Y=c_k|X=x) = {p(X=x|Y=c_k)P(Y=c_k) \over \sum_k p(X=x|Y=c_k)P(Y=c_k)} \tag 1 P(Y=ckX=x)=kp(X=xY=ck)P(Y=ck)p(X=xY=ck)P(Y=ck)(1)

假设给定数据是由高斯分布生成的,我们希望对这组数据进行分类,首先考虑二分类的情况:

为什么使用高斯分布?

由于我们并不知道数据的真实分布,实际上我们可以假设任何一种分布。另外,根据中心极限定理,当数据量n足够大时,可以用正态分布逼近其它分布,这也是参数估计的理论基础。

我们知道,从一个高斯分布里面可以采样到空间内的任何一个点,但是在不同的高斯分布里,采样到这个点的几率是不同的。

比如:下图中的79个点分别属于两个分类,我们假设这些点可以从图中的两个高斯分布中采样得到,但是每个点从不同分布中采样出来的概率是不同的。

在这里插入图片描述

我们首先假设数据的分布,然后根据数据估计该分布的参数,得到数据的生成机制,叫做生成模型。

因为高斯分布是由 μ \mu μ Σ \Sigma Σ确定的,我们想要得到数据的生成机制,就要考虑如何求出这两个参数?

这里就要用到概率论与数理统计中的参数估计方法,其中最常用的是极大似然估计:极大似然估计,简单来说,就是在已知观测数据的条件下,估计使得当前数据出现可能性最大的分布。如果我们认为当前观测到的数据是独立同分布的,并且每个样本出现的可能性为 p i p_i pi,那么当前数据出现的可能性最大,就是所有样本出现的概率之积最大(由于数据独立,所以用乘法公式),使这个概率达到最大的方法就是极大似然估计。针对本例中的79个点( x 1 , x 2 , . . . , x 79 x^1, x^2, ..., x^{79} x1,x2,...,x79),我们定义似然概率如下:

(2) L ( μ , ∑ ) = f μ , ∑ ( x 1 ) f μ , ∑ ( x 2 ) f μ , ∑ ( x 3 ) . . . . . . f μ , ∑ ( x 79 ) L(\mu, \sum) = f_{\mu, \sum}(x^1) f_{\mu, \sum}(x^2) f_{\mu, \sum}(x^3)... ... f_{\mu, \sum}(x^{79}) \tag 2 L(μ,)=fμ,(x1)fμ,(x2)fμ,(x3)......fμ,(x79)(2)

其中: f μ , ∑ ( x ) = 1 ( 2 π ) D / 2 1 ∣ ∑ ∣ 1 / 2 e x p { − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) } f_{\mu, \sum}(x) = {1 \over (2\pi)^{D/2}}{1 \over |\sum|^{1/2}}exp \{-{1 \over 2}(x - \mu)^T \sum^{-1}(x - \mu)\} fμ,(x)=(2π)D/211/21exp{21(xμ)T1(xμ)}

注:

  • 其实这里的 f μ , ∑ ( x ) f_{\mu, \sum}(x) fμ,(x)并不是概率,而是概率密度,与概率成正比(对概率密度积分可以得到概率),由于这里只是对似然函数求极值,为简化计算,直接使用概率密度。

  • 如果我们做条件独立性假设,认为数据在不同特征上是独立的,那么,我们其实并不用对数据的分布机制做假设,求出分布的参数,只要利用条件独立性假设,从数据中统计出不同特征下的概率,然后使用乘法公式便可得到 p ( X = x ∣ Y = c k ) p(X=x|Y=c_k) p(X=xY=ck),这就是朴素贝叶斯法。实际不同特征之间基本不会是独立的,这样我们对数据的分布作出假设,利用统计学中的估计方法求出其参数。

下面我们就要求使似然函数 L ( μ , ∑ ) L(\mu, \sum) L(μ,)达到最大的参数值 μ ∗ \mu^* μ Σ ∗ \Sigma^* Σ

μ ∗ , Σ ∗ = a r g m a x μ , ∑ L ( μ , ∑ ) \mu^*, \Sigma^* = argmax_{\mu, \sum} L(\mu, \sum) μ,Σ=argmaxμ,L(μ,)

对于高斯分布, μ \mu μ Σ \Sigma Σ分别代表均值和方差,所以可以直接用统计量求出(其实我们可以采用极大似然估计法,对似然函数求导得出参数):

μ ∗ = 1 79 ∑ n = 1 79 x n ∑ ∗ = 1 79 ∑ n = 1 79 ( x n − μ ∗ ) ( x n − μ ∗ ) T \mu^* = {1 \over 79} \sum^{79}_{n=1} x^n \qquad \sum^* = {1 \over 79} \sum^{79}_{n=1} (x^n - \mu^*)(x^n - \mu^*)^T μ=791n=179xn=791n=179(xnμ)(xnμ)T

既然我们从数据出发,得到了生成数据的分布,接下来我们就可以采用贝叶斯公式计算出给定输入的后验概率:

在这里插入图片描述

计算几率后验概率)来进行分类的方法作如下理解:

不同的分类具有不同的高斯分布,如果我们想要知道当前样本属于C1的概率,其实就是当前样本从C1的分布中采样到的概率,在所有可能的分布中采样到的概率之和所占的比重(简单来理解,就是对其中一类的概率做归一化),写成表达式如下:

当 前 样 本 属 于 C 1 的 概 率 = C 1 的 分 布 中 采 样 到 当 前 样 本 的 概 率 所 有 可 能 的 分 布 中 采 样 到 当 前 样 本 的 概 率 之 和 当前样本属于C1的概率 = {C1的分布中采样到当前样本的概率 \over 所有可能的分布中采样到当前样本的概率之和} C1=C1

通常情况下我们一般是不采用这种方法的,其结果不太好,因为参数过多,容易过拟合。对于不同的分类,我们一般使用相同的covariance matrix,这样会使模型具有更少的参数,不那么容易过拟合。如下图所示,我们调整模型,让Class1和Class2使用相同的协方差矩阵 ∑ \sum

在这里插入图片描述

那么,如果采用相同的协方差矩阵,我们应该如何去求解参数呢?如下图所示,也是一种很直观的方式,用每个分类的样本个数去加权求和:

在这里插入图片描述

这样的话会提升最终模型的预测效果。

接下来,我们对后验概率做一些简单的变化,如下:
在这里插入图片描述

如上图所示,我们将后验概率转化为对 z z z求sigmoid函数的形式,那么这里的 z z z有什么意义呢?我们对 z z z做进一步数学推导,如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过上面的数学推导,我们发现 z z z可以写成 w ⋅ x + b w·x+b wx+b的形式,那么我们就要想了,既然直接求w和b就可以得到分类结果,那么就没必要舍近求远去估计这么多参数,因而便将其转化为我们熟知的逻辑回归的形式。

2. 逻辑回归
2.1 Function Set:Model

通过上面的推导过程,我们知道逻辑回归最终得到的就是后验概率,当某个样本属于C1的后验概率大于0.5时,则将其分类为C1,否则划分为C2。逻辑回归的function set如下所示,包括所有不同的 w w w b b b构成的总体,我们训练模型就是要找到对数据分类最好的那个function:

在这里插入图片描述

逻辑回归的结构可以写成如下的形式,包括一个线性单元和一个非线性单元,处理过程类似于神经网络的单个神经元,其中非线性部分采用的激活函数是sigmoid函数。

在这里插入图片描述

比较逻辑回归和线性回归的function set的区别:

在这里插入图片描述

我们发现逻辑回归与线性回归相比,只是在线性单元上加个sigmoid函数,将输出变成分类的后验概率,本质上还是线性模型,使用直线来对数据分类。

2.2 Goodness of a Function:确定损失函数

既然逻辑回归模型就是由 w w w b b b确定的function set,那么如何选择一个最好的function呢?

我们同样采用极大似然估计,让当前数据出现的可能性最大,定义所有数据的似然概率 L ( w , b ) L(w,b) L(w,b),让其最大化,如下:

在这里插入图片描述

我们认为不同数据是独立采样出来的,因此采用乘法公式,似然概率 L ( w , b ) L(w,b) L(w,b)如上所示。

不同分类的概率如下:

p ( x ) = { f w , b ( x ) , if y = 1 1 − f w , b ( x ) , if y = 0 p(x) =\begin{cases}f_{w,b}(x), & \text{if y = 1} \\1-f_{w,b}(x), & \text{if y = 0} \end{cases} p(x)={fw,b(x),1fw,b(x),if y = 1if y = 0

由于不同类别使用不同的概率来表示,不好处理,因此做等价转换,将概率写成 y f ( x ) + ( 1 − y ) ( 1 − f ( x ) ) yf(x) + (1-y)(1-f(x)) yf(x)+(1y)(1f(x))的形式,下图是一个例子:

在这里插入图片描述

对似然函数求负对数,得到最终的损失函数:

在这里插入图片描述

虽然最终推导出的这个结果与信息论没什么关系,但是形式上是一致的,故可以将其理解为两个伯努利分布的交叉熵。

交叉熵反映两个概率分布有多接近,交叉熵越小表明两个分布越接近,我们希望预测值与实际值尽可能接近,也就是他们的分布的交叉熵尽可能小,这与对损失函数求极小是一致的。

比较逻辑回归和线性回归的损失函数:

在这里插入图片描述

逻辑回归的损失函数采用交叉熵,我们希望损失函数越小越好,即两个分布越接近越好,这样估测值便可以反映真实值。

2.3 Find the best function:梯度下降

我们想到找到最好的function,就要使损失函数最小。下面对损失函数求导,求其最小值:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由求解结果可知,预测值离目标越远,参数的update量就越大。

比较逻辑回归和线性回归的参数更新:

在这里插入图片描述

我们发现逻辑回归和线性回归的参数更新公式是一样的,说明这两种线性方法是统一的,只不过分别用在分类和回归。

Question:既然逻辑回归和线性回归存在一致性,那么我们就要考虑,为什么逻辑回归不同样采用更简单的平方损失来作为损失函数呢?

下面我们对逻辑回归使用平方损失,看一下会出现什么情况?

在这里插入图片描述

在这里插入图片描述

其中, y ^ n \hat y^n y^n为实际值, f w , b ( x n ) f_{w,b}(x^n) fw,b(xn)为预测值。

从上面两张图我们看到:当模型预测正确时,损失函数的梯度为0,这个没有问题;但是当模型预测错误时,损失函数的梯度仍旧是0,这样就没法采用梯度下降来更新参数了,所以逻辑回归不能使用平方损失。

再结合下面的Loss surface来比较交叉熵和平方误差:

在这里插入图片描述

由上图可知:

  • 使用交叉熵作为损失函数,距离目标点远的地方梯度较大,参数更新较快,距离目标点近的地方梯度较小,参数更新较慢,这是很合理的;
  • 使用平方损失作为损失函数,距离目标点远的地方梯度也很小,导致参数更新很缓慢,无法收敛;
3. 判别模型和生成模型

在这里插入图片描述

  • 判别模型中没有对模型做任何假设,一切都是从数据出发,找到最好的w和b;
  • 生成模型对数据的分布做假设,假设数据的分布是高斯分布、伯努利分布等,根据假设的分布找到一组w和b;
  • 虽然看起来差不多,但是这两组w和b是不一样的,那么,哪种模型更好呢?

在这里插入图片描述

上图是前面的例子的分类结果,这里可以看到:判别模型分类结果更好。一般情况下,判别模型会优于生成模型。

下面再看个简单的例子,来理解为什么是这样:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对于这个例子,我们直观上应该觉得测试数据应该分类到class1,但是生成模型(NB)却将其分类为class2。这是因为生成模型自己做了某些假设(假设生成数据的分布),自己脑补出来某些数据中没有观测到的情况,认为在当前假设下,有些样本虽然没有观测到,但是也是有可能发生的。

判别模型却是完全从数据本身出发,从数据中学习到存在的模式。

其实,生成模型也有一些优点:

  • 比如数据很少的情况下,假设数据的分布可以得到比较好的结果;
  • 假设数据的分布可以使模型更加鲁棒,不容易受噪声的影响;
  • Priors和class-dependent probabilities可以从不同的数据源估计;
4. 多分类

下面是一个三分类的例子:

在这里插入图片描述

在这里插入图片描述

多分类实际同二分类一样,采用相同推导方式可以得到softmax函数,同时多分类的损失函数也是交叉熵的形式,其中y值是one-hot的形式。

5. 逻辑回归的限制

由于逻辑回归是线性模型,所以模型存在一定的限制,比如:我们使用逻辑回归去分类下面四个点。

在这里插入图片描述

我们发现,即使是简单的四个点,逻辑回归也是无法进行分类的,因为图中的点不是线性可分的:

在这里插入图片描述

由于逻辑回归本质还是线性分类,所以无法对不能线性可分的点做划分。

如果坚持要用逻辑回归,可以对数据做特征转换,也就是将数据从一个特征空间转换到另一个特征空间。转换后点的分布如下图所示:

在这里插入图片描述

通过特征转换,我们发现数据变得线性可分,逻辑回归便可以work了。

但是,这里还有一个问题,通常情况下,我们很难自己找到一个好的transformation。

因此,我们便希望机器学习能帮我们找到这样的transformation。那么,机器学习如何找到这样的transformation呢?

我们通过串联逻辑回归模型来做到:

在这里插入图片描述

  • 这里忽略bias;
  • 使用串联的逻辑回归:第一层逻辑回归进行自动的特征转换,第二层对转换后的点进行分类;

同样使用前面的四个点,具体执行过程如下:

(1)首先,第一层对原始数据做特征转换;

在这里插入图片描述

(2)转换后的特征输入第二层逻辑回归,得到预测结果y;

在这里插入图片描述
我们发现,通过串联逻辑回归模型确实可以做到特征转换,实现分类。

这里串联的逻辑回归模型就类似于深度学习里的神经网络:

在这里插入图片描述
这里就非常自然的从逻辑回归进化到神经网络。

对于深度学习,也就是使用了多个hidden layer实现特征转换,然后采用线性分类器实现分类。
在这里插入图片描述

注:
这里说明的feature transformation + Linear Model的过程,体现了机器学习方法内在的一致性。

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值