Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。
如何使用优化器(optimizers)
优化器是编译 Keras 模型所需的两个参数之一:
model = Sequential()
model.add(Dense(20, 64, init='uniform'))
model.add(Activation('tanh'))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
我们可以在将优化器传递给 model.compile()
之前初始化,正如上面代码所示,或者你可以直接通过名字调用。在后面的例子中,默认的优化器参数将会被使用。
# pass optimizer by name: default parameters will be used
model.compile(loss='mean_squared_error', optimizer='sgd')
基类(base class)
keras.optimizers.Optimizer(**kwargs)
所有的优化器都继承自该类,支持下面的参数:
-
clipnorm
: float >= 0
这是用来构建优化器的基类,不是实际可以用作训练的优化器。
SGD
keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)
参数:
-
lr
: float >= 0. 学习率 Learning rate -
momentum
: float >= 0. 参数更新动量 parameter updates momentum -
decay
: float >= 0. 学习率每次更新的下降率 Learning rate decay over each update -
nesterov
: boolean. 是否应用 Nesterov 动量 whether to apply Nesterov momentum
Adagrad
keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)
建议使用默认设置
参数:
-
lr
: float >= 0. 学习率 -
epsilon
: float >= 0
Adadelta
keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)
建议使用默认设置
参数:
-
lr
: float >= 0. 默认设置 -
rho
: float >= 0. -
epsilon
: float >= 0. Fuzz factor
refer to Adadelta: an adaptive learning rate method" by Matthew Zeiler.
RMSprop
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)
建议使用默认设置
参数:
-
lr
: float >= 0. 默认设置 -
rho
: float >= 0. -
epsilon
: float >= 0. Fuzz factor
Adam
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8, kappa=1-1e-8)
Adam 优化器由 Kingma 和 Lei Ba 在 Adam: A method for stochastic optimization。默认参数是文章中建议的。参数 lambda 在此处改做 kappa。
参数:
-
lr
: float >= 0. Learning rate. -
beta_1
,beta_2
: floats, 0 < beta < 1. Generally close to 1. -
epsilon
: float >= 0. Fuzz factor. -
kappa
: float 0 < kappa < 1. Lambda parameter in the original paper.