概要
・強化学習を実装したときのメモ
・[超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜]
(http://blog.algolab.jp/post/2016/08/01/tf-dqn-simple-1/)さんを参考に実装
・⬆️非常にわかりやすく解説されてるからオススメ!
・最初は,OpenAIのgym使ってたんだけど,画面描写がどうもうまくいかなくてつんでたからTensorFlowでやった.(今度会ったら,筑波大・強化学習・最高戦力のとくおう君にでも聞こうかな)
背景
・HONDAのインターン行った時に,初めて強化学習触って興味を持った
・その時は,TensorFlow使って自動運転のAIモデルを作った
・プログラムはあらかじめ作られていて,自分は報酬関数(Q関数)をチューニングしただけ
・➡︎強化学習やってみたくなった!
環境
・OSX
・Python3
準備
・TensorFlow
$ pip install tensorflow
・matplotlib
$ pip install matplotlib
・こちらからGitをダウンロードさせてもらいました.
実行
・モデルの訓練
$ python train.py
・テスト
$ python test.py
結果
・エポック数30まではこんなかんじ
・9回目で初めて成功!
・その後は,少しコツを掴めてきたのか,3,4回に一回くらいの間隔で成功
EPOCH: 000/999 | WIN: 000 | LOSS: 0.0068 | Q_MAX: 0.0002
EPOCH: 001/999 | WIN: 000 | LOSS: 0.0520 | Q_MAX: 0.0003
EPOCH: 002/999 | WIN: 000 | LOSS: 0.0558 | Q_MAX: 0.0000
EPOCH: 003/999 | WIN: 000 | LOSS: 0.0474 | Q_MAX: -0.0005
EPOCH: 004/999 | WIN: 000 | LOSS: 0.0440 | Q_MAX: -0.0019
EPOCH: 005/999 | WIN: 000 | LOSS: 0.0443 | Q_MAX: -0.0028
EPOCH: 006/999 | WIN: 000 | LOSS: 0.0339 | Q_MAX: -0.0046
EPOCH: 007/999 | WIN: 000 | LOSS: 0.0381 | Q_MAX: -0.0068
EPOCH: 008/999 | WIN: 001 | LOSS: 0.0350 | Q_MAX: -0.0095
EPOCH: 009/999 | WIN: 001 | LOSS: 0.0553 | Q_MAX: -0.0128
EPOCH: 010/999 | WIN: 001 | LOSS: 0.0433 | Q_MAX: -0.0158
EPOCH: 011/999 | WIN: 002 | LOSS: 0.0430 | Q_MAX: -0.0201
EPOCH: 012/999 | WIN: 003 | LOSS: 0.0357 | Q_MAX: -0.0232
EPOCH: 013/999 | WIN: 004 | LOSS: 0.0432 | Q_MAX: -0.0236
EPOCH: 014/999 | WIN: 005 | LOSS: 0.0397 | Q_MAX: -0.0222
EPOCH: 015/999 | WIN: 005 | LOSS: 0.0437 | Q_MAX: -0.0227
EPOCH: 016/999 | WIN: 006 | LOSS: 0.0481 | Q_MAX: -0.0204
EPOCH: 017/999 | WIN: 007 | LOSS: 0.0656 | Q_MAX: -0.0130
EPOCH: 018/999 | WIN: 007 | LOSS: 0.0434 | Q_MAX: -0.0034
EPOCH: 019/999 | WIN: 007 | LOSS: 0.0424 | Q_MAX: -0.0019
EPOCH: 020/999 | WIN: 007 | LOSS: 0.0642 | Q_MAX: 0.0137
EPOCH: 021/999 | WIN: 008 | LOSS: 0.0465 | Q_MAX: 0.0441
EPOCH: 022/999 | WIN: 009 | LOSS: 0.0345 | Q_MAX: 0.0491
EPOCH: 023/999 | WIN: 010 | LOSS: 0.0436 | Q_MAX: 0.0217
EPOCH: 024/999 | WIN: 010 | LOSS: 0.0371 | Q_MAX: 0.0582
EPOCH: 025/999 | WIN: 011 | LOSS: 0.0502 | Q_MAX: 0.0838
EPOCH: 026/999 | WIN: 011 | LOSS: 0.0341 | Q_MAX: 0.1054
EPOCH: 027/999 | WIN: 012 | LOSS: 0.0420 | Q_MAX: 0.1422
EPOCH: 028/999 | WIN: 013 | LOSS: 0.0335 | Q_MAX: 0.1543
EPOCH: 029/999 | WIN: 014 | LOSS: 0.0370 | Q_MAX: 0.1583
EPOCH: 030/999 | WIN: 015 | LOSS: 0.0429 | Q_MAX: 0.1700
・中略して,エポック数980~999はこんなかんじ
・100発100中成功してますね〜
・報酬も安定して高い値を獲得していることがわかります
EPOCH: 980/999 | WIN: 856 | LOSS: 0.0058 | Q_MAX: 0.7769
EPOCH: 981/999 | WIN: 857 | LOSS: 0.0010 | Q_MAX: 0.7644
EPOCH: 982/999 | WIN: 858 | LOSS: 0.0004 | Q_MAX: 0.8117
EPOCH: 983/999 | WIN: 859 | LOSS: 0.0013 | Q_MAX: 0.7591
EPOCH: 984/999 | WIN: 860 | LOSS: 0.0025 | Q_MAX: 0.7604
EPOCH: 985/999 | WIN: 861 | LOSS: 0.0005 | Q_MAX: 0.7933
EPOCH: 986/999 | WIN: 862 | LOSS: 0.0102 | Q_MAX: 0.7585
EPOCH: 987/999 | WIN: 863 | LOSS: 0.0008 | Q_MAX: 0.7673
EPOCH: 988/999 | WIN: 864 | LOSS: 0.0010 | Q_MAX: 0.7975
EPOCH: 989/999 | WIN: 865 | LOSS: 0.0007 | Q_MAX: 0.7867
EPOCH: 990/999 | WIN: 866 | LOSS: 0.0021 | Q_MAX: 0.8062
EPOCH: 991/999 | WIN: 867 | LOSS: 0.0007 | Q_MAX: 0.7717
EPOCH: 992/999 | WIN: 868 | LOSS: 0.0022 | Q_MAX: 0.6096
EPOCH: 993/999 | WIN: 869 | LOSS: 0.0058 | Q_MAX: 0.7815
EPOCH: 994/999 | WIN: 870 | LOSS: 0.0022 | Q_MAX: 0.7558
EPOCH: 995/999 | WIN: 871 | LOSS: 0.0004 | Q_MAX: 0.7771
EPOCH: 996/999 | WIN: 872 | LOSS: 0.0010 | Q_MAX: 0.7514
EPOCH: 997/999 | WIN: 873 | LOSS: 0.0063 | Q_MAX: 0.7018
EPOCH: 998/999 | WIN: 874 | LOSS: 0.0049 | Q_MAX: 0.7713
EPOCH: 999/999 | WIN: 875 | LOSS: 0.0009 | Q_MAX: 0.7712
最後に
・やっぱ強化学習面白いです!
・時間があるときエポック数を少なくして,どのあたりから飽和してくるのかちょっと検証したいと思います.
・報酬関数の部分を少しチューニングしてみたいと思います.
参考
・[超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜]
(http://blog.algolab.jp/post/2016/08/01/tf-dqn-simple-1/)
・TensorFlow