DeepMind の PopArt は拍子抜けするくらいシンプル.
DeepMind から、マルチタスク学習を加速するテクニックが公開されました。
論文
https://arxiv.org/abs/1809.04474
を読んでみると拍子抜けするほど簡単な仕組みだったため、これで性能がでるのであればエンジニアとしてはうれしいです。
Pop-Art
コアとなる仕組みは、
[1602.07714] Learning values across many orders of magnitude
で提案されている Pop-Art というテクニックで、この名前は
Pop : Preserving Outputs Precisely
Art: Adaptively Rescaling Targets
の頭字語です。
やりたいことは、価値関数ネットワークの学習時に必要なターゲットの値(実際に行動して得られた総報酬の実現値)を適当にスケーリング(Art)して、価値関数ネットワークの出力値を [-1, 1]付近に揃える、とうことです。
ただし、これを素朴にやってしまうと、価値関数のネットワークの更新が、毎回異なるターゲット値へ対応するスケーリングに振り回されてしまうため、スケーリング変換の変更分を吸収する(Pop)仕組みを入れて、学習が減速してしまうのを抑えています。
アルゴリズムは、Art --> Pop --> SGD といった感じで進めるので、実装も楽そうです。
ART
ターゲット値()の標本平均として 、二乗平均として を、次の式で見積もります。
分散は で計算しています。
POP
価値関数ネットワークの最終隠れ層を とすると、次のフルコネクション層(重み行列 W, バイアスベクトル b)を通った後の出力 は、
これをスケーリング(重み 、バイアス )して,ターゲット値に合わせるとすると
ARTで作った新たなスケーリングが前段のネットワークに影響を与えないよう条件:
を科すと、はスケーリング分の変化を打ち消すように
と変えておく.
より前のネットワークは,SGDで更新すればOK.という感じです。
Multi-task Learning with PopArt
(タスクの数に対応した最終出力を持つ)価値関数のスケーリングと学習にPop-Art を使い,(タスクによらない)ポリシー部分の学習に使うアドバンテージ関数部分にはスケーリングされたアドバンテージを用いるというだけです。
まだ実装して試してはいませんが、非常にシンプルな方法なので、効果が出るなら流行りそうな手法だと思いました。(Simple is Best!)