概要
そこそこ長くデータサイエンティストとして働いてきたけど避けてきた(触れる機会がなかった?)強化学習にようやっと入門したので自分の取ったスタディパスと概要を残しておく。これから強化学習に入門する人の参考になるかも?
お前誰?
ブラジルでデータサイエンティスト/機械学習エンジニアとして働いています。
強化学習
教師あり、教師なしと並んでデータサイエンスの一大分野。色々なところで名前は聞くけれど、個人的には『ゲームくらいでしか使わなくね?』と思っていてキャリアの構築によっては正直ノータッチでも行けると思ってる。勉強コストの割に使う頻度が著しく少なそうなのでこれまでは完全にノータッチだった。
どこまで行った?
数式を追って、自分で書いておおよそ理解したつもりになってるのは以下のもの
- DP
- MC
- TD
- on/off policy
- SARSA
- DQN
- REINFORCE
- Actor-Critic
- etc..
所感
入門してみての感想は『数学で押せる』だった。そんなに多くない数の式とその周辺の式を理解してコードに落とし込むだけで、とりあえず入門はできる。
スタディパス
勉強開始したのがおおよそ二週間前。最初に手にっ取った本は『Pythonで学ぶ強化学習』(KS情報科学専門書)。とても良い本で一つ一つのステップを追っていくのはそんなに難しくはなかったけれど、どうにも強化学習の全体像と俯瞰したときの一つ一つの役割について迷子になってしまった。丁寧に読み返して整理すれば多分どうにかなったとは思うけれど、せっかくの新しい分野なので他の本に切り替えてみた。(どうせ有名所は後々全部読むことになるので。。)
それで手にしたのが『ゼロから作る Deep Learning』の四巻(O'Reily)。これがすごくわかりやすく一気に読了。数式関係は一通り自分でもノートで追ってみて、アルゴリズムも自分で書いて実験。
本のコードはPythonだったけれど、なんとなくGoで書きたい気分だったのでGoで一通り書いてみた。(https://github.com/marubontan/reinforcement-learning-playground)
ちょいちょい怪しい部分もあるけど、入門段階で気にしすぎると詰まってしまうのでザクッと書いてみた感じ。
TDくらいまではGoで書いていたけれど、ニューラルネットが絡んできたあたりからPythonにシフト。この辺は、ディープラーニング部分はGoではなくPythonを使いたかったから。
今後
自分的には『入門しました!』と言えるための部分は一通り攫ったとは思うので、ここからは論文の実装や他の本に手を出しながら学習を進めていきたい。仕事で使う機会は来るのか??