本文主要是对吴恩达《深度学习工程师》在线课程关于正则化部分的笔记整理,并进行了一定的扩展。
一、何为正则化
在《深度学习》【1】一书中,正则化的定义是“对学习算法的修改——旨在减少泛化误差而不是训练误差”。我们知道正则化的目的是减少过拟合,对应定义中的泛化误差。那是不是减少过拟合的方法都可以叫做正则化呢?这个问题我暂时还无法解答。通过查阅相关资料我发现,通常在机器学习中大家所说的正则化是对目标函数添加约束(惩罚)的一种方法,比如L2正则化。但是在《深度学习》的书中包括吴恩达的课程中,把那些能减少过拟合的方法都称作“正则化方法”。
《深度学习》第七章内容
关于正则化概念的进一步理解可看参考文献【2】、【3】
二、常见的正则化方法
1、参数范数惩罚
通过对目标函数 J 添加一个参数范数惩罚 Ω(θ),限制模型(如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化后的目标函数记为
J(θ;X,y) = J(θ;X,y) + αΩ(θ)
其中α就是正则化系数。
这里需要补充范数的概念。范数可以理解成距离的强化版本,比如L2范数就是欧氏距离。范数可以分为向量范数和矩阵范数,常见的L-P范数就是一系列向量范数。
正则化中最常用的范数就是L1范数和L2范数。公式表达懒得打,见参考文献【4】
L1范数就是向量x中非零元素的绝对值之和。它又叫曼哈顿距离,最小绝对误差。由于对L1范数优化的解是一个稀疏解,所以L1范数又叫做稀疏规则算子。
L2范数是深度学习中最常见的正则化项,L2正则化又叫做weight decay,权重衰减。
是正则系数。
由于在神经网络中,w是一个矩阵,所以L2范数变成了弗罗贝尼乌斯范数
关于范数更进一步的内容可以看参考文献【4】
2、Dropout regularization 随机失活
就是随机地丢掉一些隐藏单元,将其权重置零。其中涉及的超参数keep_prob就是隐藏单元保留的概率。
需要注意的是在训练时添加dropout,测试时不要使用。
3、Data Augmentation 数据增强
就是在数据输入神经网络之前对数据做一些增强的处理,比如对图片增强对比度,翻转,裁剪什么的。
4、Earlystoping 提前终止
就是让训练提前结束。由于缺陷明显,在此不做进一步探究。
三、为什么正则化可以减少过拟合?
这里的正则化指的是参数范数惩罚正则化方法。可以理解为因为将正则化系数设置得足够大,使得参数w接近于0,所以网络变得简单了。
参考文献
【1】https://github.com/exacity/deeplearningbook-chinese
【2】《【直观详解】什么是正则化》https://blog.csdn.net/haima1998/article/details/79425831
【3】《谈谈自己对正则化的一些理解~》https://blog.csdn.net/wsj998689aa/article/details/39547771
【4】《关于范数的知识整理》https://baijiahao.baidu.com/s?id=1607333156323286278&wfr=spider&for=pc