HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > 機械学習

【機械学習基礎研究12】
最下点からの強制振動で力学的エネルギー増大させる強化学習

文責:遠藤 理平 (2018年7月11日) カテゴリ:機械学習(12)

前回までは倒立状態を維持するための強化学習を行いました。続いて今回は最下点からの強制振動で力学的エネルギー増大させる強化学習を行います。できる限り、滑車は原点付近に居てほしいので、そうなるような利得を与えます。 なお、回転運動に必要な力学的エネルギーが獲得てきた場合に成功とみなします。

Q学習のパラメータ

環境と行動と利得の定義(最適行動価値関数の定義)

・おもりの角度の分割数:12
・おもりの分割数:12
・滑車の位置の分割数:7
→ 環境数:12×12×7
・力の分割数(行動数):5

利得の定義:原点からの距離の2乗に比例する減点項

力学的エネルギー(位置エネルギー+運動エネルギー)が増大するように、利得として力学的エネルギーをそのまま与えます。 一方、滑車ができるだけ原点近傍に留まってほしいので、原点からの距離の2乗に比例する減点項(バネ弾性力のポテンシャルに相当)を考慮します。

\begin{align} r = mgz + \frac{1}{2} m v^2 - \frac{1}{2} k x^2 \end{align}

第1項目:ポテンシャルエネルギー(加点)、第2項目:運動エネルギー(加点)、第3項目:バネ弾性力ポテンシャル(減点)
滑車が原点から5[m]離れたら、失敗状態として100点減点とします。

Q学習の表式とパラメータの値

\begin{align} Q^{(i+1)}(s,a) \leftarrow Q^{(i)}(s,a)+\eta\left[ r+\gamma \max\limits_{a'} Q^{(i)}(s',a') -Q^{(i)}(s,a) \right] \end{align}

$s$ : 時刻tにおける状態。$s(t)$と同値。
$a$ : 時刻tにおける行動。$a(t)$と同値。
$r$ : 時刻tの行動で得られた利得。$r(t+1)$と同値。
$Q(s, a)$ : 状態$s$における行動aに対する行動価値関数。上付き添字($i$)は学習回数を表す。
$\gamma$ : 割引率($0< \gamma \le 1$)
$\eta$ : 学習率($0< \eta \le 1$)
$s'=s(t+1)$

今回の設定

行動時間間隔:0.05(20Hz)(0.05秒ごとに行動を選択・実行する)
学習回数(episode):9,000回(残りの1,000回は学習なし)
割引率($\gamma$): 1.0
貪欲性($\epsilon$):学習回数0回から9,000回まで0.5から1.0まで徐々に上げる。それ以降1.0のまま
学習率($\eta$):学習回数0回から9,000回まで0.1、それ以降0。
初速度( $\boldsymbol{v}_{0}$ ):-1~1[m/s]でランダムに与える
外力( $\boldsymbol{f}_{\rm ext}$ ):なし

学習結果

学習回数に対する成功確率

学習回数に対する成功率(100回学習ごとの平均)のグラフを示します。最後の1,000回は貪欲性1として学習結果を評価しています。 同じ条件で100回学習し、①最も成績が良い結果(青色)、②最も成績が悪い結果(橙色)、③100回の平均(茶色)の3つを表示します。

最も成功率が高い機械による制御結果:おもりの位置と速度、滑車の位置の時間依存性

最も成功率が高い機械による制御結果:おもりと滑車の軌跡

結果と考察とメモ

・力学的エネルギーを利得と与えることで目的を達成することができました。
※ちなみにバネ弾性力ポテンシャル項(減点)を加えないと、滑車が一方方向にダッシュし続けることが最も力学的エネルギーを獲得してしまうため、意図通りの学習はできません。

【メモ】おもりが真下にいる状態から倒立状態になるための学習を行う。
【メモ】最適行動評価関数の関数近似をニューラルネットワークで実装する(深層強化学習)

プログラムソース(C++)

http://www.natural-science.or.jp/files/NN/20180711-1.zip
※VisualStudio2017のソルーションファイルです。GCC(MinGW)でも動作確認しています。

参考(物理シミュレーション)

上記シミュレーションは、ルンゲ・クッタ法という常微分方程式を解くアルゴリズムを用いてニュートンの運動方程式を数値的に解いています。本稿で紹介した物理シミュレーションの方法を詳しく解説している書籍です。もしよろしければ「ルンゲ・クッタで行こう!~物理シミュレーションを基礎から学ぶ~(目次)」を参照ください。



▲このページのトップNPO法人 natural science トップ

関連記事

機械学習







▲このページのトップNPO法人 natural science トップ