CC56

CC56: 567収束までに達成したい56リスト

Day-60 DQNと仲良く

f:id:hyper-pigeon:20200605224216p:plain

今日は前々から話題にしていたDQN[1]の話です。

日本語の内容ですら難しくて理解できないので、ずっと強化学習から逃げ続けていたのですが、やっと一歩目を踏み込むことができました。

今日の記事は、論文の解説というよりは、間違っていたらどんどんツッコミを入れて欲しいという感じです。

論文も約6年半前のものですし、すでにネット上に分かりやすい記事が無数にアップされてる上、ほとんどのAI系の人は内容を知っていると思うので…

一応、この論文を読んだだけでは、基礎的な強化学習の内容を理解したことにはならないと思うので、今後も強化学習の勉強をして抑えていきたいです。

ずっと勘違いしていたこと

自分は、DQNのことを入力に対し、行動を出力するものだと思っていたのですが、「行動の価値」を評価する関数のことがDQNだと知りました。

Q学習(Q-Leaning)というものは、20世紀からある古の学習法なんですね。学習っていう名前が付くのでここがDeepな部分かと思っていました。

Deep Q-Learning ではQ学習で使用する式を誤差に設定し、うまいことQ-Networkを学習できるようにした、というのが一番のキモなんだと思います。 あとは、experience replayや、ε-greedyなどのテクニックの組み合わせが噛み合った感じでしょうか。

強化学習用語(ざっくり)

こういう新しい概念を勉強したときは、文字に起こすと自分の理解レベルを確認できるはずなので、書き起こしてみました。 (間違っていたらすみません。いつでも修正します。)

だいたいの言葉の定義は[2]からざっくり拾っています。

  • 方策: ある状態のときどの行動を選ぶか、というルールのようなもの
  • 報酬: ゲームならスコア。より多くの報酬を得られるような学習を行う
  • 累積報酬: 未来の報酬を考慮した報酬の総和。未来の報酬には1.0未満の係数が累乗で掛けられ、時間が離れているほど影響が減る
  • 行動価値関数(action value function): 選択する行動がどれだけ報酬を得られるかを計算するための関数
  • 状態価値関数(state value function): 今の状態がどれだけ報酬に近いかを計算するための関数
  • マルコフ決定過程(MDP): 現在の状態と、その行動で確定するシステムの総称
  • ベルマン方程式(Bellman equation): MDPに対して使用可能
  • TD: temporal-difference(=時間差学習/時間的差分学習)
  • ε-greedy法: 一様乱数εにより、エージェントがランダムな行動を起こすようにする
  • Sarsa: Q学習とは別の強化学習の学習アルゴリズム。方策オン
    • 価値反復法(value iteration): 最適な行動を取り続けたさいの報酬を計算
  • Q学習: 方策オフ。Sarsa との違いは、ε-greedyの選択とは関係なしに常に報酬が最大になるような行動を選択(したことにする?)。結局Qって何のQなんだ?
  • experience replay: 学習の安定化のため、DQNのインプット/アウトプットをメモリに蓄積しておき、学習時にそれを再利用するテクニック。これ自体は1997年に提案されている

やっぱり書き起こすと怪しい部分が露呈しますね…まだまだ気付いてない勘違いとか多そう。

実装することで、修正できる知識も多いと思うので、一旦実装までやって肌感を知りたいと思います。

まとめはこちら↓。今の方法だと編集や検索に難があるので方法を変えるかも。

p-geon.github.io

明日は何もしません。ちょっと目を休めたいのでTwitterにも現れないと思います。

参考文献

  • [1] Minh et al., "Playing Atari with Deep Reinforcement Learning", 2015.
  • [2] 滝口直樹、『つくりながら学ぶ!深層強化学習PyTorchによる実践プログラミング』, 2018.

今まで支援していただいた方

名前あまり公開されたくない…などの要望があればTwitter等から連絡を頂ければ対応します! 並びは支援して頂いた順番です。