オプティマイザ(最適化アルゴリズム)の利用方法

オプティマイザ(最適化アルゴリズム)はモデルをコンパイルする際に必要となるパラメータの1つです:

from keras import optimizers

model = Sequential()
model.add(Dense(64, init='uniform', input_shape=(10,)))
model.add(Activation('tanh'))
model.add(Activation('softmax'))

sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

上記の例のように,オプティマイザのインスタンスを model.compile() に渡す,もしくは,オプティマイザの名前を渡すことができます.後者の場合,オプティマイザのデフォルトパラメータが利用されます.

# オプティマイザを名前で指定すると,デフォルトパラメータが利用されます
model.compile(loss='mean_squared_error', optimizer='sgd')

Kerasのオプティマイザの共通パラメータ

clipnormclipvalueはすべての最適化法についてgradient clippingを制御するために使われます:

# all parameter gradients will be clipped to
# a maximum norm of 1.
sgd = SGD(lr=0.01, clipnorm=1.)
# all parameter gradients will be clipped to
# a maximum value of 0.5 and
# a minimum value of -0.5.
sgd = SGD(lr=0.01, clipvalue=0.5)

[source]

SGD

keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)

モーメンタム,学習率減衰,Nesterov momentumをサポートした確率的勾配降下法.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • momentum: 0以上の浮動小数点数.モーメンタム.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.
  • nesterov: 真理値. Nesterov momentumを適用するかどうか.

[source]

RMSprop

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)

デフォルトパラメータのまま利用することを推奨します. (ただし,学習率を除き,自由に調整可能です)

RMSPropはリカレントニューラルネットワークに対して良い選択となるでしょう.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • rho: 0以上の浮動小数点数.
  • epsilon: 0以上の浮動小数点数.微小量.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.

[source]

Adagrad

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-08, decay=0.0)

デフォルトパラメータのまま利用することを推奨します.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • epsilon: 0以上の浮動小数点数.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.

参考文献


[source]

Adadelta

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-08, decay=0.0)

デフォルトパラメータのまま利用することを推奨します.

引数

  • lr: 0以上の浮動小数点数.学習率. デフォルト値を推奨します.
  • rho: 0以上の浮動小数点数.
  • epsilon: 0以上の浮動小数点数.微小量.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.

参考文献


[source]

Adam

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

デフォルトパラメータは提案論文に従います.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • beta_1: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値です.
  • beta_2: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値です.
  • epsilon: 0以上の浮動小数点数.微小量.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.

参考文献


[source]

Adamax

keras.optimizers.Adamax(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

Adamaxは,Adamの提案論文の7節で提案された,無限ノルムに基づくAdamの拡張です.

デフォルトパラメータは提案論文に従います.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • beta_1: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値です.
  • beta_2: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値です.
  • epsilon: 0以上の浮動小数点数.微小量.
  • decay: 0以上の浮動小数点数.各更新の学習率減衰.

参考文献


[source]

Nadam

keras.optimizers.Nadam(lr=0.002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, schedule_decay=0.004)

Nesterov Adam optimizer: Much like Adam is essentially RMSprop with momentum, Nadam is Adam RMSprop with Nesterov momentum.

デフォルトパラメータは提案論文に従います. デフォルトパラメータのまま利用することを推奨します.

引数

  • lr: 0以上の浮動小数点数.学習率.
  • beta_1: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値.
  • beta_2: 浮動小数点数, 0 < beta < 1. 一般的に1に近い値.
  • epsilon: 0以上の浮動小数点数.微小量.

参考文献


[source]

TFOptimizer

keras.optimizers.TFOptimizer(optimizer)

TensorFlowのオプティマイザのためのラッパークラス.