FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「機械学習と深層学習」をやってみる(3. Q強化学習)

機械学習と深層学習」の書籍を引き続きやってみる。今回は2.2節のQ強化学習をやってみた。

機械学習と深層学習 ―C言語によるシミュレーション―

機械学習と深層学習 ―C言語によるシミュレーション―

強化学習の一例として、迷路を解く(グラフ中で最大の特典を得ることができるノードを発見する)をやってみる。

この強化学習では、まずは各ノードの大してランダムな値を設定し、それを評価値とする。この評価値が高い方へとノードの選択を行っていく。

しかし、このままでは最初にランダムに設定した値で評価値の高いノードへのみ進んでしまい、学習が行われない。そこで、ε-グリーディ法というものを利用して、ランダムにノードを選択する可能性も残している。

ノードまで到達すると、今度は前のノードに対するフィードバックを行っていく。これは、後方のノードの評価値に比例した評価値を設定していくことで、最終的な正解(迷路の出口)につながるノードの評価値が高くなる。

github.com

./qlearning
73      34      46      30      23      4       3       67      49      25      21      92      18      98
69      34      47      30      23      4       3       67      49      25      21      92      18      98
69      32      47      30      28      4       3       67      49      25      21      92      18      98
69      31      47      30      33      4       3       67      49      25      21      92      18      98
66      31      47      31      33      4       3       67      49      25      21      92      18      98
63      31      47      32      33      4       3       67      49      25      21      92      18      98
60      31      48      32      33      4       3       67      49      25      21      92      18      98
58      31      49      32      33      4       3       67      49      25      21      92      18      98
56      31      50      32      33      4       3       67      49      25      21      92      18      98
56      30      50      32      37      4       3       67      49      25      21      92      18      98
56      30      50      32      37      12      3       67      49      25      21      92      18      188
...
45      784     51      35      73      882     3       67      49      25      21      92      18      991
45      784     51      35      73      882     3       67      49      25      21      92      18      991
45      784     51      35      73      882     3       67      49      25      21      92      18      991
45      784     51      35      73      882     3       67      49      25      21      92      18      991
45      784     51      35      73      882     3       67      49      25      21      92      18      991
45      784     51      35      73      882     3       67      49      25      21      92      18      991

f:id:msyksphinz:20170612214958p:plain

f:id:msyksphinz:20170612215016p:plain

ノード14が最大の評価値を得られるノードなのだが、それに接続されるノード14, 6, 2の評価値が高くなっている。

f:id:msyksphinz:20170612215107p:plain