机器学习和深度学习中的正则化

    正则化是在机器学习和深度学习中作为一种抑制过拟合的比较有效的手段之一,好的算法应该具有良好的泛化能力,即不仅要在训练集数据上表现良好,推广到未知的测试数据时,也能有良好的表现。正则化是一类通过显式设计降低泛化误差来提升算法通用性的策略的统称。由于深度学习中隐藏节点众多,涉及到的参数也众多,正则化就变得尤为重要。本文从正则化定义与正则化的分类两方面来阐述这一概念。

一、正则化的定义:

   正则化被定义为对学习算法的修改,这些修改的目的在于减少泛化误差。通常来说,泛化误差的下降是以训练误差的上升为代价的, 但有些比较好的算法也能兼顾泛化误差和训练误差的良好性能。

    正则化处理可以看成是奥卡姆剃刀原则在学习算法上的应用。奥卡姆原则:当两个假说具有完全相同的解释力和预测力时,以那个较为简单的假说作为讨论依据。在机器学习中,正则化处理得到的正是更加简单的模型。

    从概率论的角度来说,许多正则化技术对应的是在模型参数上施加一定的先验分布,其作用是改变泛化误差的结构。正则化是对欠拟合和过拟合的折中,在不过度增加偏差的情况下显著减少方差。正则化能够改变数据分布,让通过模型得到的数据分布尽可能和真实的数据生成过程相匹配。

    机器学习的任务是拟合出一个从输入x到输出y的分布, 拟合的过程使用的是使期望风险函数最小化的过程,正则化处理使待最小化的函数中既包含结构化的误差函数,也包含人为引入的正则化项。由于未知分布的期望风险不能直接求解,因而需要引入训练数据集,以在训练数据集上计算出的经验风险来近似期望风险, 并通过经验风险最小化实现期望风险最小化。

    以上就是学习算法的整体流程,也是正则化发挥作用的地方,正则化的处理就是针对学习算法中的不同变量来展开的。‘

二、正则化策略的分类:

   1.     基于训练数据(data)的正则化:训练模型的质量很大程度上取决于训练数据。除了选择噪声较小的训练数据外,还可以通过正则化来提升训练数据的质量。正则化处理数据的一个目的是执行预处理和特征提取,从而将特征空间或数据分布修改为其他形式;另一个目的是通过生成新样本来创建具有更大容量、甚至是无限容量的增强数据集。这两个目的之间互相独立,因而可以结合起来使用。基于训练数据的正则化包含以下两种常用方式:

  •      数据集增强:对训练数据正则化的做法是在训练数据集上施加变换,从而产生新的训练数据集。变换的形式是以满足某种概率分布的随机变量作为自变量的函数,最简单的实例就是向数据添加随机的 高斯噪声。由于提升机器算法模型泛化能力的最直接办法就是使用更多的数据进行训练,因而使用随机参数的变换可以用于生成‘假’数据,这种方法被称为数据集增强。
  •     Dropout:Dropout是一种集成方法,通过结合多个模型来降低泛化误差。之所以说Dropout是基于训练数据的正则化,是因为它构造不同的数据集来训练不同的模型,每个数据集则通过对原始数据集进行有放回采样得到。Dropout的关键想法是在训练期间从神经网络中随机丢弃神经元以及其连接,得到简化的网络。而在测试的时候,一个简单的小权重网络就可以逼近所有这些简化网络的预测的平均效果。其优点在于计算简单方便,同时还具有对不同的模型和训练过程的普适性。但是Dropout对训练集容量的要求很高,少量训练样本并不能发挥其优势。

    2.    基于网络架构(network architecture)的正则化 :从输入到输出的映射必须具有某些特质才能很好地适应数据,而对              输入-输出映射进行假设的方法正对应着网络结构的选择,这激发了基于网络架构的正则化方法。对映射的假设既可以关注          深度网络中不同层次的具体操作,也可以关注层与层之间的连接方式。基于网络架构的正则化通常会简化关于映射的假               设,再让网络架构逐步逼近简化后的映射。这限制了模型的搜索空间,为找到更好的解提供了可能性。

  •      参数共享:参数共享是一类重用参数的正则化方法。通过强迫某些参数想等,可以让不同的模型共享唯一的参数。从而让它们对相似的输入产生相似的输出,如果放宽参数共享的条件,使它们不必完全想等而是相互接近,对应的就是对参数范数添加正则项。常用的参数共享方法是将一个监督学习模型的参数正则化,令其去接近另一个无监督学习模型,那么这个无监督学习模型就可以匹配监督模型的参数。
  • 对传递参数的正则化:一些传递函数是专门为正则化设计的,比如在Dropout中使用的maxout单元,它能在测试时更精确地近似模型结合预测结果的集合平均值。而通过添加噪声,原始的确定传递函数就可以被泛化为随机模型,其分布特性也就可以被利用起来。

   3.     基于误差函数(erro function)的正则化和基于正则化项(the regularization)的正则化  :

  •       基于误差函数的正则化和基于正则化项的正则化可以放在一起讨论。理想情况下,误差函数应当适当地反映算法的性能,并体现出数据分布的一些特点(比如均方误差或交叉熵)。对误差函数进行正则化就相当于添加额外的学习任务,从而导致其目标发生变化,这部分变化就会体现在误差函数中额外的正则化项上。因而在大部分情况下,对基于正则化项的正则化的讨论就包含了基于误差函数的正则化。
  •         正则化项也叫惩罚项。与误差函数的不同,正则化项与目标无关,而是用于表示所需模型的其他属性。误差函数表示的是算法输出与目标真实输出之间的一致性,正则化项表示的则是关于映射关系的额外的假设。这一特点决定了正则化项的值可以通过未标记的测试样本来计算,利用测试数据改进学习模型。
  • 常用的正则化项是权重衰减。深度学习中的参数包括每个神经元中的权重系数与偏置。由于每个权重会指定两个变量之间相互作用的方式,因而拟合权重所需要的数据量要比拟合偏置多得多。相比之下,每个偏置只控制一个变量,即使不对它做正则化也不会产生太大方差,正则化的方式不对反而还会增加算法的偏差。这是正则化的对象只包括权重而不包括偏差的原因。
  • 在权重衰减中,正则化项是以范数的形式表示的,常用的范数包括L1范数和L2范数,即对于LASSO回归与岭回归。
  • L2范数作为正则化项时,其作用是使权重系数更接近原点。引入权重衰减后,在每一步的梯度更新之前,权重向量都会被收缩。整体来看,这使得在显著减小目标函数方向上的权重保存完好,无益于目标函数减小方向所对应的分量则会因正则化而被逐渐地衰减掉。从泛化误差的角度来说,L2范数能够感知具有较高方差的输入,与这些输入特征相关的权重则被收缩。
  • 相比之下,L1范数和L2范数有本质 的区别。L1正则化得到的是稀疏的解,它将一部分较小的权重直接砍掉。这样做可以从可用的特征子集中选择出具有意义的特征,从而简化学习问题。
   4.         基于最优化过程(optimization)的正则化:

  •     根据其优化过程作用的阶段不同,这类正则化方法可以分为三种:
            a.    对初始化的正则化:影响着权重系数的最初选择,这既可以通过在特定的概率分布中选择初始化参数完成,也可以                       经由预训练完成;

            b.    对参数更新的正则化:包括对更新规则的改进和对权重参数的过滤。

            c.    对终止条件的正则化:早停是一类重要的正则化方法,它是针对终止条件的正则化。当训练的表示能力过强时,泛                      化误差会呈现U型,随着训练时间的增加先降低再升高。这意味着只有返回使泛化误差最低的参数集设置,才能得                      到更低的泛化误差。当测试集上的泛化误差在预先指定的循环次数内没有改善时,训练就会终止,这种策略就叫做                       早停。

                   早停的简单性和有效性使它成为深度学习中应用最为广泛的正则化方法。它不需要改变训练过程,也就不会影响到                    学习动态,唯一要注意的问题就是要避免陷入局部最优解。早停的正则化效果在数学上也有解释,在简单的模型                          下,早停和L2正则化是等价的。

       需要注意的是,以上的分类方式并不是互斥的,一种正则化方法通常针对的是学习算法中的多个变量。做出分类的目的是帮         助你更好地理解正则化的设计思路。

        参考:王天一博士在极客时间推出的《人工智能基础课》专栏。       




你可能感兴趣的:(机器学习算法,深度学习,机器学习,深度学习,正则化)