第2次课改善深层神经网络:超参数优化、正则化以及优化
来源:互联网 发布:gif制作软件 编辑:程序博客网 时间:2024/06/05 19:01
1. mini-batch,小批量梯度下降法
- 批量(Batch)和小批量(mini-batch)梯度下降法
向量化输入输出
- 输入:(
nx ,m),n个特征,m个样本X=[x(1)x(2) ... x(m)] - 输出:(1,m)
Y=[y(1)y(2) ... y(m)]
Batch & mini-batch定义
- 批量:一次迭代整个数据集,计算出一个误差然后更新权值和偏置(w,b)
- 小批量:一次迭代mini-batch size个样本,计算一个误差然后更新参数
算法步骤
- 假设样本集大小为500万,mini-batch size为1000,则有5000个mini-batch
- repeat
- For t=1…5000
- Forward prop on
X{t} Z[1]=W[1]X{t}+b[1] A[1]=g[1](Z[1]) - …
A[L]=g[L](Z[L])
- Compute cost
J{t}=11000∑Li=1L(y^(i),y(i))+λ2∗1000∑L||w[l]||2F - Backprop to compute gradients using
J{t}(X{t},Y{t}) W[L]:=W[L]−αdW[L],b[L]:=b[L]−αdb[L]
- Forward prop on
- epoch: 遍历一次训练集,使用batch,一次epoch只能更新一次参数,mini-batch如上例,可以更新5000次参数
- For t=1…5000
J下降
- batch: 一直下降
- mini-batch: 局部波动,整体下降
选择mini-batch size
- mini-batch size=m: Batch gradient descent
- mini-batch size=1: Stochastic gradient descent
- 优点和缺点
- Batch gradient descent: 可以很好的取到最好的参数,但是如果数据集太大会导致迭代一次耗时很长
- Stochastic gradient descent: 有噪声,虽然可以通过减小学习率减少噪声,但是不会取到最好的参数,而且失去了向量化带来的速度优化
- mini-batch: 可以向量化,不需要一次性遍历整个训练集
- 选择mini-batch size的原则
- 如果训练集很小,比如样本数小于2000,mini-batch size=m
- mini-batch size取2的整数倍,比如说64,128,256,512等,有助于计算机加快运算
- 确保CPU/GPU能够加载一个mini-batch
2. 指数加权平均(Exponentially weight average)
计算公式
给定一个时间序列,比如伦敦一年的每天气温
θ1,θ2,...,θ365 v0v1vt===00.9v0+0.1θ10.9vt−1+0.1θt 维基百科上的定义
St={Y1,αYt+(1−α)St−1,t=1t>1
其中
α 是权值,Yt 是实际值,St 是加权平均后的值
平均过去多少天
- 如上
β=0.9 ,则约等于10天 β 越大,过去的影响越多,曲线越平滑,即时反应越弱
算法本质
0.910≈1e ,相当于把过去10天的气温指数加权平均作为当日的气温,因为10天后权重下降到当日的三分之一不到
算法步骤
- v = 0
- repeat
- get
θi - v :=
β v+(1-β )θi
- get
- 好处,节省内存,尤其对于数据大的情况,和移动窗求加权平均稍微差一点
偏差修正(bias correction)
- 注意到加权平均的第一个值被初始化为0,所以前几个值和实际值会相差很大,使用偏差修正来改变
将上述算法计算后的值做如下处理
vt:=vt1−βt 对于第一个值
v1=βv0+(1−β)θ1=(1−β)θ1v1:=v11−β=θ1 对于第二个值
v2=βv1+(1−β)θ2=(1−β)θ2+β(1−β)θ1v2:=v21−β2=11−βθ2+β1−βθ1 越往后偏差修正的影响越小
3. 动量梯度下降法(gradient descent with momentum)
- 计算梯度的指数加权平均数,并利用该梯度更新权重
算法步骤
- On iteration t:
- Compute dw, db on current mini-batch
vdw=βvdw+(1−β)dw vdb=βvdb+(1−β)db w:=w−αvdw,b:=b−αvdb
- 另一个版本:
vdw=βvdw+dw,vdb=βvdb+db ,vdw,vdb 减小了1−β 倍,所以α 需要相应改变 - 效果:在抵达最小值的路径上减少了摆动,通过累加,减少摆动的误差,增大向极小值的梯度
- 一般
β=0.9
4. RMSprop(root mean square prop)
算法步骤
- On iteration t:
- Compute dw, db on current mini-batch
Sdw=β2vdw+(1−β2)dw2 Sdb=β2vdb+(1−β2)db2 w:=w−αvdwSdw√+ϵ,b:=b−αvdbSdb√+ϵ
- 效果:在抵达最小值的路径上减少了摆动,比较大的dwi,会被一个大的vdwi除,所以可以减少摆动,同时可以增大学习速率来加快学习
ϵ=10−8 ,防止分母太小导致变化太大
5. Adam(Adaptive moment estimate) optimization algorithm
- 整合了momentum和RMSprop
算法步骤
- On iteration t:
- Compute dw, db on current mini-batch
- momentum
vdw=β1vdw+(1−β1)dw,vdb=β1vdb+(1−β1)db - RMSprop
Sdw=β2vdw+(1−β2)dw2,Sdb=β2vdb+(1−β2)db2 - bias correction
vcorrectiondw=vdw/(1−βt1),vcorrectiondb=vdb/(1−βt1) Scorrectiondw=Sdw/(1−βt2),Scorrectiondb=Sdb/(1−βt2) - change the w and b
w:=w−αvcorrectiondwScorrectiondw√+ϵ,b:=b−αvcorrectiondbScorrectiondb√+ϵ
参数设置
alpha : 需要调参β1 : 影响dw,db ,作者设置为0.9,一般不需要改β2 : 影响dw2,db2 ,作者设置为0.999,一般不需要改ϵ : 一般设置为10−8
6. 学习率衰减(learning rate decay)
- 随时间慢慢减少学习率,在学习初期步长较大,能够比较快的接近最小值,后期步长减小,帮助收敛
算法步骤
- 1 epoch: 迭代一次训练集
α=11+decayrate∗epochnumα0 - 或者
α=0.95epochnumα0 或者α=kepochnum√α0,α=ktα0 或者离散下降(discrete staircase),阶梯函数,过几代就减少,例如减小一半
7. 局部最优问题
- 不太可能碰到局部最优,J对w,b求导为0的点一般都是鞍点,w的维度很高,只要有一个是凹函数,就是鞍点
- plateaus: 导数长时间接近于0的区域,因为导数很小,所以需要长时间的迭代才能走出来
课程地址:http://mooc.study.163.com/course/deeplearning_ai-2001281003?tid=2001391036#/info
阅读全文
0 0
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- 2, 改善深层神经网络:超参数调试、正则化以及优化
- 改善深层神经网络:超参数调试、正则化以及优化——优化算法(2-2)
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 改善深度神经网络:超参数调试、正则化以及优化——深度学习的实践方面(2-1)
- 改善深度神经网络:超参数调试、正则化以及优化(理论)——超参数调试、Batch正则化和程序框架(2-3)
- 改善深层神经网络:超参数调节(第一周)笔记
- DeepLearing学习笔记-改善深层神经网络(第三周- 超参数调试、正则化)
- Coursea吴恩达《优化深度神经网络》课程笔记(3)超参数调试、正则化以及优化
- DeepLearing学习笔记-改善深层神经网络(第一周作业-2-正则化)
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.6_2.9Momentum/RMSprop/Adam优化算法
- 吴恩达 改善深层神经网络 第一周
- 改善深层神经网络第一周-Initialization
- 改善深层神经网络第一周-Regularization
- 改善深层神经网络第一周-Gradient Checking
- Coursera吴恩达《优化深度神经网络》课程笔记(3)-- 超参数调试、Batch正则化和编程框架
- iOS开发笔记之Timestamp时间戳与各地区实际时间格式的相互转换
- python如何装饰递归函数
- java的JDK安装好后运行cmd显示没有安装成功
- ros学习笔记-lesson1
- 基于java反射筛选List对于不同实体泛型的公共方法
- 第2次课改善深层神经网络:超参数优化、正则化以及优化
- 接入支付宝SDK遇到的坑
- Selenium php-webdrive元素等待
- Mac OS X系统 HomeBrew的安装和简单使用
- js中简易选项卡的实现(3种方法实现样式的封装)
- TCP三次握手和四次挥手过程
- Android 相关资料
- MyBatis基本了解
- 数据结构书籍