update.これなあに?お世話になっているLiaroという会社で強化学習の勉強会をやりたいね~という話になり、興味がありつつもノータッチだった僕は急いで情報を集め勉強することになりました。この記事は勉強会を行うにあたって、参考になったサイト、もしくは情報をまとめたものです。勉強会で共有するために作ったけどせっかくだしqiitaにあげておくことにしました。読んだ感想や要点なんかも簡単にまとめれたらと思います。参考になった記事、重要だと思った記事には★マークをつけておきます。僕自身が強化学習初心者ということ、短い時間でまとめたことから誤りや不適切な点があるかもしれません。その場合は指摘していただけると幸いです。理論解説ほとんどが入門記事。シンプルなクエリでググったら上位に来る記事。記事を順番に読むことを何週もすることでどんどん理解が深まっていくので、理解したいなら3週はしよう。僕は2週くらいしかしてない。勉強の際に一番参考になったと思う記事。問題設定をかみ砕いて解説するところから始まり、最新のDQNまでまとめられている。実装の際重要になる工夫などもカバーしており、情報に引用がしっかりついているのがとても良い。Pythonではじめる強化学習これも参考になる入門記事。図が多く理解しやすいと思う。使われているコードはUdacityの講義から引用しているらしい。chainer界隈では有名(だと個人的に思っている)な@mitmulさんの解説スライド。古典的な心理実験や強化学習の背景、問題設定が図でわかりやすくまとまっている。スライドによる擬似的なアニメーションがあるため、思考の流れが理解しやすくてよかった。前編★NeuralTalkで有名なStanfordのKarpathy氏の深層強化学習のブログ記事の翻訳。gradients(方策勾配法)についてまとめられている。Pongを学習するニューラルネットがnumpyを使ってスクラッチ実装(130行程度!?)されていてすごい。論文で勉強できるようになりたい。良く引用されるものをまとめる。有名(らしい)な強化学習の教科書。強化学習の基礎を学びたいならこれで間違いないらしい。英語版はwebで無料で読める。Q-Learningの論文。search囲碁のトッププロを倒して一躍話題となったDeepMindのAlphaGoの論文。ライブラリ実装してみたい!試してみたい!となったときに。理解を深めるためにスクラッチで書くのも良いけれど、すぐ動かすならやはりあるものを使うのが一番。PyBrain深層学習が流行り始めたころは良く使われていた(と記憶してる)ライブラリ。標準で強化学習のための環境を提供しているのはこれぐらい?(要調査)これを使って迷路を解いてみる実装例が見つかった。REINFORCEjsあるかな?と思ってたらやっぱりあったjavescriptのライブラリ。なんでもJSの動きがここにも?サイトにデモがあり、眺めてるだけで結構面白い。JSの強みを活かしている。いうか作者がkarpathy氏。強化学習のための環境を提供するライブラリ。この環境に対してTensorFlowやChainerなどを使って強化学習の開発をしてくださいね、という感じ。みんなが同じ環境を使えるので、他との比較も行いやすい。訓練結果をアップロードすることもでき、ランキングが公開されているのでモチベーションにもつなげやすい。活動も活発なので、他の機械学習ライブラリを使える人はこれを使うのが良いと思う。使える環境を見てみよう。Silico(LIS)ドワンゴ人工知能研究所が開発した、強化学習に必要になる要素をまとめたライブラリ。強化学習のための環境とエージェントが提供されている。エージェントを動作させる環境はUnityで構築するため、見栄えは一番良い。CNNとDQNを組み合わせたエージェントが提供されているし、chainerなどで自作したエージェントもLISの環境で試せるらしい。他の人の実装を読むのは理解するのに役立つ。迷路探索を行うエージェントの学習を行う実装例。今回の勉強会のコードはここを非常に参考にした。Q-NetworkのChainer実装例。Q学習やDQNに関する解説もついている。Gymで実装する★タイトル通りの記事。強化学習の解説もあり、特に既存手法や強化学習自体に存在する問題点の解説が良かった。こんなむずかしさがあるのか~みたいな。コードの解説も詳しく、Keras等に慣れている人はこの記事は非常に参考になるはず。Introduction』の4章に出てくる「ギャンブラーの問題」についての実装例。