正则化的理解

  • 什么叫正则化?
    1、求解不适定问题的普遍方法是:用一组与原不适定问题相“邻近”的适定问题的解去逼近原问题的解,这种方法称为正则化方法。
    2、 机器学习中经常会在损失函数中加入正则项,称之为正则化(Regularize)。为了增加模型的泛化能力,防止模型只在训练集上有效、在测试集上不够有效。

  • 为啥要进行正则化?
    1、正则化就是对最小化经验误差函数上加约束,这样的约束可以解释为先验知识(正则化参数等价于对参数引入先验分布)。约束有引导作用,在优化误差函数的时候倾向于选择满足约束的梯度减少的方向,使最终的解倾向于符合先验知识(如一般的l-norm先验,表示原问题更可能是比较简单的,这样的优化倾向于产生参数值量级小的解,一般对应于稀疏参数的平滑解)。
    2、同时,正则化解决了逆问题的不适定性,产生的解是存在,唯一同时也依赖于数据的,噪声对不适定的影响就弱,解就不会过拟合,而且如果先验(正则化合适,则解就倾向于是符合真解(更不会过拟合了),即使训练集中彼此间不相关的样本数很少。

  • 正则化怎么进行?
    常用的额外项一般有两种,英文称作 l 1 − n o r m l1−norm l1norm l 2 − n o r m l2−norm l2norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数(实际是L2范数的平方)
    注:范数的意义:
    高维空间的函数关系,可以理解为映射表达。映射表达的就是一个集合通过某种关系转为另外一个集合。函数是映射的一个特例。
    为了更好的在数学上表达这种线性关系,从而引进了矩阵。所以矩阵就是表征上述空间映射的线性关系。矩阵就是这些关系的集中数学表达。所以映射就可以理解为:一个集合(向量)通过一种映射关系(矩阵)得到了另外一个集合(另外一个向量)。那么向量的范数,就是表示原有集合的大小。而矩阵的范数,就是表示这个变化过程的大小。
    ###########################################################
    1、 l 0 − n o r m l_0-norm l0norm
    l 0 l_0 l0范数是指向量中非零元素的个数(设0^0=0)
    ∥ X ∥ 0 = ∑ i = 0 n x i 0 \left \| X\right \|_{0}=\sum_{i=0}^{n}x_{i}^{0} X0=i=0nxi0
    若用 l 0 l_0 l0范数来规则化参数矩阵,就是希望参数矩阵大部分元素都为0,使特征矩阵稀疏。但是很难优化求解。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。
    :参数稀疏的好处:
      一个是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么对训练数据可以预测的很好,但是对测试数据就够呛了。
      另一个好处是参数变少可以使整个模型获得更好的可解释性。
      
    2、 l 1 − n o r m l_1-norm l1norm
    l 1 l_1 l1范数是指向量中各个绝对值元素之和
    ∥ X ∥ 1 = ∑ i = 0 n ∣ x i ∣ \left \| X\right \|_{1}=\sum_{i=0}^{n}\left | x_{i}\right | X1=i=0nxi
    因为参数的大小与模型的复杂度成正比,所以模型越复杂,范数就越大。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好,这样就实现了防止过拟合。
      
    3、 l 2 − n o r m l2-norm l2norm
    l 2 l_2 l2范数是各参数的平方和再求平方根
    ∥ X ∥ 2 = ∑ i = 0 n ∣ x i ∣ 2 \left \| X\right \|_{2}=\sqrt{\sum_{i=0}^{n}\left | x_{i}\right |^{2}} X2=i=0nxi2
    让L_2范数的正则化项 ‖ X ‖ 2 ‖X‖_2 X2最小,可以使 X X X的每个元素都很小,都接近于零。但是与范数 l 1 l_1 l1不同,它不使每个元素都为0,而是接近于零。越小的参数模型越简单,越简单的模型越不容易产生过拟合现象。
    注: l 2 l_2 l2范数的好处
    1) l 2 l_2 l2范数解决用正规方程进行最小化代价函数时矩阵可能会不可逆的问题
    2) l 2 l_2 l2正则化可以加快收敛的速度
      
    4、Droupout方法
    L1、L2正则化是通过修改损失函数来实现的,而Dropout则是通过修改神经网络本身来实现的,它是在训练网络时用的一种技巧(trick)。 举例来说,假如现在我们有30个样本,但是定义了300个神经元,那么直接进行训练,由于神经元数量很多,所以模型的拟合效果会很好,也因此会很容易产生过拟合现象。现在我们每一次训练神经网络时,随机丢弃一部分神经元,下一次训练时,再随机丢掉一部分神经元,那么这样我们也可以有效降低过拟合效应。

  • 为什么会产生过拟合,怎么解决?
    1、过拟合现象产生的原因: 当存在较多的变量,较少的训练数据,使得没有足够的训练集来约束这个变量过多的模型,就会导致过拟合的现象。
    2、解决过拟合的思路:
    a)减少变量的个数:舍弃一些变量,保留更为重要的变量。但是,如果每个特征变量都对预测产生影响。当舍弃一部分变量时,也就舍弃了一些信息。所以,希望保留所有的变量。
    b)正则化:保留所有的变量,将一些不重要的特征的权值置为0或权值变小(即对某些项增加惩罚)使得特征的参数矩阵变得稀疏,使每一个变量都对预测产生一点影响。
    3、正则化的思路: 如果参数对应一个较小的值,那么就会得到形式更加简单的假设。惩罚高阶参数,使它们趋近于0,这样就会得到较为简单的假设,也就是得到简单的函数,这样就不易发生过拟合。
    但是在实际问题中,并不知道哪些是高阶多项式的项,所以在代价函数(cost function) 中增加一个惩罚项/正则化项,将代价函数中所有参数值(约定一般不惩罚theta_0, 惩罚从theta_1开始到theta_n )都最小化,收缩每一个参数。
    ################################################################
    补充知识:
    损失函数(Loss Function ):是定义在单个样本上的,算的是一个样本的误差。
    代价函数(Cost Function ):是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
    目标函数(Object Function):最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。
    什么是代价?
    简单理解代价就是预测值和实际值之间的差距(两点之间的距离),那对于多个样本来说,就是差距之和。但注意差距的正负性、多样本性、可计算性,依据这些来确定代价函数。所以代价函数可以使用平方误差:
    请添加图片描述
    上面是拟合线和数据点的关系图,下面是该图的代价函数:
    在这里插入图片描述

  • l 1 l_1 l1范数、 l 2 l_2 l2范数是怎么限制噪声对模型影响的(防止过拟合的)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值