本部分将继续讨论学习理论的相关知识。学习理论内容包括:模型/特征选择(model/feature selection)、贝叶斯统计和正则化(Bayesian statistics and Regularization)。本文重点在于贝叶斯统计和正则化。将重点理解这句话,从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。
模型选择
假设我们尝试在许多不同的模型中为我们的学习问题寻找最合适的模型。例如我们可能想在众多多项式回归模型\(h_\theta(x)=g(\theta_0+\theta_1x+\theta_2 x^2 + … + \theta_k x^k)\)中进行寻找,那么就需要确定k的值是多少(0,1,…,or 10)。我们怎样才能自动选择一个合适的模型,该模型能对偏差和方差进行很好的权衡呢?又或者该如何为SVM模型选择惩罚参数\(C\)和正则化项? 该如何为局部加权回归选择带宽参数?
更具体地讨论,我们考虑有限模型集合\(\mathcal{M}=\{M_1,…,M_d\}\),我们将从该集合中选择模型。例如对于上面的问题,模型\(M_i\)可以代表i阶多项式模型。当然,该模型集合也可以包含不同种类的模型,例如SVM、神经网络或者逻辑回归等。
交叉验证
选择模型最简单的方式,就是根据ERM经验风险最小化原理,对每个模型M,取训练误差最小的模型。显然,这样最终会容易选择那些过拟合的模型。例如考虑选择多项式模型,显然阶数越高,训练集拟合的就越好,则训练误差也越小,因此这种方法选择的模型总是会出现高方差、高阶数。
简单的对其进行修改,我们就可以得到保留交叉验证的方法或称作简单交叉验证(hold-out cross validation also called simple cross validation),具体做法如下:
- 随机划分数据S为\(S_{train}\)(如70%的数据)、\(S_{cv}\)(如30%)。\(S_{cv}\)称作保留交叉验证集。
- 对每个模型\(M_i\),在\(S_{train}\)上进行训练,得到假设\(h_i\)
- 对得到的每个假设\(h_i\),在\(S_{cv}\)上测试,求出误差\(\hat{\epsilon}_{S_{cv}}(h_i)\),即假设\(h_i\)在验证集上的经验误差。
- 选择误差最小的模型作为最终模型。
通过在验证集上进行测试,我们得到了一个对模型更好的估计。在实际使用过程中,对于得到的最终模型,我们可以将该模型在全部的数据集上重新训练,以利用更多的数据,达到更好的效果。
该方法的劣势在于分出过多的数据用来测试,对于标注数据难得的实际问题来说(比如医学实验),这是不能容忍的。因而产生了如下的改进方法,即k折交叉验证。
k折交叉验证(k-fold cross validation),做法如下:
- 将标注数据集S随机平均分成k份,每份有m/k个样本,记为\(S_1,…,S_k\)
- 对于每一个模型\(M_i\),
\(For \ j = 1,…,k\)
分别在\(S_1 \cup S_2…\cup S_{j-1} \cup S_{j+1} \cup S_k\)上训练,即除了\(S_j\)以外的子样本集上进行训练,得到假设\(h_{ij}\)
再使用\(h_{ij}\)对保留的\(S_j\)进行测试,得到误差\(\hat{\epsilon}_{S_j}(h_{ij})\)
模型\(M_i\)的泛化误差可以通过计算\(\hat{\epsilon}_{S_j}(h_{ij})\)的平均值来估计。
- 选择泛化误差估计值最小的模型\(M_i\)作为最终的模型。同样,可以使用全部的数据集对最终模型进行训练。
k通常取值为10。此时保留的验证集大小每次只有1/k,比之前的30%小的多。但是这个过程的缺点是比较耗时,我们需要对每个模型训练k次。
当样本很少的时候,我们也可能取极端情况k=m。称为留一交叉验证(leave-one-out cross validation),即每次训练只保留1个样本作为验证集。
上面讨论的交叉验证用于选择模型,同样,交叉验证也可以用于评估一个模型的好坏,例如可以使用交叉验证在不同测试集上对模型性能进行评估。
特征选择
特征选择是一类比较特殊的模型选择问题。考虑你面对一个监督学习问题,该问题的特征数量n非常巨大(甚至有 \(n \gg m\)),但是实际上只有部分特征和学习任务是相关的。即使使用一个简单的线性模型,例如感知机,按照之前VC维分析,n个特征有n+1个参数,也需要O(n)级别的样本数才能得到一个较好的模型。如果训练数据不够,那么就会导致过拟合的问题,因此需要考虑特征选择。
前向/后向选择
对于n个特征来说,特征子集的数量有\(2^n\)个,如何进行选择呢?穷举法计算量太大,必然不可行。本部分介绍一种启发式的算法,前向选择法(Forward Search)。步骤如下:
- 初始化特征子集为\(\mathcal{F}=\varnothing\)
- 重复如下步骤:
1) For i = 1,…,n, If \(i \notin \mathcal{F}\),let \(\mathcal{F} = \mathcal{F} \cup \{i\}\),使用交叉验证来评估特征集\(\mathcal{F}_i\)
2) 令\(\mathcal{F}\)为上面步骤中评估性能最好的特征子集,即选择提升最大的特征加入原特征子集。
- 直到性能不再提升,或已经达到设置的阙值k个特征上限。
该算法也被称作wrapper model feature selection,因为它将模型的训练和评测包含在算法的内部。
根据前向选择法,可以容易得到后向选择法(Backward Search),即初始化特征集包含所有的特征,然后每次删除对模型性能影响最不大的特征。
上面的方法虽然可以达到较优的特征选择结果,但是由于其反复多次调用模型训练算法,因而计算量非常大,尤其是在训练数据量比较大的时候。为了使得特征选择更简便,提出了一种更简单的特征选择方法——过滤法。
过滤特征选择
过滤特征选择(Filter Feature Selection),采用一种启发式的规则对特征进行评分,评分指标衡量了特征对于样本标记结果y的影响程度,或称作特征的信息量大小。选择评分较优的k个特征,其计算量相对于前后向搜索算法来说已经非常小了。
一个可能的评分函数是衡量\(x_i\)和y的相关性,从而选择出与类别标记y最相关的特征\(x_i\)。而相关性可以使用互信息(mutual information,MI)来表示,当\(x_i\)是离散变量时,MI的计算公式如下:
$$MI(x_i,y)=\sum_{x_i}\sum{y_i} p(x_i,y) log \frac{p(x_i,y)}{p(x_i)p(y)}$$
其中\(p(x_i,y)\)指特征和类别的联合概率分布,\(p(x_i,y),p(x_i),p(y)\)都可以通过训练集来估计出经验概率分布。
为了更直观的理解,互信息也可以表示为KL(Kullback-Leibler)距离的形式:
$$MI(x_i,y)=KL(p(x_i,y) || p(x_i)p(y))$$
KL距离的作用是衡量分布之间的差异。就此例来说,如果\(x_i,y\)相互独立,那么它们的KL距离为0,如果它们之间的关联关系比较强,那么KL距离会变大。
使用MI进行衡量后,我们得到了各个特征的评分,那么选择多少个特征可以让模型效果最好呢?标准的方法还是采用交叉验证进行选择。例如,选择出k个特征,那么对特征子集{1},{1,2},{1,2,3},…,{1,2,3…,k}分别进行交叉验证,看哪一个子集效果最好。
贝叶斯估计
在开始前,强烈建议先阅读这篇博文贝叶斯线性回归(Bayesian Linear Regression),这篇文章写得非常好! 本文会截取部分内容,并修改一些符号标记为我们之前比较习惯使用的标记。
这部分将讨论如何应对过拟合的问题。为了讨论贝叶斯统计,我们首先从极大似然估计、最大后验估计谈起。
关于参数估计
在很多的机器学习或数据挖掘的问题中,我们所面对的只有数据,但数据中潜在的概率密度函数是不知道的,其概率密度分布需要我们从数据中估计出来。想要确定数据对应的概率密度分布,就需要确定两个东西:概率密度函数的形式 和 概率密度函数的参数。
有时可能知道的是概率密度函数的形式(高斯、伯努利等等),但是不知道具体的参数,例如均值或者方差;还有的时候可能不知道概率密度的类型,但是知道一些估计的参数,比如均值和方差。
关于上面提到的需要确定的两个东西:概率密度函数的形式和参数,我们目前所接触的大部分教材知识,基本都是:给了一堆数据,然后假设其概率密度函数的形式为高斯分布,或者是混合高斯分布,那么,剩下的事情就是对高斯分布的参数,\(\mu\)和\(\sigma^2\) 进行估计。所以,参数估计便成了极其最重要的问题。
其实,常用的参数估计方法有:极大似然估计、最大后验估计、贝叶斯估计、最大熵估计、混合模型估计。他们之间是有递进关系的,想要理解后一个参数估计方法,最好对前一个参数估计有足够的理解。
极大似然估计
首先回顾一下极大似然估计。
这里先以一个分类问题来说明一般参数估计面对的数据形式。考虑一个\(M\)类的问题,特征向量服从\(p(x|\omega_i),i=1,2…,M\)分布。这是现实情况中最常见的一种数据存在形式,数据集合\(X\)是由\(M\)个类别的数据子集\(X_m,m=1,2…,M\)组成的,第\(m\)类别的数据子集\(X_m\) 对应的概率密度函数是\(p(x|\omega_m)\)。\(\omega\)可以理解为不同类别的数据子集可以建立不同的模型,如果所有类别子集采用同一个模型,实际上\(\omega\)可以省略不写。
前面已经介绍过了,想要确定数据的概率分布,需要知道概率密度函数的 形式 和 参数,这里首先做一个基本假设:概率分布的形式已知,比如假设每个类别的数据都满足高斯分布,那么,似然函数就可以以参数\(θ_i\)的形式表示,如果是高斯分布,则参数为\(\mu_i\)和\(\sigma_i^2\),即\(θ_i=(μ_i,σ^2_i)\)。
为了强调概率分布\(p(x|\omega_i)\)和 \(θ_i\) 有关,将对应的概率密度函数记为\(p(x|\omega_i;θ_i)\),这种记法属于频率概率学派的记法。这里的极大似然估计对应于一个\(类条件概率密度函数\)。
从上面的描述中可以知道,利用每一个类\(X_i\)中已知的特征向量集合,可以估计出其对应的参数\(θ_i\)。进一步假设每一类中的数据不影响其他类别数据的参数估计,那么上面的\(M\)个类别的参数估计就可以用下面这个统一的模型,独立的解决:
设\(x^{(1)},x^{(2)},…,x^{(m)}\)是从概率密度函数\(p(x;\theta)\)随机抽取的样本,那么就可以得到联合概率密度函数\(p(X;\theta)\),其中\(X=\{x^{(1)},x^{(2)},…,x^{(m)}\}\)是样本集合,假设不同的样本之间具有统计独立性,那么:
$$p(X;\theta)\equiv p(x^{(1)},x^{(2)},…,x^{(m)};\theta)=\prod_{k=1}^mp(x^{(k)};\theta)$$
注意,这里的\(p(x^{(k)};\theta)\)本来的写法是\(p(x^{(k)}|\omega_i;\theta)\),是一个类条件概率密度函数,只不过这里每次建模都是考虑同一类别的数据,所以才可以将\(w_i\)省略,也就是说对于不同类别的数据,需要分别进行建模计算。
需要重申一下,想要得到上面这个公式,是做了几个基本的假设的,第一:假设\(M\)个类别的数据子集的概率密度函数形式一样,只是参数的取值不同;第二:假设类别\(i\)中的数据和类别\(j\)中的数据是相互独立抽样的,即类别\(j\)的参数仅仅根据类别\(j\)的数据就可以估计出来,类别\(i\)的数据并不能影响类别\(j\)的参数估计,反之亦然;第三:每个类别内的样本之间具有统计独立性,即每个类别内的样本之间是独立同分布 (\(iid\)) 的。
此时,就可以使用极大似然估计(Maximum Likelihood,ML)来估计参数\(\theta\)了。如下:
$$\hat{\theta}_{ML}=\mathop{argmax}_\limits{\theta} \prod_{k=1}^m p(x^{(k)};\theta)$$
可以使用\(p(y^{(i)}|x^{(i)};\theta)\)替换\(p(x^{(k)};\theta)\),即对于给定样本\(x\)和参数\(\theta\),其类别为\(y\)的概率。得到:
$$\hat{\theta}_{ML}=\mathop{argmax}_\limits{\theta} \prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) (1)$$
根据频率学派的观点,参数\(\theta\)不是随机的,而是固定的,\(\theta\)是一个固定的未知值或向量,我们可以通过极大似然估计来估计\(\theta\)的值。
极大似然估计有两个非常重要的性质:渐进无偏 和 渐进一致性,有了这两个性质,使得极大似然估计的成为了非常简单而且实用的参数估计方法。这里假设\(θ_0\)是密度函数\(p(x;θ)\)中未知参数的准确值。
极大似然估计是渐进无偏的,即:
$$\lim_{N \to \infty}E[\hat{\theta}_{ML}]=\theta_0$$
也就是说,这里认为估计值\(\hat{\theta}_{ML}\)本身是一个随机变量(因为不同的样本集合X会得到不同的\(\hat{\theta}_{ML}\)),那么其均值就是未知参数的真实值,这就是渐进无偏。
极大似然估计是渐进一致的,即:
$$\lim_{N \to \infty}prob{ \lVert \hat{\theta}_{ML}- \theta_0 \rVert \leqslant \epsilon} = 1$$
这个公式还可以表示为:
$$\lim_{N \to \infty} E \lVert \hat{\theta}_{ML}- \theta_0 \rVert^2 = 0$$
对于一个估计器而言,一致性是非常重要的,因为存在满足无偏性,但是不满足一致性的情况,比如,\(\hat{\theta}_{ML}\)在\(θ_0\)周围震荡。如果不满足一致性,那么就会出现很大的方差。
注意:以上两个性质,都是在渐进的前提下\(N \to \infty\)才能讨论的,即只有N足够大时,上面两个性质才能成立。
最大后验估计
在最大似然估计(ML)中,将\(θ\)看做是固定的未知参数,说的通俗一点,最大似然估计是\(θ\)的函数,其求解过程就是找到使得最大似然函数最大的那个参数\(θ\)。
从最大后验估计开始,将参数\(θ\)看成一个随机变量,并在已知样本集\(X=\{x^{(1)},x^{(2)},…,x^{(m)}\}\)的条件下,估计参数\(θ\)。
这里一定要注意,在最大似然估计中,参数\(θ\)是一个定值,只是这个值未知,最大似然函数是\(θ\)的函数,这里\(θ\)是没有概率意义的,代表的是频率学派。但还还有另外一个学派,即贝叶斯学派,和频率学派的观点不同,他们认为\(\theta\)是一个随机变量,服从某个先验分布,即\(\theta \sim p(\theta)\)。因此在最大后验估计中,\(θ\)是有概率意义的,\(θ\)有自己的分布,而这个分布函数,需要通过已有的样本集合\(X\)得到,即最大后验估计需要计算的是\(p(θ|X)\)
根据贝叶斯理论:
$$p(\theta|X)=\frac{p(\theta)p(X|\theta)}{p(X)}$$
这就是参数\(θ\)关于已有数据集合\(X\)的后验概率,要使得这个后验概率最大,和极大似然估计一样,这里需要对后验概率函数求导。由于分母中的\(p(X)\)相对于\(θ\)是独立的,所以可以直接忽略掉\(p(X)\)。
$$\hat{\theta}_{MAP}=arg\max_{\theta}p(\theta|X)=arg\max_{\theta}p(\theta)p(X|\theta)$$
注意:这里\(p(X|θ)\)和极大似然估计中的似然函数\(p(X;θ)\)是一样的,只是记法不一样。\(MAP\)和\(ML\)的区别是:MAP是在ML的基础上加上了p(θ)。
这里需要说明,虽然从公式上来看 \(MAP = ML \times p(θ)\),但是这两种算法有本质的区别,\(ML\)将\(θ\)视为一个确定未知的值,而\(MAP\)则将\(θ\)视为一个随机变量。
在\(MAP\)中,\(p(θ)\)称为\(θ\)的先验。\(MAP\)和\(ML\)的关系是,假设\(θ\)服从均匀分布,即对于所有\(θ\)取值,p(θ)都是同一个常量,则\(MAP\)和\(ML\)会得到相同的结果。当然了,如果\(p(θ)\)的方差非常的小,也就是说,\(p(θ)\)是近似均匀分布的话,\(MAP\)和\(ML\)的结果自然也会非常的相似。
贝叶斯估计
以下所有的概率分布表述方式均为贝叶斯学派的表述方式。另外,在标题上加上全。
贝叶斯估计核心问题
为了防止标号混淆,这里定义已有的样本集合为\(S\),而不是之前的\(X\)。样本集合\(S\)中的样本都是从一个 固定但是未知 的概率密度函数\(p(x)\)中独立抽取出来的,我们的目标是根据这些样本估计\(x\)的概率分布,记为\(p(x|S)\),并且使得\(p(x|S)\)尽量的接近\(p(x)\),这就是贝叶斯估计的核心问题。
贝叶斯估计第一个重要元素
虽然\(p(x)\)是未知的,但是前面提到过,一个密度分布的两个要素为:形式和参数,我们可以假设\(p(x)\)的形式已知,但是参数θ的取值未知。这里就有了贝叶斯估计的第一个重要元素\(p(x|θ)\),这是一个条件概率密度函数,准确的说,是一个类条件概率密度函数(具体原因参见本文前面关于极大似然估计的说明)。强调一下:\(p(x|θ)\)的形式是已知的,只是参数\(θ\)的取值未知。由于这里的\(x\)可以看成一个测试样本,所以这个条件密度函数,从本质上讲,是\(θ\)在点\(x\)处的似然估计。
贝叶斯估计第二个重要元素
由于参数\(θ\)的取值未知,且,我们将\(θ\)看成一个随机变量,那么,在观察到具体的训练样本之前,关于\(θ\)的全部知识,可以用一个先验概率密度函数\(p(θ)\)来表示,对于训练样本的观察,使得我们能够把这个先验概率密度转化成为后验概率密度函数\(p(θ|S)\),根据后验概率密度相关的论述知道,我们希望\(p(θ|S)\)在\(θ\)的真实值附近有非常显著的尖峰。这里的这个后验概率密度,就是贝叶斯估计的第二个重要元素。
联系
现在,将贝叶斯估计核心问题\(p(x|S)\),和贝叶斯估计的两个重要元素:\(p(x|θ)、p(θ|S)\)联系起来:
$$p(x|S)=\int p(x,\theta|S) d\theta=\int p(x|\theta,S)p(\theta|S)d\theta (1)$$
以上等式都是基于训练集\(S\)的,我们可以暂且忽略S来理解。
第一个等式理解:联合概率密度和边缘概率密度关系。更一般的即:针对连续型随机变量\((X,Y)\),设它的联合概率密度为\(f(x,y)\),则:
$$f_X(x)=\int_{ - \infty }^{ + \infty } f(x,y)dy$$
上式称为随机变量\((X,Y)\)关于X的边缘概率密度。同理可以求Y的边缘概率密度。我们将\(\theta\)替换y就可以得到,\(p(x)=\int p(x,\theta) d\theta\)。
第二个等式理解:条件概率和联合概率关系,即:
$$p(x|y)=\frac{p(x,y)}{p(y)}$$
同样,可以将\(\theta\)替换y,并整理就可以得到,\(p(x,\theta)=p(x|\theta)p(\theta)\)。
对每个式子加上\(|S\)即可得到上述公式,注意\(p(x|\theta,S)\)就是指在\(\theta和S\)条件下,相当于\(p(x|\theta)\)和\(p(x|S)\),也即\(p(x|(\theta,S))\)。
上面式子中,\(x\)是测试样本,\(S\)是训练集。\(x\)和\(S\)的选取是独立进行的,因此,\(p(x|θ,S)\)可以写成\(p(x|θ)\)。所以,贝叶斯估计的核心问题就是下面这个公式:
$$p(x|S)=\int p(x|\theta)p(\theta|S)d\theta (2)$$
下面这句话一定要理解:这里\(p(x|θ)\)是\(θ\)关于测试样本\(x\)这一个点的似然估计,而\(p(θ|S)\)则是\(θ\)在已有样本集合上的后验概率。
上面这个式子就是贝叶斯估计最核心的公式,它把类条件概率密度\(p(x|S)\) (这里一定要理解为什么是类条件概率密度,其实这个的准确写法可以是\(p(x|S_i)\),或者 \(p(x|w_i,S_i)\),具体原因参见本文前面关于极大似然估计的部分)和未知参数向量\(θ\)的后验概率密度\(p(θ|S)\)联系在了一起。如果后验概率密度\(p(θ|S)\)在某一个值\(\hat{θ}\)附近形成显著的尖峰,那么就有\(p(x|S)≈p(x|\hat{θ})\),就是说,可以用估计值\(\hat{θ}\)近似代替真实值所得的结果。
因此,贝叶斯估计实际上解决的根本问题不是去估计参数(\(P(\theta|S)\)),而是求新的测试样本可能出现的概率(\(P(x|S)\)),也就是样本的类条件概率密度函数的值,或者说是要学习到类条件概率密度函数。只不过我们需要利用到后验概率密度\(P(\theta|S)\)来求类条件概率\(P(x|S)\),并且会在后验概率密度\(p(θ|S)\)形成尖峰处(n不断增大,\(\sigma\)越来越小,即估计的不确定性不断降低),近似取得该类条件概率\(P(x|S)\)的估计值。
这也是为什么本文一开始并没有直接讲贝叶斯估计,而是先说明极大似然估计和最大后验估计的原因。其中,\(p(x|θ)\)和极大似然估计中的似然函数\(p(x;θ)\)其实是一样的,而后验概率\(p(θ|S)\)为:
$$p(\theta|S)=\frac{p(S|\theta)p(\theta)}{p(S)}=\frac{p(S|\theta)p(\theta)}{\int p(S|\theta)p(\theta)d\theta} (3)\\\\
p(S|\theta)=\prod_{k=1}^m p(x^{(k)}|\theta) \\\\
其中,p(S|θ)和极大似然估计中的p(S;θ)一样,\\\\
同理,p(x^{(k)}|\theta)和极大似然估计中的p(x^{(k)};\theta)是一样的。\\\\
不同点在于,关于\theta是未知的固定值还是随机变量的区别。
$$
贝叶斯公式的分子,相当于条件概率里的\(P(S,\theta)\)联合概率,而分母是先通过条件概率\(P(S|\theta)p(\theta)\)得到联合概率\(P(S,\theta)\),然后通过联合概率求得边缘概率\(p(S)\)。
具体的,给定一个训练集\(S={\{(x^{(i)},y^{(i)})\}}_{i=1}^m\),参数\(\theta\)的后验概率分布如下:
$$p(\theta|S)=\frac{p(S|\theta)p(\theta)}{p(S)}
=\frac{\left(\prod_{i=1}^m p(y^{(i)}|x^{(i)},\theta)\right)p(\theta)}{\int_{\theta}\left(\prod_{i=1}^m p(y^{(i)}|x^{(i)},\theta)p(\theta)\right)d\theta} \\\\
其中,p(y^{(i)}|x^{(i)},\theta)=p(y^{(i)}|(x^{(i)},\theta)),即在x^{(i)},\theta已知情况下,样本类别为y^{(i)}的概率。
$$
注意到前面似然估计中我们用的是,\(p(y^{(i)}|x^{(i)};\theta)\)的x和与\(\theta\)以分号隔开,表示\(\theta\)是一个具体的未知值。上述贝叶斯估计用的是\(p(y^{(i)}|x^{(i)},\theta)\)的x和\(\theta\)之间以逗号隔开,表示\(\theta\)是随机变量。
公式2中的\(p(y^{(i)}|x^{(i)},\theta)\)形式来源于所选模型,比如使用贝叶斯Logistic回归模型(bayesian logistic model,BLR),那么有:
$$p(y^{(i)}|x^{(i)},\theta)=h_\theta(x^{(i)})^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}}\\\\
其中,h_\theta(x^{(i)})=\frac{1}{1+exp(-\theta^Tx^{(i)})}$$
在对新样本进行预测时,根据上述得到的公式(2),可以使用如下公式计算后验概率:
$$p(y|x,S)=\int_{\theta} p(y|x,\theta)p(\theta|S)d\theta$$
上式中的\(p(\theta|S)\)后验概率使用贝叶斯公式(3)计算。
如果预测的是在给定x情况下y的值,则使用下列公式:
$$E[y|x,S]=\int_y yp(y|x,S)dy$$
最大后验估计和贝叶斯估计的联系
上述公式2称作全贝叶斯预测(fully Bayesian prediction)。可以看到,贝叶斯估计需要在在\(\theta\)上计算后验概率\(p(\theta|S)\)。不幸的是计算该后验分布非常困难,因为根据(3),需要在\(\theta\)上求积分,即对所有的参数求积分,而\(\theta\)经常是高维度的。
因此实践中,经常对后验分布进行近似求解。一个通常的近似方法是对公式2中的后验分布中的\(\theta\)使用点估计来代替。即:
$$\hat{\theta}_{MAP}=arg\max_{\theta}p(\theta|S)=arg\max_{\theta}p(S|\theta)p(\theta)=arg\max_{\theta}(\prod_{i=1}^m p(y^{(i)}|x^{(i)},\theta))p(\theta)$$
\(p(y^{(i)}|x^{(i)},\theta)\)是\(\theta\)在样本点\((x^{(i)},y^{(i)})\)的点估计,实际上该公式就是最大后验估计中的公式。即最大后验估计是贝叶斯估计的一种近似。
从以上可以看出,一方面,极大似然估计和最大后验概率都是参数的点估计。在频率学派中,参数固定了,预测值也就固定了。最大后验概率是贝叶斯学派的一种近似手段,因为完全贝叶斯估计不一定可行。
贝叶斯估计和正则化
正则化,对于监督学习而言,我们有如下的目标函数:
$$\theta^{*}=arg \min_{\theta} \sum_{i} L(y^{(i)},f(x^{(i)};\theta))+\lambda \Omega(\theta)$$
其中,第一项\(L(y^{(i)},f(x^{(i)};\theta))\)衡量我们的模型对第\(i\)个样本的预测值\(f(x^{(i)};\theta)\)和真实标签\(y^{(i)}\)之间的误差。我们要最小化这一项,根据ERM,即训练误差最小化。但我们不仅要保证训练误差最小,我们更希望模型的泛化误差小,所以加上第二项,也就是对参数\(\theta\)的正则化函数\(\Omega(\theta)\)取约束我们的模型,使其尽量简单,即惩罚复杂的模型,约束要优化的参数。这个正则化函数就是我们常说的\(L_0,L_1,L_2\)范数。这是防止过拟合的重要手段。
上述方法我们经常使用极大似然估计来最优化。注意此时估计时,是需要加上正则化项才能防止过拟合的。
那么前面我们提到的贝叶斯估计,又是如何做到防止过拟合呢? 我们知道全贝叶斯估计很难计算,因此使用最大后验估计来近似。这里我们直接讨论最大后验估计。我们要从最大后验估计推导出上述目标函数的形式,即加了正则化项的极大似然估计。
$$\hat{\theta}_{MAP}=arg\max_{\theta}p(\theta|S)=arg\max_{\theta}p(S|\theta)p(\theta)=arg\max_{\theta}(\prod_{i=1}^m p(y^{(i)}|x^{(i)},\theta))p(\theta)$$
当\(\theta\)的先验概率分布满足均值为0的正态分布的时候,对于\(\theta\)的每一个分量\(\theta_j\),都有:
$$p(\theta_j)=\mathcal{N}(\theta_j|0,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{\theta_j^2}{2\sigma^2}}$$
此时,根据\(\theta_i\)之间独立同分布,有,\(p(\theta) = \prod_{j=1}^n p(\theta_i)\)
对最大后验估计两边取对数有:
$$log(\hat{\theta}_{MAP})=arg\max_{\theta} \sum_{i=1}^m \left(log \ p(y^{(i)}|x^{(i)},\theta)\right)+log \ p(\theta) \\\\
=arg\min_{\theta} -\sum_{i=1}^m \left(log \ p(y^{(i)}|x^{(i)},\theta)\right)-log \ p(\theta)$$
代入公式展开有:
$$\theta^{*}=log(\hat{\theta}_{MAP})=arg\min_{\theta} -\sum_{i=1}^m \left(log \ p(y^{(i)}|x^{(i)},\theta)\right)-log \ p(\theta)\\\\
=arg\min_{\theta} -\sum_{i=1}^m log \ p(y^{(i)}|x^{(i)},\theta)-\sum_{j=1}^n log \ p(\theta) \\\\
= arg\min_{\theta} -\sum_{i=1}^m log \ p(y^{(i)}|x^{(i)},\theta)+\frac{1}{2\sigma^2}\sum_{j=1}^n \theta_j^2+nlog(\sqrt{2\pi\sigma^2}) \\\\
= arg\min_{\theta} -\sum_{i=1}^m log \ p(y^{(i)}|x^{(i)},\theta)+\lambda\sum_{j=1}^n \theta_j^2 \\\\
(\lambda=\frac{1}{\sigma^2},常数可以去掉)
$$
对比下式:
$$\theta^{*}=arg \min_{\theta} \sum_{i} L(y^{(i)},f(x^{(i)};\theta))+\lambda \Omega(\theta)$$
可以看到,似然函数部分对应于损失函数(训练误差),而先验概率部分对应于正则化项。此处是\(L_2\)正则化,等价于参数\(\theta\)的先验概率分布满足正态分布。
最终的公式就是岭回归计算公式。与上面最大似然估计推导出的最小二乘相比,最大后验估计就是在最大似然估计公式乘以高斯先验,这就理解了L2正则就是加入高斯先验知识。
拓展,当先验概率分布满足均值为0的拉普拉斯分布的时候,即:
$$p(\theta_j)=\mathcal{Lplace}(\theta_j|0,b)=\frac{1}{2b}e^{-\frac{|\theta_j|}{b}}$$
此时根据最大后验估计可以推导出:
$$\theta^{*}= arg\min_{\theta} -\sum_{i=1}^m log \ p(y^{(i)}|x^{(i)},\theta)+\lambda\sum_{j=1}^n |\theta_j| \\\\
(\lambda=\frac{1}{b})
$$
最终的公式就是Lasso计算公式。与上面最大似然估计推导出的最小二乘相比,最大后验估计就是在最大似然估计公式乘以拉普拉斯先验,这里就理解了L1正则就是加入拉普拉斯先验知识。
我们之前学习的线性回归的代价函数使用的最小二乘法,实际上是在最大似然法基础上加上残差的正态分部假设得出的。同样如果假设残差是拉普拉斯分布,得出的就是最小一乘。
总结一句,从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。