当前位置:网站首页>常见的最优化方法
常见的最优化方法
2022-07-05 05:27:00 【李峻枫】
前言
在神经网络的训练中,其本质就是找到合适的参数,使得loss function最小。然而这个最小值实在是太难求了,因为参数太多了。为了解决这个问题,目前有几种常见的最优化方法。
随机梯度下降法
这是最最最经典的一个算法,也是比较常用的方法。相比于随机搜素,这个方法已经非常优秀了,但是仍然存在着一些不足。
缺点
- 步长的取值对结果有较大的影响:步长过多会无法收敛,步长过小,训练时间过长,甚至无法收敛。
- 某些函数的梯度并不少指向其最小值,例如函数是 z = x 2 100 + y 2 z=\frac{x^2}{100}+y^2 z=100x2+y2,这个函数图像是一个对称的,狭长的“山谷”。
- 因为部分梯度不是指向最小值,这会造成其找到最优解的路径十分曲折,而且对应较为“平坦”的地方,其可能无法求出最优解。
AdaGrad
由于梯度的性质,决定了其很难在部分地方能够改进,但是对于步长这个超参也可以有优化。
一种比较普遍的方法就是步长衰减,最开始的步长比较大,因为这个时候一般与最优解还相差比较远,可以多走些,以提高训练速度。随着训练的继续,步长不断衰减,因为此时已经更加接近最优解了,如果步长太大可能错过最优解或者无法收敛。
衰减参数一般与已经训练过的梯度有关
h ← h + ∂ L ∂ W ⋅ ∂ L ∂ W W ← W − η 1 h ⋅ ∂ L ∂ W h\leftarrow h + \frac{\partial L}{\partial W}\cdot\frac{\partial L}{\partial W} \newline W\leftarrow W - \eta\frac{1}{\sqrt{h}}\cdot\frac{\partial L}{\partial W} h←h+∂W∂L⋅∂W∂LW←W−ηh1⋅∂W∂L
Momentum
这个单词的解释是动量,根据物理中的定义 F ⋅ t = m ⋅ v F\cdot t = m\cdot v F⋅t=m⋅v。
为了更加生动地理解这种方法,不妨考虑一个三维空间中的一个曲面,上面有一个球,需要滚到最低点。
为了方便计算,部分把球的质量视作单位1,则对该式子求时间的导数: d F d t ⋅ d t = m ⋅ d v d t ⇒ d F = m ⋅ d v d t \frac{dF}{dt}\cdot dt=m\cdot\frac{dv}{dt} \Rightarrow dF=m\cdot\frac{dv}{dt} dtdF⋅dt=m⋅dtdv⇒dF=m⋅dtdv。
考虑这个小球受到的“力”:当前位置倾斜所带来的重力的分力(梯度),阻碍运动的摩擦力(在无梯度时候速度会衰减)。
那么就可以很轻松地写出小球下一时刻的速度与位置了: v ← α ⋅ v − ∂ F ∂ W w ← w + v v\leftarrow\alpha\cdot v - \frac{\partial F}{\partial W} \newline w\leftarrow w + v v←α⋅v−∂W∂Fw←w+v
优点
这种方法能够很好接近梯度不指向最优解的问题,即便是一个梯度不指向最优解,但是只有它存在的向最优解的速度,那么它就可以继续向最优解靠近。
边栏推荐
- Haut OJ 2021 freshmen week II reflection summary
- Under the national teacher qualification certificate in the first half of 2022
- Solon 框架如何方便获取每个请求的响应时间?
- Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
- 搭建完数据库和网站后.打开app测试时候显示服务器正在维护.
- YOLOv5添加注意力機制
- sync.Mutex源码解读
- [binary search] 34 Find the first and last positions of elements in a sorted array
- 剑指 Offer 58 - II. 左旋转字符串
- Introduction to tools in TF-A
猜你喜欢
[turn to] MySQL operation practice (I): Keywords & functions
Pointnet++ learning
sync. Interpretation of mutex source code
object serialization
National teacher qualification examination in the first half of 2022
Merge sort
[转]MySQL操作实战(一):关键字 & 函数
Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
SAP-修改系统表数据的方法
[轉]: OSGI規範 深入淺出
随机推荐
质量体系建设之路的分分合合
PMP考试敏捷占比有多少?解疑
[trans]: spécification osgi
[转]MySQL操作实战(一):关键字 & 函数
[merge array] 88 merge two ordered arrays
sync. Interpretation of mutex source code
Pointnet++的改进
26、 File system API (device sharing between applications; directory and file API)
Solution to the palindrome string (Luogu p5041 haoi2009)
Haut OJ 1221: a tired day
剑指 Offer 58 - II. 左旋转字符串
PMP candidates, please check the precautions for PMP examination in July
发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
Haut OJ 1218: maximum continuous sub segment sum
YOLOv5添加注意力机制
Romance of programmers on Valentine's Day
【ES实战】ES上的native realm安全方式使用
Embedded database development programming (V) -- DQL
记录QT内存泄漏的一种问题和解决方案
Haut OJ 1357: lunch question (I) -- high precision multiplication