美文网首页
机器学习笔记-04-理解正则化

机器学习笔记-04-理解正则化

作者: 胡涂笔记 | 来源:发表于2019-09-26 21:49 被阅读0次

    在前面两篇文章我们讨论了,极大似然估计的原理,以及如何通过广义线性模型对线性回归和逻辑回归进行建模,从中我们看到了sigmoid函数是如何推导出来的,并运用极大似然估计得到对应模型的代价函数:

    1. 机器学习笔记-02-线性回归和似然估计
    2. 机器学习笔记-03-广义线性模型推导线性回归及逻辑回归

    本文我们讨论以下问题:

    1. 损失函数、代价函数和目标函数
    2. 经验风险和结构风险
    3. 正则化
    4. L1正则和L2正则

    1. 损失函数、代价函数和目标函数

    在开始前,先澄清一下这几个函数的定义(以线性回归为例):

    1. 损失函数(Loss function),定义在单个样本上,为单个样本误差,即:
      L(\theta) = (h_\theta(x) - y)^2
    2. 代价函数(Cost function),定义在整个数据集上,为所有样本的平均误差,即:
      C(\theta) = \frac {1}{2m} \sum_{i = 1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2
      至于为什么多除了2,是为了求导的时候和平方抵消。
    3. 目标函数(Object function),即为优化目标,一般是代价函数加上一个正则化项,即:
      J(\theta) = C(\theta) + \Omega
      线性回归的最小二乘估计就没有使用正则化项。

    接下来,我们看看正则化项是什么,以及它如何起作用。

    2. 正则化

    目标函数等于代价函数,加上正则化项。下面我们依次看,代价函数和正则化项从何说起。

    2.1 经验风险(empirical risk)

    损失函数表示单个样本的拟合程度,损失函数的值越小,说明模型拟合得越好。
    我们训练模型使用的数据(X, Y)是随机变量,它们服从联合分布P(X,Y),所以在训练集上的损失的期望就是:
    R_{exp}(\theta) = E_p[L(\theta)] = \int_{x \times y} L(\theta)P(x,y)dxdy

    有的文章可能使用的符号不一致,但是理解即可。不必过于纠结。

    这是模型关于联合分布的平均意义下的损失,称为风险函数(或期望损失)。
    监督学习的目的就是找到期望风险最小的模型,但是联合分布未知,所以不能计算期望风险。

    如果知道了联合分布,就可以从联合分布求出条件概率分布P(Y|X),也就不需要学习了,正因为不知道联合概率分布,所以才需要学习,因而监督学习就成为一个病态问题。

    根据大数定律,当样本量趋于无穷时,经验风险趋于期望风险,经验风险(经验损失)定义为模型关于训练集的平均损失:
    R_{emp}(\theta) = \frac{1}{m} \sum_{i = 1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2
    此处以线性回归为例,可以看到代价函数其实就是经验风险。

    注意,我们本希望计算期望风险,但是只能用经验风险代替。

    对于训练样本数据量m,经验风险其实就是假设了所有的训练样本(x,y)的联合概率为P(x,y)=1/m,等同对待所有训练样本;而实际情况下不同训练样本的联合概率可能是有比较大的差异的。

    2.2 结构风险最小化

    因训练样本数目有限,所以用经验风险估计期望风险经常并不理想;
    经验风险最小的模型可能并不是最好的,可能导致模型太过复杂,而出现过拟合的现象;
    所以引入结构风险,用来表示模型的复杂度,加入到目标函数中以限制模型的复杂度

    正则化是结构风险最小化策略的实现,为经验风险上加一个正则化项或惩罚项,构成优化目标。正则化项一般是模型复杂度的单调递增函数,模型复杂度越大,正则化值就越大。
    正则化项符合奥卡姆剃刀原则,能够很好的拟合数据,同时参数最为简单的才是最好的模型。

    2.3 举个例子

    至此,我们就弄清楚了什么是正则化以及正则化项的作用,下面我们看一个例子,直观理解一下。
    下面是一个多项式(依次是1次,2次和6次多项式)线性拟合的例子:


    图1 - 1、2、6次多项式拟合效果

    在此强调一下,我们的优化目标是,最小化经验风险和结构风险之和,以期在两者之间找到平衡,保证拟合效果的同时,让模型保持简单(泛化能力)。
    最左边的模型,其拟合效果比较差,经验风险很大,尽管模型简单,结构风险低,但是效果很差;
    中间的模型,拟合效果好,经验风险较低,同时模型复杂度适中,结构风险不高,所以是合适的;
    最右边的模型,拟合得非常好,以至于都开始发挥想象力了,其结构风险太高,泛化能力太差。

    在这里可以看到,如果我们要拟合的曲线用2次项就足以拟合,那就没有必要用更高次的项,也就不会轻易导致过拟合。因此要避免过拟合,可以减少模型的特征,不想减少参数时可以采用正则化(实际效果可能是那些无关紧要的项对应的参数接近或者为0)。

    2.4 L1正则和L2正则

    我们常用的正则化手段是L1正则化和L2正则化,其定义基于范数:

    1. L1正则:模型参数的1-范数,即参数向量元素绝对值之和,表示为\left \| \theta \right \|_1
    2. L2正则:模型参数的2-范数的平方,即向量各个元素的平方和开根的平方,表示为\left \| \theta \right \|_2^2

    在机器学习中,正则化项一般加入一个正则化参数,并除以训练样本个数。
    L1正则化项一般为:
    \frac{\lambda}{m} \sum_{j = 1}^{n} \theta_j
    L2正则化项一般为:
    \frac{\lambda}{2m} \sum_{j = 1}^{n} \theta_j^2
    从正则化项中可以看到,如果正则化参数太小,可能会导致正则化不起作用,不能抑制过拟合;如果正则化参数太大,又可能导致正则化项远大于代价函数的值,导致模型拟合效果变差

    下面直观感受下L1和L2正则化的区别。假设模型有两个参数,模型的代价函数等值线、L1范数及L2范数等值线如下图所示:


    图2 - L1L2正则化直观图示.png

    可以看到,L1范数等值线是菱形;L2范数等值线是圆;都是等值线外部的值大于内部的值。
    我们定义了目标函数为代价函数加上正则化项,图中A和B两个点分别是采用L1正则和L2正则时,在相同代价函数等值线上的最优解。对比A和B两点,我们可以看到L1和L2的一些特征和区别:

    1. L1正则化项更加倾向于使得某个参数的权值为零(比如图中A点,\theta_2参数此时取值就为0),因此L1正则化易于得到稀疏解;也就说明权值为零的特征其实是非必要的,所以L1正则又可以用来进行特征选择。
    2. L2正则化则是寻找范数最小的解,总是有稳定解,它只是趋向于缩小无关特征的权值,而不像L1正则那样设为0。

    其实,如果要使模型最精简,应该使用0-范数,也就是参数中非零的个数,这样目标函数总是尝试寻找最少的特征,但是此时目标函数求解太过困难,所以才选择L1和L2范数作为替代。

    顺便提下,线性回归采用L1正则就是Lasso回归,而采用L2正则则为岭回归。

    3. 总结

    好的,差不多就先这些,看完本文,应该能总体感受到何为正则化,为什么要有正则化以及它起到什么作用:

    1. 评估模型不能直接计算期望风险,因而采用经验风险进行替代;
    2. 在训练数据不足够巨大的情况下,经验风险不能好好替代期望风险,所以引入结构风险,避免模型过于复杂;
    3. 目标函数为代价函数加上正则化项,优化目标是最小化经验风险和结构风险;
    4. L1正则易于得到稀疏解,可以用于特征选择;
    5. L2正则则趋于使无关特征权值趋于零,有稳定解,计算效率更高。
    6. 正则化参数需要选择适中,才能在经验风险和结构风险中取得平衡,得到相对较好的模型。

    相关文章

      网友评论

          本文标题:机器学习笔记-04-理解正则化

          本文链接:https://www.haomeiwen.com/subject/ufeructx.html