お気付きの点がありましたらご指摘いただけますと幸いです。
- Paul Vicol, Luke Metz, Jascha Sohl-Dickstein. Unbiased Gradient Estimation in Unrolled Computation Graphs with Persistent Evolution Strategies. In Proceedings of the 38th International Conference on in Machine Learning (ICML 2021), 2021.
Unbiased Gradient Estimation in Unrolled Computation Graphs with Persistent Evolution Strategies
- A Gentle Introduction to Backpropagation Through Time
参考文献 1. は RNN の学習に進化戦略(ES)を工夫して適用することによってバイアス・バリアンスの抑制、学習の高速化、省メモリ化ができるというものでした。その具体的な手法(パーシステント進化戦略)は、参考文献 1. の 6 ページ目から読み取るに、以下のようなものではないかと思います。参考文献に倣って先に単純な適用を示し、次にそれをどう変更するかを文字色を変えて示します。
進化戦略を単純に適用した RNN の学習(ES)
入力データを ステップずつの区間に区切り、区間ごとに期待する出力値を用意しておく。このデータに最適化するように RNN のパラメータを現在の値 から更新することを考える( は 次元)。探索に用いる粒子の数を とする。
RNN の隠れ状態ベクトルに初期値をセットする。
最初の区間に対して以下のように最適化を実施する。
- 求める 次元の勾配 にゼロベクトルをセットする。
- に対して以下の処理を実行する。
- 回目の処理の開始時、 が奇数であれば から探索方向 を取り出す。
が偶数であれば とする。 - パラメータを ずらして損失を求める(隠れ状態も に更新されるが利用しない)。
- ずらした箇所の損失が であることに基づき を更新する。
- ループし終わったら をループ回数と探索方向の分散で割る。
- 先に次の区間に対する最適化のために現在のパラメータで隠れ状態 を更新しておく。
- と逆方向にパラメータを更新する( は学習率)。
パーシステント進化戦略を適用した RNN の学習(PES)
入力データを ステップずつの区間に区切り、区間ごとに期待する出力値を用意しておく。このデータに最適化するように RNN のパラメータを現在の値 から更新することを考える( は 次元)。探索に用いる粒子の数を とする。
粒子の数だけ RNN の隠れ状態ベクトルを用意して初期値をセットする。
粒子の数だけ探索方向を蓄積するためのベクトルを用意してゼロベクトルをセットする。
最初の区間に対して以下のように最適化を実施する。
- 求める 次元の勾配 にゼロベクトルをセットする。
- に対して以下の処理を実行する。
- 回目の処理の開始時、 が奇数であれば から探索方向 を取り出す。
が偶数であれば とする。 - パラメータを ずらして損失を求める。この粒子用の隠れ状態 も更新する。
- この粒子の探索方向を蓄積する。
- ここまで ずらしてきた箇所の損失が であることに基づき を更新する。
- ループし終わったら をループ回数と探索方向の分散で割る。
- 先に次の区間に対する最適化のために現在のパラメータで隠れ状態 を更新しておく。
- と逆方向にパラメータを更新する( は学習率)。