雑記

お気付きの点がありましたらご指摘いただけますと幸いです。

f:id:cookie-box:20211104100722p:plain:w60

参考文献 1. の 5.4 節では「簡単な2次元の回帰問題」で提案手法「パーシステント進化戦略」をデモンストレーションしていますね。しかしこれがいったいどんなタスクかは一切論文本編には載っていないですね。サプリメントの M. Implementation の節にスクリプトがあるのみです。何をするスクリプトか読んでいきましょう。

f:id:cookie-box:20211104100722p:plain:w60

スクリプトを読んでいくと、

  • 関数 loss は2次元平面上に定義される関数である。
  • 関数 update は、2次元平面上の点 x と、2次元パラメータ theta と、現在の損失 L と、現在のステップ数 t_curr を渡すと、x を loss の勾配に沿って theta と t_curr で決まる学習率で更新し、そこでの損失を現在の損失に加算して返してくる関数である。
これたぶん、「座標 x=(1.0, 1.0) から出発して、theta によって制御される学習率で x を loss の最小点まで更新していきたい」という話ですね。100 ステップ後に最小点にたどり着くためには theta をどうすればいいか、という最適化問題のようです。このときに 100 ステップ分すべて展開してしまったら趣旨に合わないので、10 ステップだけしか展開できないというデモになっています。
  • 関数 unroll は、update を 10 回呼び出す関数である。
  • 関数 pes_grad は、N 個の粒子に unroll を適用する関数である。
  • 学習時の設定は以下である。
    • 進化戦略で用いる粒子数は 100 とする(antithetic pairs が 50 ペアあることになる)。
    • 進化戦略で用いる正規分布のノイズの標準偏差は 0.1 とする。

つづいたらつづく