©PaperWeekly 原创 · 作者|王东伟

单位|致趣百川

研究方向|深度学习


本文介绍正则化(regularization)。

神经网络模型通过最小化误差得到最优参数,其误差函数具有如下形式:

现在我们添加正则化项,得到优化目标:

称为目标函数(objective function)。添加正则化项的作用是防止模型过拟合,其中,1/2 系数仅仅是为了在求梯度的时候得到 而不是

以下通过一个简单的实验说明正则化的作用。

对直线 y=x 进行等间距采样,并且加入随机噪声,得到 10 个数据样本如下:


▲ 图1


采用以 Sigmoid 为激活函数的 2 层神级网络模型拟合训练数据,图 2.1、2.2 分别为 λ=0、λ=0.5 的模型拟合结果:

▲ 图2.1 λ=0

▲ 图2.1 λ=0.5


可以看到,通过正则化(即 λ>0),我们得到了更符合预期的模型。假如没有正则化(即 λ=0),模型唯一的目标是尽可能降低误差,因此在训练数据较少的情况下,模型将有可能完美拟合带噪声的训练数据(即误差为零),这就是过拟合。正则化可以在一定程度上抑制过拟合,让模型获得抗噪声的能力,这将提升模型对未知样本的预测性能。


贝叶斯线性回归与正则化


考虑线性回归问题,我们定义 为真实值, 为测量值。假如真实值满足 ,由于测量仪器、环境等因素的影响,往往我们得到的数据会引入噪声,于是我们可以假设:

以上即为贝叶斯线性回归模型,其中 服从正态分布(中心极限定理告诉我们这是一个合理的假设,你可以自行了解)。

上述假设可以理解为:给定 。也就是:

注意到上式省去了 ,那是因为我们可以通过给向量 加入常数维度 1,使得 可以被吸收到 中。即:

现在我们可以求解 。一个自然的想法是,对于给定的输入, 决定了 的概率分布,那么, 应该让测量值 出现的概率最大,即:

以上称为极大似然估计(Maximum Likelihood Estimate,MLE)。

进一步,我们假设各个数据样本测量统计独立,则有:

可以看到,MLE 的优化目标与神经网络模型的最小平方误差具有相同形式。


接下来,我们从另一个角度考虑上述线性回归的优化问题。

▲ 图3 source: wikipedia

图 3 所示,蓝色和绿色曲线都可以拟合数据点,我们可以把拟合数据点的曲线视为函数集合或者函数空间,问题是应该选择哪条曲线?


既然拟合数据的曲线是不确定的,我们可以将曲线的参数 视为随机变量,并且进一步地假定 θ 符合特定的先验概率分布。其中一个合理的假定是高斯分布 为单位矩阵,即:



给定数据样本,我们的目标是最大化后验概率,即:


以上为最大后验估计(Maximum A Posteriori Estimate, MAP)。


由贝叶斯定理得到:
其中,

可以看到 MAP 的优化目标与开篇引入正则化的目标函数有相同的形式。

从贝叶斯线性回归的角度,正则化通过给出参数的先验概率分布假设,并由最大化后验概率求得最优参数。直观地讲,正则化自动选择了先验假设下最“合理”的参数。使用高斯分布作为先验和 MAP 优化的贝叶斯线性回归相当于“岭回归”(ridge regression), 对应 L2 正则化( 表示 p- 范数)。
我们还可以使用拉普拉斯分布(Laplace distribution)作为先验,此时将得到 ,对应 L1 正则化。L1 正则化的主要特性是可以得到稀疏解(即部分 为零),也就是说, L1 有特征选择的效果。如果特征维数很大(比如 1 亿维),L1 正则化将可以提升模型推理阶段的内存开销,参阅 [Regularization for Sparsity: L₁ Regularization]


Dropout

除了 L2 和 L1 正则化,Dropout 也可以防止模型过拟合。
▲ 图4 source: Dropout 2014年论文

图 3 展示了 Dropout 的算法原理。在模型训练阶段,每一个隐藏层神经元以概率 1-p 不被激活(也就是神经元输出置零)。在测试阶段,神经元不作 Dropout 处理,但是输出值乘以 p,这是为了保持测试阶段与训练阶段的隐藏层输出期望值不变。实验显示 p=0.5 在很多类型的神经网络模型和任务中为最优值。


论文中还指出 Dropout 具有“模型组合”(model combination)的作用,理由是,每一层 n 个神经元的网络经过 Dropout 都会产生 个可能的子网络,所以加入 Dropout 操作的神经网络模型训练,实际上同时训练了多个不同的共享大部分参数的模型,而在测试阶段,则相当于使用了多个模型的预测结果。

以 Python 为例,加入 Dropout 的训练阶段前向传播有如下形式(@ 为 numpy 类型的矩阵乘积运算):

h1 = x @ w1 + b1
h1 = np.maximum(h1, 0) # ReLU作为激活函数
drop = np.random.rand(*h1.shape) < p # p为神经元激活的概率
h1 = h1 * drop
h2 = h1 @ w2 + b2
h2 = np.maximum(h2, 0)
drop = np.random.rand(*h2.shape) < p
h2 = h2 * drop
out = h2 @ w3 + b3

在测试阶段:

h1 = np.maximum(x @ w1 + b1, 0) * p
h2 = np.maximum(h1 @ w2 + b2, 0) * p
out = h2 @ w3 + b3

由于测试阶段的乘数 p 仅仅是为了达到输出期望的一致性,因此我们可以通过在训练阶段作缩放操作达到同样的目的,调整上述代码得到:

h1 = x @ w1 + b1
h1 = np.maximum(h1, 0)
drop = (np.random.rand(*h1.shape) < p) / p # 缩放操作
h1 = h1 * drop
h2 = h1 @ w2 + b2
h2 = np.maximum(h2, 0)
drop = (np.random.rand(*h2.shape) < p) / p
h2 = h2 * drop
out = h2 @ w3 + b3

测试阶段的代码调整为:

h1 = np.maximum(x @ w1 + b1, 0)
h2 = np.maximum(h1 @ w2 + b2, 0)
out = h2 @ w3 + b3

现在,测试阶段保留了原有的模型结构,超参数 p 仅作用于训练阶段。通常我们更倾向于后一种实现方式,称为 inverted dropout。

Dropout 最早的论文发表于 2012 年 [Improving neural networks by preventing co-adaptation of feature detectors. G. E. Hinton. University of Toronto. 2012.],随后 2013 年的另一篇论文探讨了 Dropout 与 L2 正则化的联系 [Dropout Training as Adaptive Regularization. Stefan Wager. Stanford University. 2013.],还有 2014 年 Dropout 论文 [Dropout: A Simple Way to Prevent Neural Networks from Overfitting. Nitish Srivastava. University of Toronto. 2014.] 

本文关于 MLE 和 MAP 的推导部分参考了康奈尔大学的 CS 课程 [Linear Regression. Cornell University. 2018.] 


参考文献

[1] Improving neural networks by preventing co-adaptation of feature detectors. G. E. Hinton. University of Toronto. 2012. 
[2] Dropout Training as Adaptive Regularization. Stefan Wager. Stanford University. 2013. 
[3] Dropout: A Simple Way to Prevent Neural Networks from Overfitting. Nitish Srivastava. University of Toronto. 2014. 
[4] Linear Regression. Cornell University. 2018. 
[5] 贝叶斯线性回归. 百度百科. 
[6] Neural Networks Part 2: Setting up the Data and the Loss. Stanford University. 2020. 
[7] Regularization for Sparsity: L₁ Regularization. 2020.


更多阅读




#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:[email protected] 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



继续阅读
阅读原文