BERTはまだまだ進化する!軽くて強いALBERTが登場!

3つの要点

✔️BERTの構造に2つの改善を施し、大幅なパラメーター削減を実現
✔️BERTで効果がないとされていた学習タスクを改善し、より文法を捉えた学習を実現
✔️パラメーター削減による速度の向上だけでなく、性能の向上をも実現

 

現在の自然言語処理のトレンドの一つとして、ELMoやBERT、XLNetのような言語モデルベースの機構を用いた事前学習により、様々なタスクの性能効能を目指すというものがあります。弊メディアでもこのトレンドを追いかけ、BERTやその改良版であるERNIEXLNetRoBERTaについて紹介してきました。

こうした手法を用いた事前学習は、QAタスクなどのタスクで大きな性能の向上に貢献します。一方で、BERTをベースとしたモデルはパラメーターが非常に多く、学習にも莫大な時間がかかることが知られています。また、BERTは構造的に学習が難しいため、パラメーターを増やしていくことで性能が下がってしまういう問題があります。さらにBERTの学習に盛り込まれているNext Sentence Prediction(NSP)は性能の向上に寄与しないと、かねてよりその必要性について議論されてきました。

ALBERT(A Lite BERT)ではこうした問題を解決するために、パラメーターの大幅な削減とそれに伴う学習速度の向上を実現しています。これらのパラメーター削減はタスク学習の制約としても機能するため、BERTの学習が効率的になり、最終的な性能の向上も報告されています。さらにNSPに代わる新たなタスク学習を盛り込むことで、本来NSPによって学習を試みていた「文脈の一貫性の理解」のより効果的な獲得を実現しました。

BERTの抱える悩み

 莫大なパラメーター数と学習時間

一般的に性能向上が報告されているBERTは、非常に多くのパラメーターを抱えた巨大なモデルとして知られています。パラメーターが多いということは、すなわち使用するメモリ量や学習にかかる時間が多いことを意味します。例えば配布されているBERTモデルの学習には、16個のTPUを用いて4日間の学習が必要となります。後続のXLNetに至っては、516個のTPUを用いて2.5日の学習が必要とされています。

これらの学習を一般的なクラウドコンピューティングで行おうとすると、それだけで数百万円かかってしまうという試算もされています。そのため、個人や中小企業が自前のデータでBERTやXLNetを学習することは難しく、配布されている学習済みモデルを利用するしかないといった問題があります。

 モデルの構造的な難しさ

BERTの抱える二つ目の問題として、学習の難しさが挙げられます。BERTの抱える莫大なパラメーター数のために、その最適化が難しいと考えられています。

例えば配布されているBERTよりもさらに巨大なBERTを学習することでモデルの表現力が増し、様々なタスクで性能が向上すると考えられます。しかし、単純にBERTのパラメーター数を増やすだけでは、むしろ性能が下がってしまうことが著者らの実験で示されています。下表は著者らによるBERTのパラメータ数を増やした実験で、1270Mものパラメーター数を持つ「さらに大きい」BERTを作成したところで、その性能は「大きい」BERTに劣ってしまうことが示されています。

進化したALBERT

本論文では、大きく分けて二つの改善方策が示されています。一つ目はこれまでのBERTの課題となっていたパラメーター数の削減です。これにはCross-Layer Parameter SharingとFactorized Embeddingという二つのテクニックが用いられています。この内二つ目はパラメーターを削減したBERTの学習をさらに効果的にするための工夫で、Sentence Order Predictionというタスクを新たに提案しています。

 軽く、強い構造へ

Cross-Layer Parameter Sharing

BERTでは、注意機構を用いたレイヤーを複数積み上げることで入力をエンコードします。一般的に、各レイヤーのパラメーターはレイヤーごとに別のものを用いるため、レイヤーを積めば積むほどパラメーターが増えてゆきます。ALBERTではこのパラメーターを各レイヤーで共有することで、パラメーターの削減を試みています。

また本論文では、レイヤー間でパラメーターを共有することで、各レイヤーの計算結果のばらつきが少なくなり、学習が安定すると主張されています。下図は各レイヤーに入力されたベクトルと、そのレイヤーで計算された出力結果の差を表したものです。従来のBERTに比べ、レイヤー間でパラメーターを共有しているALBERTは入力と出力のばらつきが少ないことがわかります。

下表では、パラメーターの共有の仕方を変えて、後段タスクでの性能の比較を行っています。「all-shared」は全てのパラメーターを共有したモデル、「not-shared」がBERTと同様にパラメーターの共有を行わないモデルです。パラメーターを共有してしまうとモデルの表現力が大幅に落ちてしまうようにも考えられますが、実験結果より大きく性能が低下することはないと示されています。

Factorized Embedding

ALBERTでは単語分散表現の埋め込みを分解することで、パラメーターの大幅な削減を行なっています。語彙数がV、単語埋め込みサイズがHであるとき、一般的にはH×Vの行列とV×1のone-hot表現を用いてベクトルの抜き出し(単語埋め込み)を行います。このときH×Vの行列を学習するため、パラメーター数は当然H×Vとなります。

例えば配布されているBERTでは、語彙の大きさVが30,000、埋め込みサイズHが1,024と設定されています。すなわち、単語の埋め込みだけで30,720,000ものパラメータを保持することになります。

ALBERTではこの巨大な行列をE×VとH×Eの行列に分解することで、パラメーターの削減を行います。これにより、保持するパラメーターがH×VからE×V+H×Eへと減らすことができます。

例えばALBERTではE=128と設定しているため、128×30,000+1,024×128=3,971,072となり、パラメータ数を13%まで削減することができます。実装上は埋め込みサイズを小さくした上で線形変換を一度かけることになるため、非常に手軽におこなえる改善と言えます。

論文中ではEの大きさがどの程度性能に影響を与えるかについて実験を行なっています。下表はALBERTのEを変えて事前学習した後に様々なデータセットで学習を行い、その性能を比較したものです。結果より、Eを小さくすることでパラメーター数が大きく削減されているにも関わらず、性能の著しい低下が起きていないことが確認できます。

 Sentence Order Predictionでさらに強く

BERTではNext Sentence Prediction (NSP)というタスクを学習することで、「文脈の一貫性の理解」を獲得しようと試みていました。NSPは正例として同じドメインの連続する二文、負例として異なるドメインから抽出した二文を用意し、「それぞれの2文が連続しているか?」という問題を当てるタスクです。これにより、連続する二文の内容の一貫性をモデルが学習できると仮定していました。

参考:Googleが公開した自然言語処理の最新技術、BERTとは何者なのか

連続する二文の一貫性を判断するためには文の内容を理解しなければならないため、このタスクを学習することで「文意の理解」が獲得できると期待されていました。しかし、負例が異なるドメインから作成されているため、実際には単純なトピック分類を行うだけでこの問題は解くことができてしまいます。そのため、BERTのNSPは期待されていた効果を発揮できていないと本論文では分析しました。

そこで提案手法では、正例として連続する二文、負例として正例の二文をひっくり返したものを用い、それぞれが「正しい順に二文が並んでいるか?」という問題を当てるタスクを導入しました。これはSentence Order Prediction(SOP)と呼ばれ、正例も負例も同じドメインから作成されているため、NSPのような問題は起きず期待通り「文意の理解」ができると考えられます。

下表ではNSP、SOPを用いて(あるいは用いずに)学習を行ったモデルの性能を比較しています。MLMは穴埋めクイズ(Masked Lanugage Model)を表しており、BERTの基本となる学習タスクです。結果より、SOPを用いた学習を行うことで、様々な後段タスクで性能の向上が確認されました。

またNSPによる学習ではSOPタスクを52.0%の正答率でしか解けない一方で、SOPによる学習ではNSPタスクも78.9%の正答率で解けるようになっている点も重要です。このことは、SOPタスクの学習がNSPタスクの学習内容を含んでいることを表し、その逆が成り立っていないことを示しています。

モデルを巨大にしても軽く、強いALBERT

最後に、BERTとALBERTの性能比較をみてみましょう。下表ではBERTとALBERTの各モデルのパラメーター数と学習時間、後段タスクでの性能の比較をしています。まず注目するべきはALBERTの圧倒的なパラメーターの少なさです。最も構造が巨大なALBERTのモデルでさえ、BERT-large以下のサイズに収まっています。

また、上述したパラメーターの削減やSOPタスクの導入により、後段タスクでの性能向上も確認できます。BERTを単純に巨大な構造にしたBERT-xlargeでは性能が大きく落ちてしまっているのに対し、ALBERTでは構造を巨大にすることで性能の向上が得られています。

まとめ

本論文ではBERTの軽量化とともに性能の向上まで実現したALBERTについて紹介しました。Cross-Layer Parameter SharingとFactorized Embeddingという二つのテクニックによって、パラメーターの数が現実的な大きさまで削減されました。パラメーターの削減によってモデルの学習が容易になり、さらに大きな構造であっても性能が落ちないことも示されました。また、これまで問題視されてきたNext Sentence PredictionをSentence Order Predictionに置き換えることで、性能の向上を報告しています。

パラメーター削減のインパクトに対してそこまで学習速度が上がっていない点が気になりますが、「BERTを学習したいのに、そもそもメモリに乗らない!」という問題を解決したというだけでも大きな貢献と言えます。また、NSPの問題を丁寧に考察した上でSOPを導入した点も重要です。

本論文はBERTに関する背景知識を多大に要求するものですが、丁寧な実験や考察は読み応えがあり、なにより数式がほぼでてこないため多くの方にお勧めできる論文と言えます。BERTの最新研究として、ぜひ目を通してみてはいかがでしょうか。

 

ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
(Submitted on 26 Sep 2019)
Written by Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut
ICLR under-review
Subjects: Computation and Language (cs.CL); Artificial Intelligence (cs.AI)

 

この記事をシェアする