ALBERT:軽量化と冗長性排除をしたBERT(1/2)

ALBERT:軽量化と冗長性排除をしたBERT(1/2)

1.ALBERT:軽量化と冗長性排除をしたBERT(1/2)まとめ

・AIのNLPのパフォーマンスを向上させている主要な要因は複雑で特定は困難
・ALBERTを設計していく中で得られた鍵は、モデルの容量をより効率的に割り当てる事であった
・パラメーターの因数分解と冗長性の排除でALBERTはわずかな性能劣化でほぼBERT同等の性能を達成

2.ALBERTとは?

以下、ai.googleblog.comより「ALBERT: A Lite for Self-Supervised Learning of Language Representations」の意訳です。元記事の投稿は2019年12月20日、Radu SoricutさんとZhenzhong Lanさんによる投稿です。

1年前にBERTが登場して以来、自然言語処理(:Natural Language Processing)研究の分野では新しいパラダイムが採用されるようになってきています。

既存の人間用に書かれた大量のテキストを活用して、自己教師学習を使用してモデルのパラメーターをあらかじめトレーニングするのです。この事前学習処理に使う大量のテキストにはラベル付けする必要がありません。

そのため、自然言語処理(NLP)のために機械学習モデルをゼロからトレーニングする必要はなく、言語知識をあらかじめ備えたモデルを使って学習を開始する事ができるのです。

しかし、NLPへのこの新しいアプローチを改善するためには、AIが言語を理解するパフォーマンスに何が貢献しているのかを正確に理解する必要があります。
・ネットワークの高さ(レイヤーの数)なのか?
・ネットワークの幅(隠れレイヤーの特徴表現のサイズ)なのか?
・自己教師学習による学習基準(learning criteria)か?
・または完全に他の何か?

ICLR 2020で承認された「ALBERT: A Lite BERT for Self-supervised Learning of Language Representations」では、公開コンペが行われているスタンフォード大学の質問応答データセット(SQuAD v2.0)やSATスタイルの読解力テストであるRACEベンチマークなど、12のNLPタスクで最先端のパフォーマンスを達成したBERTのアップグレードであるALBERTを公開しました。ALBERTは、TensorFlowを使った実装がオープンソースとして公開されており、すぐに使用できるALBERTの事前トレーニング済み言語表現モデルが多数含まれています。

NLPのパフォーマンスに貢献しているものは何なのでしょうか?
NLPのパフォーマンスを向上させている主要な要因は複雑で特定は困難です。

一部のセッティングが他のセッティングよりも重要である事はわかっています。しかし、調査で明らかになったように、これらのセッティングを一度に1つずつシンプルに調査しても正しい答えは得られません。

ALBERTを設計していく中で得られたパフォーマンスを最適化するための鍵は、モデルの容量をより効率的に割り当てることです。

入力レベルのembeddings(単語、サブトークンなど)は、文脈に依存しない表現、たとえば「bank」という単語の特徴表現を学習する必要があります。

対照的に、隠れレイヤーのembeddings は、それを文脈依存の特徴表現、例えば、金融取引の文脈での「bank(銀行)」の表現と、河川管理の文脈での「bank(土手)」を異なる特徴表現に改良する必要があります。

これは、embeddingのパラメーター化を因数分解する事によって実現されます。embedding行列を、「比較的低い次元(128など)の入力レベルのembedding」と「より高い次元(BERTの場合は768以上)の隠れ層のembedding」に分割するのです。これだけで、ALBERTはパフォーマンスをわずかに低下(SQuAD2.0スコアは80.4から80.3に低下、RACEスコアは68.2から67.9に低下)させるだけで、投影ブロック(projection block)のパラメータを80%削減できます。他のすべての条件はBERTと同じです。

ALBERTを設計する際に行った1つの重要な決定は、冗長性を調べるというもう一つの観察に基づいています。Transformerベースのニューラルネットワークアーキテクチャ(BERT、XLNet、RoBERTaなど)は、互いに重なり合う部分を持つ独立したレイヤー上に構築されています。

しかし、私達は、ネットワークが「同じ操作」を「様々なレイヤー」の「異なったパラメータ」を使用して実行する事をしばしば観察しました。

このパラメータの冗長性の可能性は、レイヤー間でパラメーターを共有することにより、ALBERTでは排除されています。

このアプローチは精度をわずかに低下させますが、モデルサイズをよりコンパクトにする事が出来るので、それだけの価値があります。パラメーターの共有により、アテンションフィードフォワードブロック(attention-feedforward block)のパラメーターを90%削減できました。(全体では70%削減になります)。

embeddingのパラメーターの因数分解に加えて、この冗長性の削除を適用すると、SQuAD2.0のパフォーマンスはわずかに-0.3低下して80.0になり、RACEスコアは-3.9低下して64.0になります。

3.ALBERT:軽量化と冗長性排除をしたBERT(1/2)関連リンク

1)ai.googleblog.com
ALBERT: A Lite BERT for Self-Supervised Learning of Language Representations

2)arxiv.org
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations

3)github.com
google-research/ALBERT