优化器
优化器是Keras模型编译时的另外一个必需参数。Keras模型编译时可以接受一个优化器对象,也可以接受一个字符串表示的使用默认参数的优化器。优化器都位于keras.optimizers
包中。
常用的优化器及其构造方法有以下这些。
SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
,随机梯度下降优化器。lr
,学习率。momentum
,动量,用于加速啊SGD在相关方向上的前进,并抑制震荡。decay
,学习率衰减值。nesterov
,指定是否使用Nesterov动量。
RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
,RMSprop优化器,一般建议使用默认参数,常用于训练循环神经网络(RNN)。RMSprop与Adadelta的公式表达是一致的,但RMSprop计算历史所有梯度的衰减平方和,没有时间窗口的概念。rho
,梯度平方的移动均值衰减率。epsilon
,模糊因子。
Adagrad(lr=0.01, epsilon=None, decay=0.0)
,一种具有特殊参数学习率的优化器,可根据参数在训练期间的更新频率自适应调整,一般建议使用默认参数。Adagrad可以对低频的参数做较大更新,对高频的参数做较小的更新,对于稀疏数据表现更好。Adadelta(lr=1.0, rho=0.95, epsilon=None, decay=0.0)
,基于Adagrad的扩展优化器,不对历史梯度进行累积,而是根据渐变更新的移动窗口自动调整学习速率,一般建议使用默认参数。可以解决Adagrad学习率急速下降的问题。Adam(lr=0.1, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, asmgrad=False)
,自适应学习方法,将存储类似于Adadelta和RMSprop的历史梯度平方的衰减平均速度以外,还存储历史梯度的衰减平均速度。
在针对稀疏输入数据时,建议采用自适应学习率的优化方法。自适应学习算法中,Adadelta、RMSprop和Adam的表现结果类似,但Adam的效果略优。