Q-learningの実装
はじめに
neuralnetwork+Q-learningでブロック崩しを攻略する人工知能開発をしています。Q-learningについてある程度勉強したので簡単なサンプルを実装してみました。
実装結果
それがこれです。↓↓↓
一番右にプラスの報酬を与え,左から右に動くように学習しています。動画は学習後の行動です。
初期設定
まず,それぞれのマスにそれぞれの行動の価値を設定します。はじめから右に移ることに価値があることを教えては学習にならないので,すべてのマスのすべての行動の価値は0に統一します。
学習方法
一番左からはじまり,(左,止,右)のどれかの行動がランダムに選択されます。
一番右に来ればプラスの報酬がもらえますが,それ以外はマイナスの報酬がもらえます。
はじめはどう動いてもマイナスの報酬なのでどの行動も価値がありません。
しかし,あるとき一番右に来れば,報酬がもらえるので,その一つ前のマスで右に動くことの価値があがります。そのあともランダムに動きつずけると,右から2番目に移ることは価値があるので,その左側で右に動くことの価値があがります。
次への課題
現在ニューラルネットワークとの組み合わせを実装し,ブロック崩しをやらせているのですがまったく学習しません。そのことで,僕が勉強したりだらだらしたりしているので,今回のブログはかなり雑になりました。心のうやむやがなくなればコードの解説もしようと思います。