ε-δ論法,ε-N論法を含めた数学的コンテンツの可視化とアプリケーション開発のブログ
読者です 読者をやめる 読者になる 読者になる

Hello Dream World

作ったもの,感じた事をつらつらと。。。

ニューラルネットワークを用いた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