romAI検証コーナー(その10)van der Pol方程式のリミットサイクルを再現できるか?
シンプルなモデルを使用して、romAIの機能をチェックしていきます。第10回は非線形振動子であるvan der Pol方程式のリミットサイクルがromAIで再現可能できるか確認します。
van der Pol方程式
3次の場合、以下の非線形微分方程式で表現されます。
非線形の減衰を持つ振動系ですので、van der Pol振動子(ファン・デル・ポール振動子)と呼ばれることもあります。
van der Pol方程式の数値解はAltair Activateで簡単に行えます。第7回で使用した1自由度ばねマスダンパー系のモデルの減衰項を非線形に変更しました。
mu=5で、初期値を(x0,v0)=(3,10)(青)と(x0,v0)=(0.1,0)(赤)とした場合のxの時刻歴とxv平面の軌跡です。どちらの初期値を用いても、xv平面で同じ軌跡に収束していることがわかります。これをリミットサイクルと呼びます。
muの大きさにより表れるリミットサイクルの形が変化します。
mu=1の場合
mu=5の場合
学習データの準備
今回はmu=1とmu=5のリミットサイクルがromAIで再現できるかを検証します。
様々な初期値からリミットサイクルに引き込まれる現象を再現するには、様々な初期値を用いた学習データが必要ですが、今回は時間を短縮するために、リミットサイクルの再現のみをゴールとします。したがって、初期値は(x0,v0)=(2,0)の1パターンのみとしました。
学習データとして、リミットサイクル1周期があれば十分ですので、現象時間は15secとし、x、vの履歴を取得しました。
注意点としては、mu=5の場合、変化が急峻となりますので、その急峻な変化が捉えられるようサンプリング時間を設定してください。今回は10^-3でサンプリングしています。
mu=1の学習データ(x、vの履歴)
mu=5の学習データ(x、vの履歴)
romAIの設定
romAIの設定を行います。今回は入力がありませんので、出力、状態量のみの指定です。出力、状態量ともに変位と速度としました。
Outputs: x, v
States: x, v
Physical constraintsを使用して、状態量同士の微分関係(変位xの微分が速度vであるという関係)を定義しています。
活性化関数はtanhとし、neural netは50 x 50として、epochsは500回としました。
計算結果
mu=1
romAIの予測結果はvan der Pol方程式のリミットサイクルを再現できていることがわかります。
また、学習データは0~15secのみでしたが、romAIは微分方程式を予測するので、15sec以降も正しく予測できることがわかります。
mu=5
romAIの予測結果はvan der Pol方程式のリミットサイクルをほぼ再現しているものの、xの時刻歴を見るとタイミングがずれていることがわかります。mu=5と非線形性が強くなると、x=±2での変化が急峻になるため、x=±2における小さい誤差の影響で時刻歴で見るとタイミングがずれてしまうと予測されます。
Lossの確認
romAIのトレーニング結果のLossを確認しました。mu=1,5ともに、10^-6のオーダであることがわかります。
非線形性の小さいmu=1の時刻歴を再現するにはこのオーダでも十分な精度ですが、非線形性の大きいmu=5の時刻歴を再現するにはLossをさらに小さくする必要がありそうです。
Lossを小さくするには
まずはEpoch数を増やすことが考えられます。トレーニングが十分でない場合、よりトレーニングを繰り返すことによってLossを小さくできます。
ただし、Lossが大きく振動している場合はEpoch数を増やしてもあまり効果がありません。
その場合は、Learning Rate(第9回参照)を小さくします。Leaning Rateを小さくすることで、Lossの振動が小さくなります。Lossの振動が小さい状態でEpoch数を増やすとLossをさらに小さくすることができます。
Epochsを500 -> 4000、Learning Rateを1e-3 -> 1e-4に変更しました。
Lossの確認
mu=5の場合のLossをトレーニングパラメータ変更前後で比較します。
Learning Rateを小さくしたことで、Epoch=500近傍の振動が低減していることがわかります。
Epoch数を増やしトレーニングを繰り返すことで、最終的に10^-7のオーダまでLossを低減できました。
結果の確認
mu=5の非線形性が強い場合でもxの時刻歴を正しく再現できるようになりました。
まとめ
romAIは非線形振動子であるvan der Pol方程式のリミットサイクルが再現できることを確認しました。
Learning Rateを小さくし、Epoch数を大きくすることで、Lossが低減し、非線形性が強い場合のリミットサイクルも再現できることを確認しました。
Comments
-
本ブログで使用したモデルとその解説動画は下記よりご利用いただけます。
パラメータを変えていろいろお試しください。
https://community.altair.com/community/?id=kb_article_view&sysparm_article=KB0122008
0