【機械学習基礎研究10】
倒立状態維持の強化学習(ランダムな外力を加えても成功率を上げる最適行動評価関数は?)
前回、おもりにランダムな外力(撃力)$\boldsymbol{f}_{\rm ext} $を1秒に1回程度の頻度で与えることで難易度を高めた結果、外力が5[Ns]でほとんど成功することができなくなってしまいました。そこで今回は、滑車に加える力の最大値を5倍にして、行動数を環境数を増加させて成功率の変化を確かめます。
Q学習のパラメータ
環境と行動と利得の定義(行動価値関数の定義)
・角度の分割数:4, 8, 16, 24, 32
・角速度の分割数:4, 8, 16, 24, 32
・力の分割数(行動数):3, 5, 9, 17
利得はおもりの位置エネルギーから運動エネルギーを引いた値($mgz-1/2 mv^2$)とし、目標達成時(5秒間落下しない)やペナルティー(5秒以内に落下)は与えないことにします。
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):9000回(残りの1000回は学習なし)
割引率($\gamma$): 1.0
貪欲性($\epsilon$):学習回数0回から9000回まで0.375から0.750まで徐々に上げる。それ以降1.0のまま
学習率($\eta$):学習回数0回から500回まで0.1、それ以降0.01のまま。
外力( $\boldsymbol{f}_{\rm ext}$ ):-5[Ns]から5[Ns]まで1秒に1回の頻度でランダムに与える。
学習結果
学習回数に対する成功率(100回学習ごとの平均)のグラフを示します。最後の1000回は貪欲性1として学習結果を評価しています。 同じ条件で100回学習し、①最も成績が良い結果(青色)、②最も成績が悪い結果(橙色)、③100回の平均(茶色)の3つを表示します。
行動数:3, 環境数:4×4
行動数:3, 環境数:16×16
行動数:3, 環境数:32×32
行動数:5, 環境数:8×8
行動数:5, 環境数:16×16
行動数:5, 環境数:32×32
行動数:9, 環境数:8×8
行動数:9, 環境数:20×20
行動数:9, 環境数:24×24
行動数:9, 環境数:30×30
行動数:9, 環境数:32×32
行動数:9, 環境数:64×64
行動数:17, 環境数:8×8
行動数:17, 環境数:24×24
行動数:17, 環境数:32×32
行動数:25, 環境数:24×24
行動数:33, 環境数:8×8
行動数:33, 環境数:32×32
行動数:65, 環境数:8×8
行動数:129, 環境数:8×8
行動数:129, 環境数:16×16
結果と考察とメモ
・環境数が少ないと成功率の高い機械と低い機械がばらける。
→ 環境数4×4でも一番成功率が高い機械は85%に達するのは意外でした。
・行動数9、環境数24×24が平均的な成功率が一番高い。
・今回示していませんが、貪欲性1で学習させると成功率が下がる。
【メモ】滑車の位置を原点付近に留まるようにする
プログラムソース(C++)
・http://www.natural-science.or.jp/files/NN/20180625-1.zip
※VisualStudio2017のソルーションファイルです。GCC(MinGW)でも動作確認しています。
参考(物理シミュレーション)
上記シミュレーションは、ルンゲ・クッタ法という常微分方程式を解くアルゴリズムを用いてニュートンの運動方程式を数値的に解いています。本稿で紹介した物理シミュレーションの方法を詳しく解説している書籍です。もしよろしければ「ルンゲ・クッタで行こう!~物理シミュレーションを基礎から学ぶ~(目次)」を参照ください。