Unityゲーム開発スタジオ スタジオしまづ

初心者向けUnity講座・ 統計・機械学習関係についてつらつらと

ニューラルネットワークを用いたQ-learningの手順について

はじめに

ブロック崩しを攻略する人工知能ニューラルネットワークで作ろうとしたのですが,強化学習が必要ということを学習しました。今回はどのようにニューラルネットワークと強化学習を結びつけるかについて書きます。

 

Q-learningによる強化学習

今回,強化学習の1つであるQ-learningを採用します。Q-learningとは。。。 

強化学習の代表例として、Q学習がある。これは、或る環境状態sの下で、行動aを選択する価値(行動の価値)Q(s,a)を学習する方法となる。
或る状態sのとき、Q(s,a)の最も高いaを最適な行動として選択すればよい。

 http://www.sist.ac.jp/~kanakubo/research/reinforcement_learning.htmlより)
 ※自分の言葉で書けないってことは,いまだに意味がわかってない証拠です(T_T)
この記事にもあるようにQ(s,a)が未知関数なのでこいつをニューラルネットワークを使って近似的に求めます。
 

ニューラルネットワークを用いたQ-learning 

1. 適当にニューラルネットワークを使って,ある状態sから複数の行動a_nを出力します。

2. 適当に行動価値関数Q(s,a)を決めると,当然Q(s,a_n)がn個決まります。

ここからあるQ(s,a_i)を選ぶんやけど,どうやって選ぶかは,

  1. 各行動の Q 値をもとにボルツマン分布に基づくルーレット選択により行動 ap を決定する 

です。

3. Q-learningでよく用いられる更新式を使って新しいQ(s,a)_newを作ります。

4. Q(s,a)_new - Q(s,a) が小さくなるようにニューラルネットワークを更新します。

以下繰り返し更新を行う

 

次へ

私がかかえているブロック崩しについての問題は,どのタイミングでどのように学習を行えばいいのかわからないところです。まだQ-learningも理解できてはいませんが,難しい文献が多いので,ブロック崩しの問題に置き換えて理解していこうと思います。

 

参考文献

ニューラルネットワークを用いたQ-learning

https://www.jstage.jst.go.jp/article/kikaic/78/792/78_2950/_pdf 

強化学習の説明と更新式についてのわかりやすい例

http://www.sist.ac.jp/~kanakubo/research/reinforcement_learning.html