阅读“
An overview of gradient descent optimization
algorithms
”笔记
一、前言:
最新的深度学习库包含各种优化梯度下降的算法,比如有
caffe
、
keras
、
tensorflow
、
pytorch
等,但是通常这些算法被当做一个黑匣子使用,所以无法比较
这些算法的优与劣。
二、梯度下降变形形式
1
、批量归一化(
BGD
)
每次经过完整一轮训练后更新一次参数,这使得梯度下降过程变得比较慢,并且
需要很大内存保存中间结果。
代码表示:
'''
for i in range(nb_epochs):
params_grad = evaluate_gradient(loss_function, data, params)
params = params - learning_rate * params_grad
'''
2
、随机梯度下降(
SGD
)
随机梯度下降是对每个训练样本就更新一次网络参数,这样使得网络更新参数速
度很快,但是问题就是由于训练数据多样,容易朝偏离网络最优点方向训练,网络训
练不稳定。
代码表示:
'''
for i in range(nb_epochs):
np.random.shuffle(data)
for example in data: