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

Tuesday, November 07, 2017

Cloud

Posted by Masayoshi Kimura


コンフィグタブ(Global Config)では、ニューラルネットワークの学習に関する設定と、確認を行います。

 

1 プロジェクトのコメントを編集するには

Project Descriptionに任意のコメントをテキストで入力します。

 

2 学習完了までの最適化の世代数を指定するには

Max Epochに世代数を入力します。

パラメータを持つ全てのレイヤーについてパラメータのProperty(Weight、Biasなど)が指定されている状態で、学習を行わず設計したネットワークをそのまま学習結果として出力するには、Max Epochに0を指定します。

 

3 学習結果のニューラルネットワークを保存する条件を指定するには

最終世代のニューラルネットワークを保存するにはSave Bestのチェックを外します。Validation Datasetにおいてもっとも誤差が小さかったEpochのニューラルネットワークを保存するにはSave Bestをチェックします。

 

4 Mini-batchを用いた最適化の際のバッチサイズを指定するには

Batch Sizeに1回のパラメータ更新に用いるデータの数を入力します。

 

ご注意

Batch Sizeの値には、学習に用いる各データセットに含まれるデータ数より小さい値を指定する必要があります。

 

5 学習、評価に用いる演算精度を指定するには

Precisionを以下の2つから選択します。

項目 解説
Float 32bit浮動小数点数による演算を行います。
Half 基本を16bit浮動小数点数とし、一部32bit浮動小数点数(Mixed Precision)による演算を行います
Halfを選択することで、使用メモリ量が削減されより大きいネットワークが学習可能になるメリットが、またNVIDIA製、VOLTA世代以降のGPU利用時には演算速度が高速化するメリットがあります。

 

ご注意
Halfは、NVIDIA製で、かつPascal世代以降のGPU利用時のみ指定することができます。
また、Half指定時はネットワーク構造によって正しく学習が進まないことがあります。そのような場合は、Loss Scalingを行うことでFloatでの学習時と同等の性能が得られる可能性があります。
Neural Network ConsoleでLoss Scalingを行うには、ロス関数の後ろにMulScalarレイヤーを用いてロスの値をスケール倍します。また、Sgd、Momentum、Nesterov等、学習率の自動調整を行わないUpdaterを用いている場合はLearning Rateをスケール分の1にします。

 

6 精度評価を行う頻度を指定するには

Monitor Intervalに精度評価を行う間隔をepoch単位で指定します。デフォルトの10が指定されている状態では、10 epochごとに精度評価が行われます。毎epoch精度評価を行うには、1を指定します。
 

ご参考
1~5 epochの間は、Monitor Intervalの設定値に関わらず毎epoch精度評価が行われます。

 

7 ネットワーク構造の自動最適化のON/OFFを指定するには

Structure SearchのEnableをクリックしてネットワーク構造の自動最適化のON/OFFを切り替えます。

 

Structure SearchをEnableにした状態で学習を実行すると、自動的にネットワーク構造を様々に変化させながら、より精度が高く演算量の少ないネットワーク構造を探す最適化が行われます。

 

ご注意

Structure SearchをONにした状態で学習を実行すると、ユーザが明示的に停止操作を行う、探索開始から2時間が経過する、100のネットワークの自動探索を行う、のいずれかの条件で自動停止します。
 
ご注意

構造自動探索中に、エラーが発生するネットワークを自動作成してしまう場合がありますが、その学習のみがIncompleteとなり、すぐに次の学習を継続します。

 

8 ネットワーク構造の自動最適化のアルゴリズムを選択するには

Structure SearchのMethodを以下の2つから選択します。

項目 解説
Random 進化的計算を用いたネットワーク構造の自動探索を行います。様々なネットワーク構造を試行する代わりに、最適化には時間はかかります。
Network Feature + Gaussian Process ネットワーク特徴量とGaussian Processを使ったBayesian Optimizationを用いたネットワーク構造の自動探索を行います。Randomと比較して素早くより良いネットワークを発見できます。

 

9 ネットワーク構造の自動最適化における最適化対象を選択するには

Structure SearchのOptimize forを以下の2つから選択します。

項目 解説
Error より誤差の少ないネットワークを探索します。演算量を考慮せず、とにかく高い性能のネットワークを探索したい場合に指定します。
Error and Calculation より誤差が少なく、かつ演算量の少ないネットワークを探索します。

 

ご注意

Optimize forにErrorを選択した場合、以下で説明する方法で乗加算回数の探索範囲を限定する(上限を設ける)ことをお勧めします。上限を指定しない場合演算量が非常に大きいネットワークが探索され、最適化に時間を要する可能性があります。

 

10 ネットワーク構造の自動最適化時、評価データセットでの精度や乗加算回数で探索範囲を限定するには

Search RangeのValidation(評価データセットの誤差)、Multiply Add(乗加算回数)で、Min(下限)、Max(上限)をそれぞれ指定します。上限や下限を指定しない場合は値を削除して空欄にします。

 

例えばValidationのMaxに0.05を、Multiply AddのMaxに2000000を指定すると、評価データセットの誤差が0.05を上回らず、Multiply Addの範囲が2,000,000を上回らない範囲で構造自動探索が行われます(評価データの誤差に関しては結果的に指定した範囲を超えることがありますが、範囲を超えた学習結果は探索のために用いられません)。

 

11 ネットワーク構造の自動最適化時、自動探索継続時間や自動探索回数で終了条件を限定するには

Search RangeのMax Attemptsで、Hours(時間)、Times(回数)をそれぞれ指定します。条件を指定しない場合は値を削除して空欄にします。
両方の条件を設定した場合には、どちらかの条件に達した場合に自動探索が終了します。

 

ご注意

Max Attemptsを設定した場合であっても、Service SettingsのUpper Limit of Monthly Chargeの上限に達した場合は、自動探索が終了します。