ふつうの word embedding だと V x E (V: 単語数, E: embedding の次元)のサイズのパラメータが必要。
従来のBERT 系のアーキテクチャでは word embedding と hidden size を揃えてきたので、 E = H (H: hidden size)になる。
モデルサイズを大きくしようとして H を増やすと V x E (= V x H) も大きくなってパラメータ数が爆増してしまう。
word embedding は context 非依存の意味さえ表現できれば良いので、そんなに大きい値にする必要はないし、hidden size とは独立にいじれるはず。
そこで ALBERT では V x E (= V x H) を分解して V x E + E x H にする。
ふつう H >> E なので、パラメータ数を大幅に削減できる。
BERT 超えシリーズ。
なにがすごいか
BERT との差分
モデルサイズ削減
性能向上のためにモデルを大きくして表現力を増したいが、BERT は大きすぎて GPU / TPU メモリが辛い。 さらに、単に BERT を大きくしただけではむしろ性能が悪化することも実験によって確認された。
モデルを小さくするために ALBERT では以下の 2 つを提案している。
Factorized embedding parameterization
ふつうの word embedding だと
V x E
(V: 単語数, E: embedding の次元)のサイズのパラメータが必要。 従来のBERT 系のアーキテクチャでは word embedding と hidden size を揃えてきたので、E = H
(H: hidden size)になる。 モデルサイズを大きくしようとしてH
を増やすとV x E (= V x H)
も大きくなってパラメータ数が爆増してしまう。word embedding は context 非依存の意味さえ表現できれば良いので、そんなに大きい値にする必要はないし、hidden size とは独立にいじれるはず。 そこで ALBERT では
V x E (= V x H)
を分解してV x E + E x H
にする。 ふつうH >> E
なので、パラメータ数を大幅に削減できる。Cross-layer parameter sharing
シンプルに層間でパラメータを共有すればパラメータ数削減できるよね、という話。 Attention 部分だけを共有するパターンや FFN 部分だけを共有するパターンも考えられるが、実験の結果すべて共有するのが最も良かったという結論になっている。
これによってパラメータ数がめちゃくちゃ削減されている。(共有しているだけで層の数はかわらないので、別に速くなったりはしない)
Sentence Order Prediction
NSP は後続の研究によってあまり意味がないという結論が出つつある。 実際 RoBERTa などは NSP をやっていない。
この論文では、NSP の問題点は NSP がタスクとして簡単すぎたことにあるのでは、という仮説をたてている。 NSP では与えられた 2 文が連続した文章かどうかを予測するが、全然違うトピックについて話している 2 文が与えられたときにそれが Negative Pair であることを予測するのは簡単すぎる。 (文章の coherency を学習するのと比べて) しかも、トピックについては Masked Language Model の学習によって十分考慮されているはずなので、 MLM と NSP を組み合わせても効果的でない。
そこで、ALBERT は「連続した 2 文を、ランダムに順序を入れ替える。モデルは、その 2 文が正しい順番か逆順か、を予測する」という Sentence Order Prediction を提案している。
MLM only, MLM + NSP, MLM + SOP で実験し、 SOP の効果を実証している。
感想
いろいろ提案しているが、それぞれの有効性を示すための実験がかなりちゃんとしているなと思った。 モデルサイズを小さくした → 現実的なリソース内でもっと大きくできるじゃん → SQuAD, etc. で SoTA!という流れはなんというか世界の違いを感じる...(小さくしてほしい) 推論速度は BERT-large より遅いのでつらそう。