李宏毅机器学习课程9~~~深度学习技巧


Recipe of Deep Learning


这里写图片描述


Overfitting


这里写图片描述

overfitting的判断是要训练误差与测试误差做比较。这个56-layer的网络在训练集上都没有训练好,说白了就是有点欠拟合。所以仅仅依靠测试集上的结果来判断56-layer比20-layer overfitting是不合理的。

更多理解见
Overfitting and Underfitting With Machine Learning Algorithms


各种改进技巧


这里写图片描述


New activation function


这里写图片描述

这里写图片描述

这里写图片描述

RELU 

relu1.png

relu2.png

relu3.png

针对负向,提出了Leaky ReLU, Parametric ReLU

relu4.png

ReLU,P-ReLU, Leaky-ReLU

ReLU 简单而粗暴,大于0的留下,否则一律为0。
因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的。

Rectified linear unit(ReLU) 函数的激活函数可以表示为f(x)=max(0,x),它更加符合神经元的激活原理。它的一个平滑解析函数为f(x)=ln(1+exp(x)),被称为softplus function。softplus 的微分就是logistic函数f(x)=1/(1+exp(−x))。

可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。这让我们能够直接以监督的方式训练深度神经网络,而无需依赖无监督的逐层预训练。

然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。与sigmoid类似,ReLU的输出均值也大于0,偏移现象和 神经元死亡会共同影响网络的收敛性。

针对在x<0的硬饱和问题,我们对ReLU做出相应的改进,使得

sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

用ReLU代替了传统的Tanh或者Logistic。好处有:

  • ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
  • ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
  • ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
  • ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。

当然,ReLU也是有缺点的,比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。

使用了 ReLu 的 CNN 在 CIFAR-10数据集 batchsize 为100的训练中,epoch 5(2500次迭代)就把验证集错误率降到了25%,而 Tanh 则要花上35个epoch,速度提升了六倍。

1.png

卷积神经网络推荐选择的是 relu
循环神经网络推荐选择的是 relu 或tanh

Leaky-ReLU

当unit没有被激活时,允许小的非零的梯度。f(x)=x,x>0,f(x)=0.01x,x<=0。

Maxout

Learnable activation function [Ian J. Goodfellow, ICML’s 13]

relu5.png

relu6.png

relu7.png

relu8.png

relu9.png

relu10.png


Adaptive Learning Rate


这里写图片描述

这里写图片描述

RMSProp

这里写图片描述

这里写图片描述

Momentum

这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述

惯性的计算可以发现惯性与之前所有的梯度是有关的。通俗的理解为对梯度的平均,使得纵向的摆动变小了,横向的运动更快了。可加快梯度下降。

Adam

这里写图片描述

RMSProp + Momentum

这里写图片描述


Early Stopping


这里写图片描述

这里写图片描述

Early Stopping 是用来确定Epochs,合理的是用validation set 和training set 的误差曲线来确定。

Early Stopping
减少参数的更新次数,最终目的也是为了不要让参数离零太远。
降低神经网络中的方差。
优点:只运行一次梯度下降,可以找出W的较小值,中间值和较大值。而L2正则化需要超级参数lamb
缺点:提前停止了优化代价函数J,可能代价函数值不够小。


Regularization


加正则项的目的是为了让目标函数更平滑。而bias与函数的平滑没有关系,所有加正则项时不用考虑bias项,只需考虑权重项。

权重参数初始化时,尽可能的靠近零。在做参数更新的时候,是为了离零越来越远。做正则化的时候,是为了不要让权重参数离零太远。

L2 正则化

被称为权重衰减,这是因为权重乘以了一个小于的数。
权重衰减项来源L2,这是因为权重乘以了一个小于1的参数。

这里写图片描述

L2 Regularization

这里写图片描述

这里写图片描述

w并不会变成零,最终会达到平衡,而且保证w的平滑性。

L1 Regularization

这里写图片描述

L1, L2 都是为了使得权重参数不要太大。 L1是减去一个固定的值,L2是乘以一个小于1的值。这样L1很少会出现很小的值,但是有可能得到比较大的值,也就是说L1得到的值是稀疏的。L2可以保留得到很多很小的值。

Regularization 与Early Early Stopping功能类似。如果使用了Early Early Stopping后,有时候可能没必要使用Regularization

Early Stopping
减少参数的更新次数,最终目的也是为了不要让参数离零太远。
降低神经网络中的方差。
优点:只运行一次梯度下降,可以找出W的较小值,中间值和较大值。而L2正则化需要超级参数lamb
缺点:提前停止了优化代价函数J,可能代价函数值不够小。


Dropout


这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

Training 使用Dropout,比如p%,而Testing不用Dropout. 但是Testing时权值需要乘以(1-p%)

这里写图片描述

Dropout直观理解,训练的时候需要加重,测试的时候需要去重。

这里写图片描述

Dropout的直观理解。但是partner可能会摆烂,所以训练要好好的做。但是测试阶段是没有人摆烂。

这里写图片描述

Dropout的直观理解。训练的时候有Dropout,测试的时候也需要相应缩减。

这里写图片描述

这里写图片描述

这里写图片描述

虽然有Dropout,在训练阶段,有minbatchsize,每个神经元点的权值训练相当于多个网络dropout的网络依次训练。说白了就是第一个minbatch,训练确定的某个神经元的权值,会在第二个minbatch的时候继续训练(前提是该神经元没有被dropout), 这类似于多个网络依次训练确定神经元的权值。

这里写图片描述

这里写图片描述


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

机器学习中防止过拟合的处理方法


参考文献


http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

机器学习中防止过拟合的处理方法

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

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

相关文章

Liner(分段线性插值)

第一次写微博&#xff0c;记录自己的学习历程~~~~欢迎大家一起探讨~~~~ 分段线性插值故名思议就是说把给定样本点的区间分成多个不同区间&#xff0c;记为[xi,xi1]&#xff0c;在每个区间上的一次线性方程为&#xff1a; 关于其证明&#xff1a; 分段线性插值在速度和误差取得…

在linux设置回收站 - 防止失误操作造成数据清空,并定期清理

安装trash sudo apt-get install trash-chi 原理 执行trash命令后&#xff0c;是将文件移动了用户的回收站&#xff0c;每个用户的回收站路径为$HOME/.local/share/Trash&#xff0c;比如用户asin的回收站位于/home/asin/.local/share/Trash&#xff0c;用户root的回收站位于…

Spline(三次样条插值)

关于三次样条插值&#xff0c;计算方法比较复杂&#xff0c;但是静下心来仔细研究也是可以理解的。 本文借鉴文章来源&#xff1a;http://www.cnki.com.cn/Article/CJFDTotal-BGZD200611035.htm 定义&#xff1a; 简单来说就是给定了一些在区间[a,b]的数据点{x1,x2,x3.....xn…

李宏毅机器学习课程10~~~卷积神经网络

卷积的意义 数字图像是一个二维的离散信号&#xff0c;对数字图像做卷积操作其实就是利用卷积核&#xff08;卷积模板&#xff09;在图像上滑动&#xff0c;将图像点上的像素灰度值与对应的卷积核上的数值相乘&#xff0c;然后将所有相乘后的值相加作为卷积核中间像素对应的图像…

matlab自带的插值函数interp1的四种插值方法

x0:2*pi; ysin(x); xx0:0.5:2*pi;%interp1对sin函数进行分段线性插值&#xff0c;调用interp1的时候&#xff0c;默认的是分段线性插值 y1interp1(x,y,xx); figure plot(x,y,o,xx,y1,r) title(分段线性插值)%临近插值 y2interp1(x,y,xx,nearest); figure plot(x,y,o,xx,y2,r); …

拉格朗日插值法(Lagrange)

拉格朗日插值法是基于基函数的插值方法&#xff0c;插值多项式可以表示为&#xff1a; 其中称为 i 次基函数 Matlab中拉格朗日插值法函数为:Language 功能&#xff1a;求已知点数据点的拉格朗日多项式 调用格式&#xff1a;fLagrange(x,y) 或者 f ’Lagrange(x,y,x0) 其中&a…

当你在应用机器学习时你应该想什么

如今, 机器学习变得十分诱人, 它已在网页搜索, 商品推荐, 垃圾邮件检测, 语音识别, 图像识别, 自然语言处理等诸多领域发挥重要作用. 和以往我们显式地通过编程告诉计算机如何进行计算不同, 机器学习是一种数据驱动方法(data-driven approach). 然而, 有时候机器学习像是一种”…

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

函数f的零阶均差定义为 &#xff0c;一阶定义均差为&#xff1a; 一般地&#xff0c;函数f 的k阶均差定义为&#xff1a; 或者上面这个式子求的k1阶均差 利用均差的牛顿插值法多项式为&#xff1a; 简单计算的时候可以观看下面的差商&#xff08;均差&#xff09;表&#xff1a…

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

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

利用差分的牛顿插值法(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的模型参数和一个观测…