romAI検証コーナー(その4)非線形回帰:インパクト関数

Kosuke_IKEDA
Kosuke_IKEDA
Altair Employee

シンプルなモデルを使用して、romAIの機能をチェックしていきます。第4回はromAIをインパクト関数の非線形回帰問題に適用してみます。衝突問題など非線形性の強い問題へromAIが適用できるかの下調べとなります。

 

問題設定

If文とExponential関数を用いたインパクト関数を自作しました。

y=k exp (e*(u-u0)), u>u1

y=0, u<=u1

パラメータは

k = 1, e = 2.1, u1 = 10

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

image

 

romAIの設定

romAIの設定を行います。

入出力

第1~3回と同様に、静的ROMとしてInputs、Outputsのみを指定します。

image

 

関数

romAIではModel Typeとしてlinearとnon linearが選択できます。

今回は非線形の強いインパクト関数であるため、non linearのNeural Netを使用します。tanhとrelu関数でどのような違いがあるかを見るため、以下二つのモデルを作成します。レイヤーの数、ニューロンの数は、[20,20]としました。

  • Non Linear: tanh [20,20]
  • Non Linear: relu [20,20]

image

 

トレーニングパラメータの設定

第1~3回と同様に、Early Stoppingを使用します。Cross-Validationデータのlossの変化が見られなくなった段階でトレーニング終了とします。変化量は1e-7としました。

Epochsが上限に達してもトレーニングが終了するため、大きめの値1000としておきました。

Regulation Coefficientは急峻なカーブを表現できるよう0としています。詳しくは第3回をご確認ください。

image

 

romAIの精度確認

romAIの結果をインパクト関数と比較しました。

Non linear: tanh [20,20]

概ねインパクト関数を表現できています。

image

y=-1~1で拡大してみると、波が見られます。

image

Non linear: relu [20,20]

概ねインパクト関数を表現できています。

image

y=-1~1で拡大してみると、tanhと比較して波が小さく、フラットに近い特性が得られています。

非線形の強い特性に対してはrelu関数が向いていると言えます。

image

 

まとめ

今回はromAIをインパクト関数の非線形回帰問題に適用し、Neural Netでインパクト関数が概ね表現可能なことを確認しました。また、インパクト関数のような非線形性の強い特性はrelu関数が向いていることが確認できました。

Comments