深度学习(Deep Learning)读书思考三:正则化


概述


正则化是机器学习中非常重要并且非常有效的减少泛华误差的技术,特别是在深度学习模型中,由于其模型参数非常多非常容易产生过拟合。因此研究者也提出很多有效的技术防止过拟合,比较常用的技术包括:

    参数添加约束,例如L1、L2范数等训练集合扩充,例如添加噪声、数据变换等Dropout

该文主要介绍深度学习中比较常见几类正则化方法以及常用参数选择,并试图解释其原理。


正则化技术


参数惩罚

通过对模型参数添加惩罚参数来限制模型能力,常用的就是在损失函数基础上添加范数约束。
J˜(θ;,X,y)=J(θ;X,y)+αΩ(θ)

通常情况下,深度学习中只对仿射参数w添加约束,对偏置项不加约束。主要原因是偏置项一般需要较少的数据就能精确的拟合。如果添加约束常常会导致欠拟合。

L2正则

参数约束添加L2范数惩罚项,该技术也称之为Weight Decay、岭回归、Tikhonov regularization等。

J˜(w;X,y)=J(w;X,y)+12α||w||2

通过最优化技术,例如梯度相关方法可以很快推导出,参数优化公式为

w=(1−ϵα)w−ϵ∇J(w)

其中ϵ为学习率,相对于正常的梯度优化公式,对参数乘上一个缩减因子。

假设J是一个二次优化问题时,模型参数可以进一步表示为w˜i=λiλi+αwi,即相当于在原来的参数上添加了一个控制因子,其中λ是参数Hessian矩阵的特征值。由此可见
1. 当λi>>α时,惩罚因子作用比较小。
2. 当λi<<α时,对应的参数会缩减至0

L1正则

对模型参数添加L1范数约束,即

J˜(w;X,y)=J(w;X,y)+α||w||1

如果通过梯度方法进行求解时,参数梯度为
∇J˜(w)=αsign(w)+∇J(w)

特殊情况下,对于二次优化问题,并且假设对应的Hessian矩阵是对角矩阵,可以推导出参数递推公式为wi=sign(w∗i)max(|w∗i|−αλi,0),从中可以看出
当|w∗i|<αλi时,对应的参数会缩减到0,这也是和L2正则不同地方。
对比L2优化方法,L2不会直接将参数缩减为0,而是一个非常接近于0的值。

L2 VS L1

主要区别如下:

    通过上面的分析,L1相对于L2能够产生更加稀疏的模型,即当L1正则在参数w比较小的情况下,能够直接缩减至0.因此可以起到特征选择的作用,该技术也称之为 LASSO如果从概率角度进行分析,很多范数约束相当于对参数添加先验分布,其中L2范数相当于参数服从高斯先验分布;L1范数相当于拉普拉斯分布。

范数约束-约束优化问题

从另外一个角度可以将范数约束看出带有参数的约束优化问题。带有参数惩罚的优化目标为

J˜(θ;,X,y)=J(θ;X,y)+αΩ(θ)

带约束的最优问题,可以表示为

minJ(θ;X,y)
s.t(θ)<k

通过KKT条件进行求解时,对应的拉格朗日函数为

L(θ,α;x,y)=J(θ;x,y)+α(Ω(θ)−k)

从约束优化问题也可以进一步看出,L1相对于L2能产生更稀疏的解。
这里写图片描述

这里写图片描述

从图中可以看出,L1最优解常常出现在定点处,此时某些维度上的值肯定为0.


数据集合扩充


防止过拟合最有效的方法是增加训练集合,训练集合越大过拟合概率越小。数据集合扩充是一个省时有效的方法,但是在不同领域方法不太通用。

1. 在目标识别领域常用的方法是将图片进行旋转、缩放等(图片变换的前提是通过变换不能改变图片所属类别,例如手写数字识别,类别6和9进行旋转后容易改变类目)
2. 语音识别中对输入数据添加随机噪声
3. NLP中常用思路是进行近义词替换
4. 噪声注入,可以对输入添加噪声,也可以对隐藏层或者输出层添加噪声。例如对于softmax 分类问题可以通过 Label Smoothing技术添加噪声,对于类目0-1添加噪声,则对应概率变成ϵk,1−k−1kϵ

Dropout


Dropout是一类通用并且计算简洁的正则化方法,在2014年被提出后广泛的使用。
简单的说,Dropout在训练过程中,随机的丢弃一部分输入,此时丢弃部分对应的参数不会更新。相当于Dropout是一个集成方法,将所有子网络结果进行合并,通过随机丢弃输入可以得到各种子网络。例如
这里写图片描述

这里写图片描述

例如上图,通过不同的输入屏蔽相当于学习到所有子网络结构。

因此前向传播过程变成如下形式:
这里写图片描述

这里写图片描述

相当于每层输入多了一个屏蔽向量μ来控制该层有哪些输入会被屏蔽掉。

经验:原始输入每一个节点选择概率0.8,隐藏层选择概率为0.5

Dropout预测策略

既然Dropout过程类似于集成方法,预测时需要将所有相关模型进行求平均,对于Dropout而言∑μp(μ)p(y|x,μ),然而遍历所有屏蔽变量不是可能的事情,因此需要一些策略进行预测。

1. 随机选择10-20个屏蔽向量就可以得到一个较好的解。
2. 采用几何平均然后在归一化的思路。

这里写图片描述

因此只要估计出p˜ensemble(y|x),2012年Hinton给出一种估计方法,可以只需要一遍前向传播计算最终估计值,模型参数乘上其对应输入单元被包含的概率。该方法也被称为“Weight scaling inference rule”
3. 由于隐藏层节点drop的概率常选取0.5,因此模型权重常常除2即可;也可以在训练阶段将模型参数乘上2

dropout预测实例

假设对于多分类问题,采用softmax进行多分类,假设只有一个隐藏层,输入变量为v,输入的屏蔽变量为 d,d元素选取概率为1/2.
则有
这里写图片描述

d*v 代表对应元素相乘,根据几何平均,需要估计p˜ensemble(y|x)

这里写图片描述

每一步推导基本上都是公式代入的过程,仔细一点看懂没问题。
最后一步需要遍历所有的屏蔽向量d,然而完全遍历并且累加后可以得到2^n-1,在除以2^n,最后得到1/2.
简单以二维举例,则d可以选择的范围包括(0,0)(0,1)(1,0)(1,1)则每一维度都累加了2次,除以4可以得到1/2

DROPOUT的优点

1. 相比于weight decay、范数约束等,该策略更有效
2. 计算复杂度低,实现简单而且可以用于其他非深度学习模型
3. 但是当训练数据较少时,效果不好
4.  dropout训练过程中的随机过程不是充分也不是必要条件,可以构造不变的屏蔽参数,也能够得到足够好的解。

其他

半监督学习

通过参数共享的方法,通过共享P(x)和P(y|x)的底层参数能有效解决过拟合。

多任务学习

多任务学习通过多个任务之间的样本采样来达到减少泛化误差。
这里写图片描述

这里写图片描述
多任务学习可以将多个相关任务同时学习,并且共享某些参数。多任务可以包括有监督和无监督学习。
对于深度学习而言,可以共享底层隐藏层自然支持多任务学习。

提前停止(Early Stopping)

在模型训练过程中经常出现随着不断迭代,训练误差不断减少,但是验证误差减少后开始增长。
提前停止(Early Stopping)的策略是:在验证误差不在提升后,提前结束训练;而不是一直等待验证误差到最小值。

   提前停止策略使用起来非常方便,不需要改变原有损失函数,简单而且执行效率高。但是它需要一个额外的空间来备份一份参数提前停止策略可以和其他正则化策略一起使用。提前停止策略确定训练迭代次数后,有两种策略来充分利用训练数据,一是将全量训练数据一起训练一定迭代次数;二是迭代训练流程直到训练误差小于提前停止策略的验证误差。对于二次优化目标和线性模型,提前停止策略相当于L2正则化。

参数共享

前提假设:如果两个学习任务比较相似,我们相信两个模型参数比较接近。因此可以加上一些约束条件,例如假设惩罚项Ω=||wa−wb||2

添加范数惩罚只是参数共享的一种策略,比较通用的策略是可以让部分参数集合保持一致。

集成化方法(Ensemble Methods)

Bagging方法是一种通用的降低泛化误差的方法,通过合并多个模型的结果,也叫作模型平均,高级称呼为 集成化方法。

    Bagging的策略很多,例如不同初始化方法、不同mini batch选择方法、不同的超参数选择方法。与之对应的集成方法是Boosting,通过改变样本权重来训练不同模型。

对抗训练

对抗训练的一个主要思路是,总有些输入变量x和x’,他们本身非常相似但是属于不同的类别。如果能单独拿出来特殊对待能够取得比较好的效果。
主要问题是:对抗样本比较难搜集。

总结

正则化是模型优化中非常重要的降低泛化误差的手段,在深度学习中尤其如此,当模型效果不好时,除了调节优化算法本身外,可以尝试L1、L2正则、数据扩充、提前停止和dropout等策略
本文转自:http://blog.csdn.net/fangqingan_java/article/details/51816002

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用差分的牛顿插值法(Newton)

差分牛顿插值法要求是等距的。 先来看三个概念 差分与均差的关系如下&#xff1a; 牛顿(Newton)插值的基本公式为&#xff1a; 由于差分插值是等距的&#xff0c;所以可以设xx0nh 对于上式 再由差分和均差的关系&#xff0c;可以将上面的黄色部分也就是牛顿插值基本公式转换…

埃尔米特(Hermite)插值

Hermite插值满足在节点上等于给定函数值&#xff0c;而且在节点上的导数值也等于给定的导数值。对于高阶导数的情况&#xff0c;Hermite插值多项式比较复杂&#xff0c;在实际情况中&#xff0c;常常遇到的是函数值与一阶导数给定的情况。在此情况下&#xff0c;n个节点x1,x2,……

keras创建模型

关于Keras模型 Keras有两种类型的模型&#xff0c;序贯模型&#xff08;Sequential&#xff09;和函数式模型&#xff08;Model&#xff09;&#xff0c;函数式模型应用更为广泛&#xff0c;序贯模型是函数式模型的一种特殊情况。 Sequential models&#xff1a;这种方法用于实…

多项式曲线拟合最小二乘法

对给定的试验数据点(xi,yi)(i1,2,……,n),可以构造m次多项式 数据拟合的最简单的做法就是使误差p(xi)-yi的平方和最小 当前任务就是求一个P(x)使得 从几何意义上讲就是寻求给与定点(xi,yi)距离的平方和最小的曲线yp(x)&#xff0c;函数p(x)称为拟合函数或者是最小二乘解&#x…

运动合成——机器学习技术

参考文献&#xff1a;《人体运动合成中的机器学习技术合成综述》 根据机器学习的用途分类&#xff0c;在图形学中使用到的大致如下&#xff1a; 1> 回归和函数逼近。回归是一种插值技术&#xff0c;分析已知数据点来合成新的数据。 2> 降维。从高维数的运动数据…

ICA独立成分分析—FastICA基于负熵最大

1. 概念 官方解释&#xff1a;利用统计原理进行计算的方法&#xff0c;是一种线性变换。 ICA分为基于信息论准则的迭代算法和基于统计学的代数方法两大类&#xff0c;如FastICA算法&#xff0c;Infomax算法&#xff0c;最大似然估计算法等。 这里主要讨论FastICA算法。 先来…

tensorboard的可视化及模型可视化

待整理 How to Check-Point Deep Learning Models in Keras LossWise Tensorboard 中文社区 谷歌发布TensorBoard API&#xff0c;让你自定义机器学习中的可视化 查找tensorflow安装的位置 pip show tensorflow-gpu Name: tensorflow-gpu Version: 1.0.1 Summary: TensorFl…

隐马尔科夫模型——简介

1. 前言 学习了概率有向图模型和概率无向图模型&#xff0c;回头再看了一下隐马尔可夫模型(hidden Markov model&#xff0c;HMM)。 HMM属于树状有向概率图模型&#xff0c;主要用于对时序数据的建模&#xff0c;它的潜在变量是离散的&#xff1b;而另一种状态空间模型&…

训练的神经网络不工作?一文带你跨过这37个坑

近日&#xff0c;Slav Ivanov 在 Medium 上发表了一篇题为《37 Reasons why your Neural Network is not working》的文章&#xff0c;从四个方面&#xff08;数据集、数据归一化&#xff0f;增强、实现、训练&#xff09;&#xff0c;对自己长久以来的神经网络调试经验做了 37…

HMM——前向算法与后向算法

1. 前言 前向算法和后向算法主要还是针对HMM三大问题之一的评估问题的计算&#xff0c;即给定模型参数&#xff0c;计算观察序列的概率。文章不介绍过多公式&#xff0c;主要看两个例子 复习一下HMM的三大要素&#xff08;以海藻&#xff08;可观测&#xff09;和天气&#x…

HMM——维特比算法(Viterbi algorithm)

1. 前言 维特比算法针对HMM第三个问题&#xff0c;即解码或者预测问题&#xff0c;寻找最可能的隐藏状态序列&#xff1a; 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列&#xff0c;找到生成此序列最可能的隐藏状态序列。 也就是说给定了HMM的模型参数和一个观测…

HMM——前向后向算法

1. 前言 解决HMM的第二个问题&#xff1a;学习问题&#xff0c; 已知观测序列&#xff0c;需要估计模型参数&#xff0c;使得在该模型下观测序列 P(观测序列 | 模型参数)最大&#xff0c;用的是极大似然估计方法估计参数。 根据已知观测序列和对应的状态序列&#xff0c;或者说…

Web安全(吴翰清)

安全工程师的核心竞争力不在于他能拥有多少个 0day&#xff0c;掌握多少种安全技术&#xff0c;而是在于他对安全理解的深度&#xff0c;以及由此引申的看待安全问题的角度和高度。 第一篇 我的安全世界观 脚本小子 “Script Kids”。 黑客精神所代表的 Open、Free、Share。…

机器学习两种方法——监督学习和无监督学习(通俗理解)

前言 机器学习分为&#xff1a;监督学习&#xff0c;无监督学习&#xff0c;半监督学习&#xff08;也可以用hinton所说的强化学习&#xff09;等。 在这里&#xff0c;主要理解一下监督学习和无监督学习。 监督学习&#xff08;supervised learning&#xff09; 从给定的训…

Tensorflow中padding的两种类型SAME和VALID

边界补充问题 原始图片尺寸为7*7&#xff0c;卷积核的大小为3*3&#xff0c;当卷积核沿着图片滑动后只能滑动出一个5*5的图片出来&#xff0c;这就造成了卷积后的图片和卷积前的图片尺寸不一致&#xff0c;这显然不是我们想要的结果&#xff0c;所以为了避免这种情况&#xff…

机器学习两种距离——欧式距离和马氏距离

我们熟悉的欧氏距离虽然很有用&#xff0c;但也有明显的缺点。它将样品的不同属性&#xff08;即各指标或各变量&#xff09;之间的差别等同看待&#xff0c;这一点有时不能满足实际要求。例如&#xff0c;在教育研究中&#xff0c;经常遇到对人的分析和判别&#xff0c;个体的…

最小二乘法深入

上次写了一个一次函数yaxb类型的最小二乘法&#xff0c;即可以看做是n维输入列向量对应的一个n维输出列向量&#xff0c;然后对已知结果进行学习&#xff0c;得到拟合公式。这里对m*n的矩阵进行最小二乘法分析。 设模型的输出为和训练集输出&#xff0c;它们之间的平方误差为&…

ubuntu16.04 制作gif

byzanz安装 sudo apt-get install byzanz byzanz-record #录像byzanz-playback #回放 下载完成后打开命令行输入byzanz-record –help 其中我们重点关注几个参数 * -d 动画录制的时间,默认录制10秒 * -e 动画开始延迟 * -x 录制区域的起始X坐标 * -y 录制区域的起始Y坐标 …

典型关联分析CCA(canonical correlation analysis)

先看两个数学概念&#xff1a; 相关系数&#xff08;参看百度百科&#xff09; 相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算&#xff0c;同样以两变量与各自平均值的离差为基础&#xff0c;通过两个离差相乘来反映两变量之间相关程度 相…

Kullback–Leibler divergence(相对熵,KL距离,KL散度)

1 前言 注意两个名词的区别&#xff1a; 相对熵&#xff1a;Kullback–Leibler divergence 交叉熵&#xff1a;cross entropy KL距离的几个用途&#xff1a; ① 衡量两个概率分布的差异。 ② 衡量利用概率分布Q 拟合概率分布P 时的能量损耗&#xff0c;也就是说拟合以后丢失…