romAI検証コーナー(その13)繰り返しトレーニング


本記事では、ver. 2023.1で実装された新機能であるromAIの繰り返しトレーニング(Repetition)機能を紹介します。

romAIのトレーニングでは、データの分割とハイパーパラメータの初期値に乱数を使用しますので、同じ設定(レイヤー数、ニューロン数、活性化関数)でもトレーニングの度に結果は変わります。

Repetitionを使用すると、自動で指定した回数のトレーニングを行いますので、その中から最も精度の良かったモデルを採用することが可能です。

本記事で使用したモデルは下記よりダウンロード可能です。

create_curve.scm

 

問題設定

第4回: 非線形回帰(インパクト関数)と同じモデルを使用します。

u=10を超えたところで、壁に衝突し、反力が立ち上がることをイメージしています。今回はこれをトレーニングデータとし、静的な問題として、この特性を捉えることができるかを確認します。

 

romAIの設定

静的ROMとしてInput / Outputのみ指定。

ニューラルネットワークはRelu [20, 20]。

さらにAuto ExplorationとRepetitionにチェックを入れ繰り返しトレーニングを有効にします。繰り返し回数はデフォルトの3です。任意の回数に変更可能です。

トレーニングを実行すると、3回トレーニングが行われ、3つのモデルが出力されます。

 

romAIの精度確認

トレーニングが完了し、Post-Processorのタブを開くと、3つのromが登録され、Test Lossの相対指標が表示されます。

Test Lossが最も小さかったケースを1とし、その比率が表示されます。

結果、rom3が最もTest Lossが小さく、rom1はrom3の3.8倍のTest Loss、rom2はrom3の2.4倍のTest Lossであることを示しています。

このように、同じ設定(レイヤー数、ニューロン数、活性化関数)でも使用する乱数により結果が変わることがわかります。

rom1を選択すると、rom1の結果をすぐに表示できます。rom1では、後半にずれがあることがわかります。

 

まとめ

前回バージョンの2023にてAuto Explorationが追加され、ニューラルネットワークの設定(レイヤー数、ニューロン数、活性化関数)を変えたトレーニングを自動で行えるようになりましたが、今回のRepetitionのほうが効果が高いケースもあります。

まずは、ニューラルネットワークの設定はデフォルト(Relu [20,20])でいいと思いますので、Repetitionをお試しください。

 

使用製品

Altair Twin Activate

romAI