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

【機械学習基礎研究5】
倒立状態維持の強化学習(成功率100%となる方策)

文責:遠藤 理平 (2018年6月11日) カテゴリ:仮想物理実験室(296)機械学習(5)計算物理学(155)

ここまで倒立状態維持の強化学習を以下のとおり様々なパラメータで試してみました。
貪欲性に対する成功率の変化
割引率に対する成功率の変化
学習率に対する成功率の変化
これまでは上記のパラメータは固定で試してみましたが、今回は学習回数によってパラメータを変化させて、成功率100%を目指します。 パラメータの与え方の指針は以下のとおりです。

(1)割引率は1(決定論的な物理系であるため)
(2)貪欲性を学習回数に応じて高める(はじめはいろいろ試して、後はこれまでの経験からもっともらしいものを選択)
(3)学習率を学習回数に応じて下げる(はじめは大雑把に捉えて、後は学習からのフィードバックを細かく取り込む)

何パターンか試してみた結果、

貪欲性:学習回数0回から500回まで0.5から1.0まで徐々に上げる。それ以降1.0のまま。
学習率:学習回数0回から500回まで0.1、それ以降0.01のまま。

と与えた結果、学習がうまく行った場合には成功率100%を達成することができました。そこで、今回はさらに環境数(角度の分割数)と行動数(力の分割数)を減らしてみます。

Q学習のパラメータ

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

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

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

学習結果

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

環境数10×行動数21

学習がうまく行った場合には成功率100%を達成。

環境数10×行動数11

行動数を半減させた場合、すべての場合で成功率100%を達成。
→ 行動数は少ないほうが各行動に対する学習回数が増えるため、むしろ良いことがわかる。

環境数10×行動数6

環境数10×行動数3

今更ですが、行動数は3つ(右向き、0、左向き)で十分であることがわかった。

環境数4×行動数3

環境数は4つまで減らしても問題なし。

環境数3×行動数3

環境数は3つ(左、真中、右)では成功率0%。

(考察用)環境数10×行動数6の学習回数0から1000までのグラフ

結果と考察とメモ

・学習回数によって貪欲性や学習率を変化させることは非常に効果的であることがわかった。
→ 本来は学習回数ではなく、成功率などの学習状況を反映させる方が本質的であると考えられる
・(最後のグラフから)ある程度学習が進んだ状態で学習率を下げることで、詰めの学習が行える
・環境数と行動数は必要最小限の方が最適行動評価関数の各要素の更新回数が増えるため、良い。

【メモ】問題設定の難易度を上げる

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

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

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

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



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

関連記事

仮想物理実験室







機械学習

計算物理学







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