Optimization for Deep Learning
Background Knowledge
- μ − s t r o n g c o n v e x i t y \mu-strong \ convexity μ−strong convexity
- L i p s c h i t z c o n t i n u i t y Lipschitz \ continuity Lipschitz continuity
-
B
e
r
g
m
a
n
p
r
o
x
i
m
a
l
i
n
e
q
u
a
l
i
t
y
Bergman\ proximal\ inequality
Bergman proximal inequality
不会给出很详细的数学证明
New Optimizers for Deep Learning
找一个神经网络的参数 接近y^hat
忽略掉储存等方面的内容,一次可以拿到所有的训练资料
SGD
SGDM
乘一个过去的momentum,过去的累加起来。有个过去累加的项,可以确保一直在移动,多看一点东西
Adagrad
有了下面分母,即过去gradient所有的和,防止暴走或太小步
RMSProp
Adam
Optimizers:Real Application
Adam比较快,SGDM比较稳
一开始用Adam 后面用SGDM
上图最后会越走越小
上图:给出了一个经验算式。比较粗鲁,没有让机器去自适应,不是最好的
上图:一下learning rate大,一会儿小。大的时候鼓励不要满足于现状,当收敛的很好时,也不会产生太大的影响
上图:直接重来,大了在变小
先变大 在变小 最后越来越小
Does Adam need warm-up?
让步伐稳一点,不然一会儿大一会儿小,收敛性不好
上图中 纵轴 iteration 横轴 intribution
从左往右是放大来看的,开始的和后面的不太稳,一开始不知道initial在什么地方,而且分母不会估计的很准,gradient 分布就乱一点。后面分母估计多了再准,不会一下子跳太多。
一种warm-up的方法
下图为原来的 步伐有点大,右侧中振荡的有点大
distorted a.歪曲的
应该再还不确定估计好不好时,走小步一点,情况不一定编号,但gradient不会差太多,比较稳定,不会暴走
方法:
RAdam vs SWATS
Adam快 SGDM稳
One-step back
wrapper 在optimizer外再包层东西
每走几步,检查一下现在走得ok不
为什么做这个:可能进到一个很深的峡谷里面,走不出来
我们希望走到一个平坦的minimum,这个考研尽量保持在一个比较平坦的区域
More than momentum
NAG
so can we look into the future?
超前部署
Nadam
Do you really know your optimizer?
A story of L2 regularization
Something helps optimization
上图:增加随机性