溜池トランスフォーマー【第2話】

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

第2話のまとめ

  • リザバートランスフォーマーは「ニューラルネットのパラメータの一部を固定しても性能が出るじゃん」といったものですが、これは ResNet でも先行研究があったようです(ICLR 2021)。こちらは比較的「バッチ正則化だけで性能が出るじゃん」という出口かもしれないですが、リザバーコンピューティングへの言及もありますね。他のネットワーク構造も一部のパラメータの訓練を放棄してよいのか気になります。
f:id:cookie-box:20220103094409p:plain:w200
f:id:cookie-box:20211229151958p:plain:w60

えっと、前回は[1]のイントロダクションまでをみて以下のように理解しました。

  1. ACL 2021 で「リザバートランスフォーマー」なる研究があり、トランスフォーマー内のエンコーダ層の一部を乱数初期化のままにしても性能は損なわれないどころか向上すると主張しています。一部の層を訓練せずとも性能が保たれるとなれば、無論訓練コストやモデルサイズ面も有利です。
  2. ではどの層を固定すればよいのかというと、経験的に、トランスフォーマー内に連なるエンコーダ層(torch.nn.Transformer でいう TransformerEncoderLayer)を交互に固定するのがよいようです。というか、連続して固定させると性能が落ちると。固定してしまうエンコーダ層をいっそ FFN 等に置き換える実験もしたようですが、優劣はまだわかりません。
  3. さらに "backskipping" なる手法を導入し訓練の効率化を図ったようです。
Random Projection やカバーの定理や Bochner の定理などの話もありましたが、この研究との直接的な関連がまだ不明瞭なのでさしあたりスルーしています。

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

その内 2. については実験的事実だろうからもうよさそうだけど、1. と 3. について以下が気になるな。

  • (1. → )一部の層を訓練せずとも性能が保たれることの直接的な論拠を何においているのか。
  • (1. → )性能が損なわれない/向上するとは具体的にどのようなタスクで何を計測したのか。
  • (3. → )"backskipping" とは何か。

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

確かにそれらはまだ把握できていませんね。それらを念頭におきつつ前回の続きをみていきましょう。第2節はアプローチとありますが……最初に出てくる式は何ですか?

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

式の一番右側が \frac{\partial L_0}{\partial x} になっているのはタイポかな……誤差を逆伝播していくといいたいと思うんだけど、ネットワークの重みの勾配をとるのに入力 x まで逆伝播する必要はないしね。x はずらさないから。x についての勾配をとるのは敵対的サンプル生成手法の Fast Gradient Sign Method とかだよね。

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

タイポですか……では、その次の式は正しいのでしょうか、Transformer はこの式で表されるのか。最近 PyTorch の torch.nn.Transformer の勉強をしたのでソースコードを思い出しましょう……ん、この式は TransformerEncoderLayer クラスの forward() の処理と一致しますね。但し、norm_first=True の場合に相当します(以下)。

https://github.com/pytorch/pytorch/blob/v1.10.1/torch/nn/modules/transformer.py#L335-L337

つまり、デフォルトではこの層内の2ブロック(self-attention block, feed forward block)のそれぞれで最後に LayerNorm しますが、この式は最初に LayerNorm する流儀ですね。 この2つの流儀がどのように使い分けられるのか存じ上げませんが……リザバー化にも関係するのでしょうか……?

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

2つ目の式の下には、「目的関数の \theta_L についての勾配は \theta_L の更新だけでなく前の層の勾配計算にも使用する」というようにあるけど、ちょっと不正確かな……\theta_L って \theta_{L-1} に依存していないから \theta_{L-1} 視点の連鎖律に関わってこないし……まあどうでもいいけど。それで本研究では誤差逆伝播はしていくが一部の層ではそれで求めた勾配でパラメータを更新することはしないといっているね。

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

えっ、あれ、混乱してきました。一部の層でパラメータを固定してもそれより上流に誤差逆伝播はされるんですか?

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

誤差逆伝播することとそれで求めた勾配で実際にパラメータを更新することは無関係だよ。そうだな、仮に第1層のパラメータは固定せず第2層のパラメータを固定するとして、「第2層の出力=第2層のパラメータ × 第1層の出力」だから第1層のパラメータの修正で第2層以降の出力は全部変わるよね。

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

あっ……そうですね。第2層を固定したところで、第1層が努力しなくてはいけないのは変わりませんね。いえ、逆に通常のニューラルネットで全ての層のパラメータを同時に動かす方が大丈夫なのかという気がしてきました。大丈夫なんですか?

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

ニューラルネットの学習理論については知らない……。

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

2.1 節もイントロダクション同様に関連話題が綴られていますが、直接的関連にはみえないですね……「なぜパラメータを固定しても害がないのか」といって、ランダムな写像にまつわる過去の研究を列挙して、これらの研究の正当化は Cover の定理と Johnson-Lindenstrauss の補題にあるといっていますが、なんだか雑なような……。

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

まあこの論文はリザバーを提案する論文じゃないんだからリザバーがどういいかについては時間があるときに[2]をみればいいんじゃないか。どの程度記述があるか知らないけど……この研究ではリザバー(=パラメータ固定エンコーダ層)として以下の4種類を考えたとあるね。

このどれもある程度上手くいったとある。あ、ここでリザバー化の先行研究として「バッチ正則化のパラメータを除いてすべて固定した ResNet」が出てくるね[5]。

つづいたらつづく