ニューラルネットワークを用いたQ-learningの手順について
はじめに
ブロック崩しを攻略する人工知能をニューラルネットワークで作ろうとしたのですが,強化学習が必要ということを学習しました。今回はどのようにニューラルネットワークと強化学習を結びつけるかについて書きます。
Q-learningによる強化学習
今回,強化学習の1つであるQ-learningを採用します。Q-learningとは。。。
(http://www.sist.ac.jp/~kanakubo/research/reinforcement_learning.htmlより)強化学習の代表例として、Q学習がある。これは、或る環境状態sの下で、行動aを選択する価値(行動の価値)Q(s,a)を学習する方法となる。
或る状態sのとき、Q(s,a)の最も高いaを最適な行動として選択すればよい。
ニューラルネットワークを用いたQ-learning
1. 適当にニューラルネットワークを使って,ある状態sから複数の行動a_nを出力します。
2. 適当に行動価値関数Q(s,a)を決めると,当然Q(s,a_n)がn個決まります。
ここからあるQ(s,a_i)を選ぶんやけど,どうやって選ぶかは,
各行動の 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