机器学习系列笔记(1)——统计机器学习基础

统计学习概论

损失函数是指:针对单个具体样本,表示模型预测值与真实样本值之间的差距。损失函数越小,说明模型对于给样本预测越准确。常见损失函数有0-1损失函数、平方损失函数、绝对损失函数以及对数损失函数。
机器学习系列笔记(1)——统计机器学习基础

经验风险:对所有训练样本都求一次损失函数,再累加求平均。即,模型f(x)f(x)对训练样本中所有样本的预测能力。

Remp(f)=1Ni=1NL(yi,f(xi))R_{emp}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))

所谓经验风险最小化即对训练集中的所有样本点损失函数的平均最小化。经验风险越小说明模型对训练集的拟合程度越好。

期望风险:对所有样本(包含未知样本和已知的训练样本)的预测能力,是全局概念。经验风险则是局部概念,仅仅表示决策函数对训练数据集里的样本的预测能力。

Rexp(f)=Ep[L(Y,f(X))]=x×yL(y,f(x))P(x,y)dxdyR_{exp}(f)=E_p[L(Y,f(X))]=\int_{x\times y}L(y,f(x))P(x,y)dxdy

理想的模型(决策)函数应该是让所有的样本的损失函数最小,即期望风险最小化,但是期望风险函数往往不可得(这是因为联合分布P(X,Y)P(X,Y)未知),所以用局部最优代替全局最优,这就是经验风险最小化的理论基础。

总结:经验风险是局部的,基于训练集所有样本的损失函数最小化,经验风险是局部最优,是现实可求的。期望风险是全局的,基于所有样本点损失函数最小化。是全局最优,是理想化的不可求的。

下图是统计机器学习的一般框架。需要注意的是,训练样本的独立同分布是非常重要的。
机器学习系列笔记(1)——统计机器学习基础
期望风险非常重要,是贯穿于机器学习算法的核心。有一个问题没有弄明白,这里的目标函数ff与我们常说的优化函数是不是一个东西?查阅了李航的《统计学习方法》,在第一章的第三节对统计学习的三要素做了比较清楚的叙述,即方法=模型+策略+算法。统计学习首先需要考虑学习什么样的模型,在监督学习过程中,模型就是所要学习的条件概率分布决策函数,例如,决策函数是输入变量的线性函数,那么模型的假设空间就是所有这些线性函数构成的函数集合,假设空间是由一个参数向量决定的函数族。那么这里的目标函数ff就是决策函数或者条件概率分布,比如在回归问题中是线性函数,在分类问题中可以是概率分布函数。有了模型的假设空间,统计学习接着需要考虑按照什么样的准测学习或选择最优的模型,损失函数即度量模型一次预测的好坏。常见的几种损失函数为0-1损失、平方损失、绝对损失,对数损失函数其实对应的就是极大似然估计,取loglog的目的是将乘积的形式转变为求和,取负号是为了将最大似然转化为最小损失。

另外,为什么期望风险不可求?由于联合分布P(X,Y)P(X,Y)是未知的,如果知道联合分布,可以从联合分布直接求出条件概率分布P(YX)P(Y|X),也就不需要进行学习了。

在假设空间、损失函数以及训练数据集确定的情况下,经验风险最小化的策略认为,经验风险最小的模型是最优的模型。当样本容量足够大时,能有很好的学习效果。比如,极大似然估计就是当模型是条件概率分布,损失函数是对数损失函数时经验风险最小化的等价形式。

结构风险最小化是为了防止过拟合而提出的策略,结构风险最小化等价于正则化,在经验风险基础上加上表示模型复杂度的正则化项或者惩罚项,正则化项表示模型的复杂度,模型越复杂,正则化项就越大,也就是说,这里的复杂度是对复杂模型的惩罚,正则化项用来在经验风险和模型复杂度上做一个trade off。典型的结构风险最小化比如贝叶斯估计中的最大后验概率估计。

最后一个因素是算法,即如何求解最优模型,在解析解不存在的情况下,需要用数值计算的方法求解。

机器学习系列笔记(1)——统计机器学习基础

这里的推导过程:(备注:条件数学期望,随机变量Y的条件数学期望就是它在给定的某种附加条件之下的数学期望,即E(Yx)=+yf(yx)dyE(Y|x)=\int_{-\infty}^{+\infty}yf(y|x)dy。)
(f(x)y)2dP(x,y)=(f(x)y)2p(x,y)dxdy=(f(x)22yf(x)+y2)p(x)p(yx)dxdy=f(x)2p(x)dxp(yx)dy2f(x)p(x)dxyp(yx)dy+p(x)E(y2x)dx \int(f(x)-y)^2dP(x,y)=\int(f(x)-y)^2p(x,y)dxdy=\int(f(x)^2-2yf(x)+y^2)p(x)p(y|x)dxdy=\int f(x)^2p(x)dx\int p(y|x)dy-2\int f(x)p(x)dx\int yp(y|x)dy+\int p(x)E(y^2|x)dx
上式即最终即如slides所示。要最小化上述期望风险,即最小化Q(f(x),y)Q(f(x),y)(注:因为学习过程是调整f(x)f(x),而p(x)p(x)是固定的),对f(x)f(x)求导,就得到下面的等式,f(x)=E(yx)f(x)=E(y|x)。因此可以看到,对于回归问题是存在最优解的。

那么对于回归问题,其最优解就是这样一个期望。固定x0x_0,假设对随机变量Y满足的是一个高斯分布,则f(x0)f(x_0)就是给定x0x_0的Y的高斯分布的期望,就是其均值。回归问题的最优解与p(yx)p(y|x)这个条件概率分布有关。如果知道了条件概率分布p(yx)p(y|x),那么自然就可以求得E(yx)E(y|x)

分类问题与回归问题的损失函数不相同,在回归问题中,由于需要准确预测标签值yy,因此损失函数是平方损失,而分类问题,分对了损失是0,分错了则没有差别损失都是1,因此其损失用0-1损失来表示。它的期望风险,其实就是示性函数求期望,等同于p{f(x)y}p\{f(x)\neq y\},即0-1分布求期望。那么如何最小化这个期望风险呢?在参考西瓜书贝叶斯学习章节,p{f(x)y}=f(x)cip(cix)p(x)p\{f(x)\neq y\}=\sum_{f(x)\neq c_i}p(c_i|x)p(x),为了使它最小,即f(x)=maxcip(cix)f(x)^*=max_{c_i}p(c_i|x)在分类的时候最优解是贝叶斯分类器,同样它也和p(yx)p(y|x)有关

**所以无论是回归问题还是分类问题,都与条件概率p(yx)p(y|x)有关。**那么对于机器学习模型,最核心的就是找这个条件概率,此时,根据计算该条件概率的方式不同分为三种:

生成模型是非直接的方式,它通过刻画联合概率分布p(x,y)p(x,y)来求条件概率分布,为什么称之为生成模型呢,因为联合概率分布描述了Sample数据是如何生成的,假设联合概率分布服从高斯分布,通过不断地采样就可以得到这些数据,描述了一个生成的过程。

判别式模型:直接计算p(yx)p(y|x),不需要通过贝叶斯公式来转化。

判别函数形式:不通过概率化的模式,根据输出的函数值为多少即为哪一类。

下面介绍的内容为经验最小风险和结构最小风险。补充:在计算期望风险时,联合概率分布是未知的,由大数定律,当样本足够多时,Sample数据(x,y)(x,y)的频率实际上就是该样本出现的概率,即L(f;x,y)dP(x,y)=iL(f;xi,yi)×#(xi,yi)N=1Nj=1NL(f;xj,yj)\int L(f;x,y)dP(x,y)=\sum_{i}L(f;x_i,y_i)\times\frac{\#(x_i,y_i)}{N}=\frac{1}{N}\sum_{j=1}^NL(f;x_j,y_j)

重点(敲黑板):过拟合。在分类问题和回归问题都存在过拟合问题,回归问题即为寻找一条线能够很好地拟合训练数据,而分类问题就是找到一条线能够较好地区分不同的点。多项式曲线拟合。

机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础

机器学习三大类问题:生成式模型、判别式模型、判别函数;

重点:两大类做法,经验风险最小化,结构风险最小化。

机器学习系列笔记(1)——统计机器学习基础

以下内容为重点

选择不同的M值,我们可以学习到不同的曲线,通过与sin(2πx)sin(2\pi x)对比知道当M为3时学出来的模型效果最好。机器学习不是为了让你做训练,而是期望风险最小化,即意味着,对于下次依然通过对sin(2πx)\sin(2\pi x)采样取得的数据,依然能够很好地拟合,但是M=4学到的函数却不能很好地拟合,只是在给定的数据上能够较好地拟合,如果训练数据上偏离一点点则损失就很大。机器学习的目标是使得期望风险最小化,即真正的目标是L(f;x,y)dP(x,y)\int L(f;x,y)dP(x,y),而不仅仅是在训练数据集。对于训练数据S={(x1,y1),...,(xn,yn)}S=\{(x_1,y_1),...,(x_n,y_n)\},机器学习的目标是通过训练数据学习到一个函数,并且achieve a good result with any future observation (x,y)~P,即最小化期望风险,使得在测试数据上也能够有好的表现。接下来的问题是,为什么引入的SRM是这样的形式呢?机器学习系列笔记(1)——统计机器学习基础

从实验结果来看,即在不同M值下学到的模型在训练集和测试集上的损失度量结果,1)模型能较好地拟合训练数据,即模型具有一定的复杂度;2)模型不能太复杂,导致完全拟合训练数据,必须具备一定的泛化性能,对新的数据存在一定的容忍度。引入的J(f)J(f)对数据无关,只与模型的复杂度有关。 如果J小了,但是前面大了;如果J大了,前面小了,都不是最优的结果。在实际训练过程中,通常使用范数,λ\lambda用来强调哪一项起的作用更大,如果λ\lambda比较大,强调的是模型复杂度不能太复杂,一旦稍微复杂,就会有更大的惩罚;小,则说明希望能够更好地拟合训练数据。那么为什么要用范数呢?
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础

观察上图得知,随着M越来越大,每一个维度参数的绝对值也越来越大,试想,当出现过拟合,曲线变得越来越崎岖,在固定其他参数的情况下,只考虑一个参数,在这个参数维度上如果训练数据有0.01的扰动,由于过拟合即测试集数据上的损失较大(预测值与实际采样结果相差很大),则对应的该维参数也必然较大。为了避免上述情况,即对这种情形进行惩罚,所以引入范数来对模型复杂度进行惩罚。

对于λ\lambda,考虑极端情况,如果为0,就是过拟合,只考虑前面一项最小;如果为无穷大,只考虑最小化后面一项,前面一项相比可以忽略,即使得范数更小,此时曲线就是平的,对应欠拟合。使用验证集合来挑选与学习参数无关的但是对算法有用的超参数,比如这里的λ\lambda

机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
随着λ\lambda的逐渐增大,强调的是对模型复杂度的约束,模型不能过于复杂,因此在训练数据上的损失会变大,但是由于增强了其泛化能力,即对数据扰动的容忍,因此在测试集上的损失会降低,随着其值越来越大,则会出现欠拟合,在测试集合上的损失变大,因此,一般选择下图所示的λ\lambda值,一般情况下较好地λ\lambda选择对应测试集上的误差为90%,训练集上的误差为95%。

L1L1范数会产生稀疏性,即最终学到的结果有些特征的系数为0,L2L2范数会选择更多的特征,这些特征的系数都会接近于0,其更多是为了防止过拟合。直观理解L1L1范数和L2L2范数。在左图中,约束条件是一个球,球的法线方向就是ww,如果负梯度方向与法线方向不平行,就可以沿着球的切线方向移动,此时依然满足约束条件(即在球的边界上),但是具有更小的平方损失值,所以最优解是梯度的反方向与球的法线方向平行。对于右图中的L1L1正则化,如果在右边的点,菱形的法线方向和切线方向始终不变,当梯度的反方向与法线不平行时将点往顶点的方向拉,同样如果在左边,同样也会往上方顶点处拉,因此最优解出现在顶点上,所以L1L1正则化能够导致稀疏性。

机器学习系列笔记(1)——统计机器学习基础
为了使模型变得简单,首先添加比较强的约束,然后逐步放松约束。
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
关于L2正则的推导(参看林轩田-机器学习基石):

机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
偏差-方差分解推导过程:
E(f;D)=ED[(f(x;D)yD)2]=ED[(f(x;D)fˉ(x;D)+fˉ(x;D)yD)2]=ED[(f(x;D)fˉ(x;D))2]+ED[(fˉ(x;D)yD)2]+2ED[(f(x;D)fˉ(x;D))(fˉ(x;D)yD)]=ED[(f(x;D)fˉ(x;D))2]+ED[(fˉ(x;D)y+yyD)2]=ED[(f(x;D)fˉ(x;D))2]+ED[(fˉ(x;D)y)2]+ED[(yyD)2]+2ED[(fˉ(x;D)y)(yyD)]=ED[(f(x;D)fˉ(x;D))2]+(fˉ(x;D)y)2+ED[(yyD)2]For ED[(f(x;D)fˉ(x;D))(fˉ(x;D)yD)]=ED[(f(x;D)fˉ(x;D))fˉ(x;D)]ED[(f(x;D)fˉ(x;D))yD]=00=0(ED[(f(x;D)fˉ(x;D))yD]=ED[f(x;D)yD]ED[fˉ(x;D)yD]=0yDffor ED[(fˉ(x;D)y)(yyD)]=ED[fˉ(x;D)y]ED[fˉ(x;D)yD]ED(y2)+ED(yyD)=0(0) E(f;D)=E_D[(f(x;D)-y_D)^2]=E_D[(f(x;D)-\bar{f}(x;D)+\bar{f}(x;D)-y_D)^2]\\=E_D[(f(x;D)-\bar{f}(x;D))^2]+E_D[(\bar{f}(x;D)-y_D)^2]\\+2E_D[(f(x;D)-\bar{f}(x;D))(\bar{f}(x;D)-y_D)]\\=E_D[(f(x;D)-\bar{f}(x;D))^2]+E_D[(\bar{f}(x;D)-y+y-y_D)^2]\\=E_D[(f(x;D)-\bar{f}(x;D))^2]+E_D[(\bar{f}(x;D)-y)^2]+E_D[(y-y_D)^2]\\+2E_D[(\bar{f}(x;D)-y)(y-y_D)]\\=E_D[(f(x;D)-\bar{f}(x;D))^2]+(\bar{f}(x;D)-y)^2+E_D[(y-y_D)^2]\\For\ E_D[(f(x;D)-\bar{f}(x;D))(\bar{f}(x;D)-y_D)]=E_D[(f(x;D)-\bar{f}(x;D))\bar{f}(x;D)]-\\E_D[(f(x;D)-\bar{f}(x;D))y_D]=0-0=0\\(E_D[(f(x;D)-\bar{f}(x;D))y_D]=E_D[f(x;D)y_D]-E_D[\bar{f}(x;D)y_D]=0\\y_D只与噪声有关,与f无关,因此独立)\\for\ E_D[(\bar{f}(x;D)-y)(y-y_D)]=E_D[\bar f(x;D)y]-E_D[\bar f(x;D)y_D]\\-E_D(y^2)+E_D(yy_D)=0(假设噪声期望为0,或者可以更简单的理解,前面括号中的内容是常量\\可以拿出去,后面刚好就是噪声的期望)
D如何理解?偏差-方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不同训练集上学得的结果很可能不同,即便这些训练集样本是独立同分布的。上面式子中,符号的意义:xx表示测试样本,yDy_D表示xx在数据集中的标记,yyxx的真实标记,f(x;D)f(x;D)为训练集D上学得模型ffxx上的预测输出。式子计算的是在不同训练集中算法的期望损失。

有了这些前提,对于偏差-方差分解的结果就更容易看懂了,方差就是使用样本数相同的不同训练集产生的方差,度量了同样大小的训练集的变动所导致的学习性能的变化(使用不同训练集学习到的ff的预测值到期望预测值的偏离程度),即刻画了数据扰动所造成的影响;偏差反映了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。

如果λ\lambda比较小,即不强调模型的复杂度,发生过拟合,对于不同的训练数据所训练出来的ff差别很大,因此对未知样本的预测值与期望预测值相差很大,因此方差很大,偏差比较小 ;如果λ\lambda比较大,则欠拟合,偏差比较大,方差比较小。
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础
机器学习系列笔记(1)——统计机器学习基础

1)过拟合,增大λ\lambda,减小模型复杂度;

2)欠拟合,减小λ\lambda,增大模型复杂度;

3)第三种测试数据与训练数据的概率分布不一样了,(机器学习不是调参,而是需要弄懂原理,才能根据实际结果进行调整),换数据,迁移学习。