2018年1月30日 更新

python+tensorflowでatariのponをDQN(深層強化学習)してみた。

今回兼ねてからやってみたかったDQN(深層強化学習)を触ってみました。 とは言っても、githubにあったコードを実行するだけですが、実際に学習していく様は楽しかったです。

13,112 view お気に入り 0

[深層強化学習]pon-3

エポック900辺りの様子です。
10点ぐらいいれられるようになりました。

[深層強化学習]pon-4

エポック1200辺りの様子です。
かなり勝てそうになってきました。

[深層強化学習]pon-5

エポック1300辺りの様子です。
ついに勝ちました!!

[深層強化学習]pon-6

エポック1800辺りの様子です。
ほぼ完封に近いことができるようになりました。
必勝パターンを覚えたようです。
残念ながら0-21の試合は取れませんでした。
最後の方のターミナルの様子

最後の方のターミナルの様子

rewardが21となっており完封勝ちしたものがあることがわかります。

かなり学習に時間はかかりましたが、最終的には完封勝ちまで行けました。
途中から点を取る方法を学びその後は必勝パターンを学んだようです。
相手のコンピューターはおそらくボールの位置を一定のスピードで追随するだけのようです。
それより早く動かせれば得点を取れるということです。
こんな感じで強化学習はどんどん学びます。
面白かったです。

応用例

では、この強化学習は何に応用できるのでしょうか?
みなさんが知っている通り一番有名なのは今だとAlpha Goですね。
他には2Dゲームが多かったです。 最近は徐々に3Dのゲームもできるようになってきています。

CS275 Project: 3D Flappy Bird with Reinforcement Learning

Flappy Birdを学習させる様子。
計算量どのくらいかかるんだろうか...

Asynchronous Methods for Deep Reinforcement Learning: Labyrinth

謎の3Dゲームの様子

そのうちどんなゲームでも人間は勝てなくなるでしょうね。
ゲームができるということは現実でもかなりうまくいきそうですが、ゲームという閉じた環境だからこそ勝てているのでしょう。
Deep learningは閉じた環境だとめちゃめちゃ強いですからね。
他にはロボットの制御とかもあります。

Deep Reinforcement Learning for Robotic Manipulation

これはロボットに
ドアの開け閉めを覚えさせる様子です。
人が邪魔しても大丈夫なのが面白いです。

Robot Control with Distributed Deep Reinforcement Learning

こちらは小さな車のようなロボットを学習させた様子です。
最後の方に動いている様子があります。
なんかみていると酔いそうです。

ロボットに使えるようになると劇的に変化すると思います。
今までプログラムしたことしかできなかったのが、他のこともできるようになると臨機応変な対応ができるようになりそうです。
そのうちロボットが手術とかするようになるかもしれませんね。
他には、株や仮想通貨の取引も自動化できるようになるかもしれません。
webなどのデザインも強化学習で学んでいくことによって柔軟に変わっていくかもしれません。
きっと応用の幅はかなり広いと思います。
普通の機械学習はデータありきでそれを使って学びますが、強化学習は繰り返しできる環境を与えてデータを生成しながら学ぶので柔軟性があります。

感想

去年から機械学習の勉強を始めて、古典的機械学習、deep learning、CNN、RNN、自然言語処理、GAN、DQNととりあえず一通りやってみましたが一番面白そうだと思ったのはこの強化学習でした。
今後は強化学習とKaggleを引き続きやっていきます。
ちなみに強化学習の勉強の進め方は、下の2冊の順でやるといいらしいです。

32 件

関連する記事 こんな記事も人気です♪

Python + tensorflow でGANを試してみた.

Python + tensorflow でGANを試してみた.

今回兼ねてからやってみたかったGANを触ってみました。実際に画像が生成されていく様は楽しかったです。
Takumi Ihara | 55,942 view
量子アニーリングを駆使して数独を解いてみた

量子アニーリングを駆使して数独を解いてみた

先日,量子アニーリングの勉強会に参加して来ました.そのアウトプットとして,今回,数独ソルバーを作ってみます.
井上 大輝 | 4,030 view
Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

画像処理の一つ,モルフォロジー変換をPython と OpenCVのライブラリを用いて実装し,それを2値画像に対して適用します.
等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

前回の記事「等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 1」の続きです. 実際に実装をして,写像を確かめてみます.
等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像の一つであるSchwarz Christoffel 変換を用いて,画像の変換をしてみます. python によるコードも記載しております. 画像はhttps://uk.mathworks.com/help/images/examples/exploring-a-conformal-mapping_ja_JP.html より.

この記事のキーワード

この記事のキュレーター

Takumi Ihara Takumi Ihara