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

Friday, November 03, 2017

App

Posted by Yoshiyuki Kobayashi

コンフィグタブ(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にした状態で学習を実行すると、ユーザが明示的に学習停止ボタンを押すなどしない限り永久に学習が継続されます。
 

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 ネットワーク構造の自動最適化時、性能向上が期待できない探索の早期打ち切りを行うには

Early Stoppingをクリックしてチェックします。また、Time Limitに1度のネットワークの評価を行う最大の時間をdays:hours:minutes:seconds(それぞれ2ケタの数値)のフォーマットで指定します。Time Limitを指定しない場合はTime Limitの値を削除し空欄にします。

 

Early Stoppingがチェックされている場合、探索中のネットワーク構造より乗加算回数が少ないネットワーク構造で過去に行った学習結果と学習曲線比較し、同じ世代で倍以上のエラーとなった場合はその時点で学習を打ち切り、次のネットワーク構造の評価に移ります。

 

Time Limitが設定されている場合、1つのネットワークの評価が指定した時間を超えるとその時点で学習を打ち切り、次のネットワーク構造の評価に移ります。