お気付きの点がありましたらご指摘いただけますと幸いです。
- Reservoir Transformers - ACL Anthology
- https://staff.fmi.uvt.ro/~daniela.zaharie/am2016/proiecte/tehnici/ReservoirComputing/ReservoirComputingApproaches.pdf
- 6.6. Random Projection — scikit-learn 1.0.2 documentation
- カーネル法入門―正定値カーネルによるデータ解析 (シリーズ 多変量データの統計科学)
- [2003.00152] Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs
第2話のまとめ | ![]() |

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

その内 2. については実験的事実だろうからもうよさそうだけど、1. と 3. について以下が気になるな。
- (1. → )一部の層を訓練せずとも性能が保たれることの直接的な論拠を何においているのか。
- (1. → )性能が損なわれない/向上するとは具体的にどのようなタスクで何を計測したのか。
- (3. → )"backskipping" とは何か。

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

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

タイポですか……では、その次の式は正しいのでしょうか、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つの流儀がどのように使い分けられるのか存じ上げませんが……リザバー化にも関係するのでしょうか……?
2つ目の式の下には、「目的関数の についての勾配は
の更新だけでなく前の層の勾配計算にも使用する」というようにあるけど、ちょっと不正確かな……
って
に依存していないから
視点の連鎖律に関わってこないし……まあどうでもいいけど。それで本研究では誤差逆伝播はしていくが一部の層ではそれで求めた勾配でパラメータを更新することはしないといっているね。

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

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

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

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