深度学习笔记:正则化 1
来源:互联网 发布:facebook免费翻墙软件 编辑:程序博客网 时间:2024/06/16 22:29
1、训练集/验证集/测试集
训练集:用于训练模型。
验证集(简单交叉验证集 cross validation set/development set/dev set):用于评估多种算法模型的性能,尽可能优化算法
测试集(test set):评估模型准确率
验证集和测试集和可以合在一起,当我们不做无偏差估计的时候。
2、偏差、方差
偏差(bias):训练集准确率。模型在训练集表现越好,预测准确率越高,则偏差越低。换句话说,偏差大就是拟合度不够。
方差(variance):验证集准确率。模型在测试集表现越好,则方差越低。可能是拟合度不够,也可能过拟合,把训练集中的特征过度提取,降低了泛化能力。
3、机器学习基础方法
减小偏差的方法:1、更大规模的网络。2、更长训练时间/轮数(不一定有用)
减少方差的方法:1、更多的数据。2、正则化以减少过拟合。
找到一个合适的网络结构(正则化良好的大网络)可能对减小这两个东西同时有帮助。
可以用训练验证集来检测偏差、方差。
4、L2正则化
在损失函数L后面减去一个正则化项,L2正则化项是指权值向量
机器学习中正则化L2和L1的直观理解:http://blog.csdn.net/jinping_shi/article/details/52433975
L2正则化是如何影响权重矩阵w在更新使让w中的数更接近0:http://blog.csdn.net/u012162613/article/details/44261657
5、dropout正则化(随机失活)
设置一个参数keep-prob=一个概率,表示在这一层要把多少比例的神经元设为失活。keep-prob用来乘以本层的输出a,这样就让一部分神经元的输出失效。
每一次迭代(训练出一个模型),失活的神经元是不同的
6、直观理解dropout
随机失活就是在层之间添加一个BOOL类型的矩阵,随机选择矩阵中的0,1,用矩阵乘以该层的输出a,随机去掉本层一些节点。这些矩阵在每一轮训练中随机生成,所以每一轮训练相当于对一个不同结构的网络进行训练。
一般我们在一些参数较多(容易发生过拟合)的层上应用dropout,对于不会过拟合的层,keep-prob可以设为1。计算机视觉领域通常用dropout来正则化。
为什么它有助于防止过拟合?http://blog.csdn.net/stdcoutzyx/article/details/49022443和http://blog.csdn.net/u012162613/article/details/44261657
7、其他正则化方法
可以用微修改原图片的方式增加训练集的数据量,也可以用早停的方式,在训练集偏差仍减小,但测试集方差将增大时停止训练。
8、正则化输入(normalizing inputs)
第一步:均值化0。第二步:归一化样本中的每一个参数,比如输入训练集X有x1、x1两个参数,共有m个样本,即有m个x1、x2,我们要让m个x1和x2的方差相同(同分布)。作用是可以加速训练,因为进行对损失函数的优化过程中(梯度下降),即找损失函数的最/极值得过程中,同分布可以让梯度下降更快到达最/极小值,这样我们就可以用更大的步长,从而加快训练。
用这种方法,也要对测试集进行归一化输入。
9、梯度消失和梯度爆炸
指梯度特别小或者特别大的情况,会导致迭代训练过慢或者不稳定
10、神经网络的权重初始化
为解决梯度消失、梯度爆炸的问题,应该妥善随机初始化权重w[l]。在Relu激活函数中,我们通常会用w[l]=np.random.rand(shape) * np.sqrt(2/n[l-1]),一种高斯分布的随机初始化。np.sqrt(2/n[l-1])是初始化权重过程中可以调节的超参数,它一般不是首要调节的超参数。
11、梯度的数值逼近(双边梯度检测)
讲述的是一种进行梯度检测的方法,使用的是双边检测来检测某个点x的导数近似值(f'(a) = ( f(a+v) - f(a-v) ) / 2v , 其中,v是一个非常小的数),而不是单边,这样的导数近似值更准确,因为更加接近微积分的定义。
12、梯度检测
梯度检测可以检查反向传播的实现过程中的BUG。这样,由双边梯度检验算出某点梯度的近似值,与真实值比较,(比较过程设计矩阵的范数等计算,不过有些类似于矩阵各个位置之差相加后再开平方这种),如果比较地差值小,比如小于 10^-7 这种,可以认为反向传播的实现是正确的,如果比较大,比如 10^-3,应继续debug
总结:
13、实现梯度检测
* 正则化是为了防止过拟合,减小模型的方差,提高泛化能力。
* 正则化输入是为了让训练正常进行,不会发生过慢等情况。
* 梯度检测是为了确保模型中反向传播算法的正确实施
- 深度学习笔记:正则化 1
- 深度学习:正则化
- 深度学习-正则化
- 神经网络与深度学习学习笔记:L2正则化
- 深度学习:正则化方法
- 深度学习中的正则化
- 深度学习:正则化方法
- 深度学习笔记1
- 深度学习笔记(1)
- 深度学习笔记(1)
- 《deep learning》学习笔记(7)——深度学习中的正则化
- 学习笔记:Deep Learning(二)深度神经网络以及正则化
- tensorflow06 《TensorFlow实战Google深度学习框架》笔记-04-04正则化
- 神经网络与深度学习 笔记5 过度拟合和正则化
- 深度学习的正则化(一)
- 深度学习的正则化(二)
- [转]深度学习中的正则化
- 深度学习中的正则化方法
- html title 属性多行显示
- NEUQ-OJ: 1574 角谷猜想
- .net core 实现简单爬虫—抓取博客园的博文列表
- [LUOGU1576] 最小花费
- 使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)
- 深度学习笔记:正则化 1
- Java多线程编程
- lintcode&九章算法——Lintcode No.82 落单的数 ? 待解决
- Kali Linux------其他信息收集手段
- less详细介绍
- python修改列表问题总结
- python学习二--序列
- gui R
- IT风险投资