UFLDL Tutorial深度学习基础——学习总结:稀疏自编码器(三)梯度检验与高级优化
2018-03-14 21:13
621 查看
梯度检验:该方法对数值求导进行检验,可以验证求导代码是否正确。
最小化以
为自变量的目标函数
。
在一维情况下,一次迭代的梯度下降公式为:
假设已经计算得到
,那我们要怎样验证g的实现是否正确?
导数的数学定义:
则根据上式,我们可以用下面的数值验证公式计算两端是否一样:
当
为一个向量,我们定义
,其中,
是第i个基向量(维度和
相同,在第i行是“i”而其他行是“0”).类似地,
。然后我们对每个i检查下式是否成立,进而验证
的正确性:
当用反向传播算法求解神经网络时,正确算法实现会得到:
利用上述数值检验(numerically checking)方法计算J(W,b)的导数,然后验证
与
是否能够给出正确的求导结果。高级优化:a.使用梯度下降,并能够自动调整学习速率
,以得到合适的步长值,最终使
能够快速收敛到一个局部最优解。b.可以寻找一个Hessian矩阵(Hessian matrix)的近似,得到最佳步长值,使用该步长值(step-size)能够更快地收敛到局部最优(和牛顿法(Newton's method)类似)。c.L-BFGS和共轭梯度(conjugate gradient)算法通常比梯度下降法快很多。
最小化以
为自变量的目标函数
。
在一维情况下,一次迭代的梯度下降公式为:
假设已经计算得到
,那我们要怎样验证g的实现是否正确?
导数的数学定义:
则根据上式,我们可以用下面的数值验证公式计算两端是否一样:
当
为一个向量,我们定义
,其中,
是第i个基向量(维度和
相同,在第i行是“i”而其他行是“0”).类似地,
。然后我们对每个i检查下式是否成立,进而验证
的正确性:
当用反向传播算法求解神经网络时,正确算法实现会得到:
利用上述数值检验(numerically checking)方法计算J(W,b)的导数,然后验证
与
是否能够给出正确的求导结果。高级优化:a.使用梯度下降,并能够自动调整学习速率
,以得到合适的步长值,最终使
能够快速收敛到一个局部最优解。b.可以寻找一个Hessian矩阵(Hessian matrix)的近似,得到最佳步长值,使用该步长值(step-size)能够更快地收敛到局部最优(和牛顿法(Newton's method)类似)。c.L-BFGS和共轭梯度(conjugate gradient)算法通常比梯度下降法快很多。
相关文章推荐
- UFLDL Tutorial深度学习基础——学习总结:稀疏自编码器(一)神经网络(neural networks)
- UFLDL Tutorial深度学习基础——学习总结:稀疏自编码器(二)反向传播算法(Backpropagation Algorithm)
- 深度学习笔记(三)---梯度检验与高级优化
- 深度学习之梯度检验与高级优化
- 深度学习基础(三)(稀疏)自编码器 分类: 深度学习 2015-01-20 15:19 96人阅读 评论(0) 收藏
- 深度学习基础(三)(稀疏)自编码器
- 零基础入门深度学习三:梯度下降优化
- ufldl 深度学习入门 第一发:基于BP网络实现稀疏自编码器
- 深度学习基础(十一)—— 稀疏自编码器(二)
- 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器
- UFLDL 笔记 03 梯度检验与高级优化算法介绍
- 深度学习:基于梯度下降不同优化算法的比较总结
- 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习UFLDL教程翻译之自动编码器
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 深度学习基础理论探索(一):激活函数、梯度消失
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
- 转:深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)