プロジェクト画面:コンフィグタブ(Optimizer)の使い方

Friday, November 03, 2017

App

Posted by Yoshiyuki Kobayashi


 

1 最適化に用いるネットワークの名前を指定するには

Networkに編集タブで作成したネットワーク名を指定します。

 

2 最適化に用いるデータセットの名前を指定するには

Datasetにデータセットタブで読み込んだデータセット名を指定します。

 

3 パラメータのアップデート手法を指定するには

コンフィグリストからOptimizerを選択します。

Updaterを以下から選択します(デフォルトはAdam)。

 

Updater 更新式
Adadelta  

$$g_t \leftarrow \Delta w_t\\
v_t \leftarrow – \frac{RMS \left[ v_t \right]_{t-1}}{RMS \left[ g \right]_t}g_t\\
w_{t+1} \leftarrow w_t + \eta v_t$$

Matthew D. Zeiler

ADADELTA: An Adaptive Learning Rate Method

https://arxiv.org/abs/1212.5701

Adagrad  
$$g_t \leftarrow \Delta w_t\\
G_t \leftarrow G_{t-1} + g_t^2\\
w_{t+1} \leftarrow w_t – \frac{\eta}{\sqrt{G_t} + \epsilon} g_t$$

John Duchi, Elad Hazan and Yoram Singer

Adaptive Subgradient Methods for Online Learning and Stochastic Optimization

http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf

Adam  
$$m_t \leftarrow \beta_1 m_{t-1} + (1 – \beta_1) g_t\\
v_t \leftarrow \beta_2 v_{t-1} + (1 – \beta_2) g_t^2\\
w_{t+1} \leftarrow w_t – \alpha
\frac{\sqrt{1 – \beta_2^t}}{1 – \beta_1^t}
\frac{m_t}{\sqrt{v_t} + \epsilon}$$

Kingma and Ba

Adam: A Method for Stochastic Optimization.

https://arxiv.org/abs/1412.6980

Adamax  
$$m_t \leftarrow \beta_1 m_{t-1} + (1 – \beta_1) g_t\\
v_t \leftarrow \max\left(\beta_2 v_{t-1}, |g_t|\right)\\
w_{t+1} \leftarrow w_t – \alpha
\frac{\sqrt{1 – \beta_2^t}}{1 – \beta_1^t}
\frac{m_t}{v_t + \epsilon}$$

Kingma and Ba

Adam: A Method for Stochastic Optimization.

https://arxiv.org/abs/1412.6980

Momentum  
$$v_t \leftarrow \gamma v_{t-1} + \eta \Delta w_t\\
w_{t+1} \leftarrow w_t – v_t$$

Ning Qian

On the momentum term in gradient descent learning algorithms

http://www.columbia.edu/~nq6/publications/momentum.pdf

Nag  
$$v_t \leftarrow \gamma v_{t-1} – \eta \Delta w_t\\
w_{t+1} \leftarrow w_t – \gamma v_{t-1} + \left(1 + \gamma \right) v_t$$

Yurii Nesterov

A method for unconstrained convex minimization problem with the rate of convergence o(1/k2)

RMSprop  
$$g_t \leftarrow \Delta w_t\\
v_t \leftarrow \gamma v_{t-1} + \left(1 – \gamma \right) g_t^2\\
w_{t+1} \leftarrow w_t – \eta \frac{g_t}{\sqrt{v_t} + \epsilon}$$

Geoff Hinton

Lecture 6a : Overview of mini-batch gradient descent

http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf

Sgd $$w_{t+1} \leftarrow w_t – \eta \Delta w_t$$

 

θ:更新対象のパラメータ

g:勾配

η、α:Learning Rate、Alpha(学習係数)

γ、β1、β2:MomentamもしくはDecay、Beta1、Beta2(Decayパラメータ)

ε:Epsilon(ゼロ除算を防ぐために用いる小さな値)

 

4 Weight Decay(L2正則化)の強度を設定するには

Weight DecayにWeight Decayの係数を指定します。

 

5 学習係数を徐々に減衰させるには

Learning Rate Multiplierに学習係数を減衰させる係数を、LR Update Interval(NNablaのみ)に学習係数を減衰させる間隔をMini-batch単位(NNabla)で指定します。例えば学習係数をMini-batch毎に0.99倍に減衰させるには、Learning Rate Multiplierを0.99、LR Update Intervalを1とします。学習係数は20 epoch毎に0.1倍に減衰させるには、Learning Rate Multiplierを0.1、LR Update Intervalを(学習データ数÷Mini-batch)×20とします。

 

6 パラメータの更新を複数回のMini-batchに1回行うには

Update Intervalにパラメータの更新を行う間隔を指定します。例えば64個のデータを含んだMini-batchを用いて4回勾配を計算し、4回のMini-batchごとにまとめてこれらの勾配を用いたパラメータの更新を行うには、Batch Sizeを64、Update Intervalを4とします。

 

ご注意

複数の学習用ネットワークを用いた最適化を行う場合、Update Intervalには常に1を指定する必要があります。

 

7 新しいOptimizerを追加するには

メニューボタン、もしくはコンフィグリストを右クリックして表示されるポップアップメニューからAdd Optimizerを選択します。

 

8 Optimizerの名前を変更するには

  1. メニューボタン、もしくはコンフィグリストを右クリックして表示されるポップアップメニューからRenameを選択します。
  2. もしくはコンフィグリストから、名前を変更するOptimizerを2度クリックします。
  3. 新しい名前を入力してキーボードのEnterキーを押します。

 

9 Optimizerを削除するには

  1. コンフィグリストで、削除するOptimizerを選択します。
  2. メニューボタン、もしくはコンフィグリストを右クリックして表示されるポップアップメニューからDeleteを選択します。
  3. もしくは、キーボードのDeleteキーを押します。