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

【機械学習基礎研究7】
倒立状態維持の強化学習(成功報酬依存性)

文責:遠藤 理平 (2018年6月19日) カテゴリ:機械学習(18)

前回、操作間隔(行動時間間隔)を0.05秒(20Hz)にて、環境数と行動数による成功率を示しました。 前回と同じ条件(おもりの位置情報のみ)でなんとか成功率を100%にするための方策を導き出したいと考えています。 貪欲性と学習率をいろいろ試しましたが、ほとんど変化が無かったので、これまでに操作しなかった成功報酬の与えてみます。

Q学習のパラメータ

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

・角度の分割数(環境数):14
・力の分割数(行動数):15
→ 最適行動価値関数:14×15

利得はおもりの位置エネルギーから運動エネルギーを引いた値($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(0.05秒ごとに行動を選択・実行する)
学習回数(episode):10000
割引率($\gamma$): 1.0
貪欲性($\epsilon$):学習回数0回から5000回まで0.5から1.0まで徐々に上げる。それ以降1.0のまま
学習率($eta$):学習回数0回から5000回まで0.1、それ以降0.01のまま。

学習結果

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

報酬:0(比較用)

報酬:500

報酬:1000

報酬:2000

報酬:3000

報酬:4000

報酬:5000

報酬:6000

報酬:7000

報酬:8000

報酬:9000

報酬:10000

結果と考察とメモ

・成功報酬を与えることで成功率は若干改善することが示せた(成功報酬4000でおよそ8%程度改善)。
→ ただし、抜本的な改善は見込めない。
・それにしても、最も成功率が高い機械(成功率60%)と低い機械(成功率ほぼ0%)の差がすごい。
→ 学習初期の経験でこんなにも一生に差が出てしまうのですかね。

【メモ】報酬の与え方を工夫する
【メモ】環境に角速度を加える
【メモ】ランダムな外力を加えて問題の難易度を上げる

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

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

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

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



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

関連記事

機械学習







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




Warning: mysqli_connect(): (28000/1045): Access denied for user 'xsvx1015071_ri'@'sv102.xserver.jp' (using password: YES) in /home/xsvx1015071/include/natural-science/include_counter-d.php on line 8
MySQL DBとの接続に失敗しました