Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@DisneyAladdin

【Python】TensorFlowでDeep Q Networkを試してみた

概要

・強化学習を実装したときのメモ
超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜さんを参考に実装
・⬆️非常にわかりやすく解説されてるからオススメ!
・最初は,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

・画面描写
block.gif

最後に

・やっぱ強化学習面白いです!
・時間があるときエポック数を少なくして,どのあたりから飽和してくるのかちょっと検証したいと思います.
・報酬関数の部分を少しチューニングしてみたいと思います.

参考

超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜
TensorFlow

15
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
DisneyAladdin
Pythonが大好物です.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?