BERT
【 文と文の関係へ 】
BERTは、2019年に Google が発表した「言語表現モデル」です。
ここでは、「言語表現モデル」という言い方をしていることに注意したらいいと思います。それは、直接には、Google 機械翻訳のように自然言語処理の何らかの具体的な処理を担うモデルではありません。それ自体は、言語のコンピュータ上の「表現」の構成にもっぱら関わるモデルなのです。
BERTは、Bidirectional Encoder Representations from Transformers のイニシャルをとったものです。そのアーキテクチャーは、前回見たTransformerの前段部のEncoder だけを独立させたようなものです。内部に、Multi headのSelf-Attention Mechanismを抱えています。そのAttention Mechanismから「表現」を「構成」することが、BERTの「言語表現モデル」としての第一の仕事になります。
Transformerから出力を担当するDecoderを切り取って、もっぱらEncoder内に「言語表現」を溜め込んで、どうするのでしょう?
BERTでは、膨大な計算時間をかけて、Encoder内部に「言語表現モデル」を構成するまでの、この段階をPre-training と言います。
BERTで外部に対して何かの仕事をしようとするときには、Pre-training で構成された「言語表現」をそのまま使って、具体的なタスクを実行する出力層を一枚かぶせます。これを Fine-tuningと言います。
「働くBERT」は、Pre-training + Fine-tuning の形をしています。ただ、タスクが変わるたびに、長い計算が必要なPre-trainingの段階を繰り返し実行する必要はありません。「事前に訓練済み」のPre-trained された「言語表現」は、何度も何度も、タスクが変わっても「使い回す」ことができるからです。
BERTの特徴である Bidirectional 「双方向性」を簡単に説明しておきましょう。
言語の分散表現の基本は、まず、「語」に「ベクトル」を対応させることです。
この計算を実行した、Mikalov-Jeff Deanの「Word2Vec」では、ある語の周辺(前後に関わりなく)にどのような語が出現するかで、語のベクトル表現を求めていきます。
もう一つのアプローチは、ある語の「後ろ」にどのような語が出現するかに注目して、語のベクトル表現を求めることです。これを left-to-right と呼ぶことにしましょう。当然、ある語の「前」に、どのような語が出現するかに注目して、語のベクトル表現を見つけるやり方もあり得ます。これを、right-to-left と呼ぶことにしましょう。
BERTは、このleft-to-right とright-to-leftの双方向で語のベクトル表現を見つけます。そのために、文の中の一つの語をランダムに選んで、マスクをかけてその語を推定させる訓練を繰り返します。双方向から語の推定をしていくのは有効です。
このあたりは技術的な話になるのですが、BERTにはもうひとつ際立った特徴があります。
それは、二つの文の関係を把握しようとしていることです。
具体的には、ある文Aともう一つの文Bが与えられたとき、文Aのうしろには文Bがつながるということを学習させます。
例えば、
Sentence A = The man went to the store.
Sentence B = He bought a gallon of milk.
だとすると、この二つの文は、つながっていると判断できますので、"IsNext"というラベルを出力するように訓練します。
Sentence A = The man went to the store.
Sentence B = Penguins are flightless.
だとすると、この二つの文は関連が薄いので、"NotNext" というラベルを出力するように訓練します。
こうした文と文の関係は、語の意味の表現(Word2Vex)や文の意味の表現(Sentence2Sentence)のような、個別の語、個別の文の意味表現のレベルでは、把握することはできません。ただ、実際の言語理解では、こうした文の繋がりが、重要な役割を果たしています。
BERTのPre-trainingでは、二つのこと
・双方向での語の意味の表現
・二つの文が与えられたとき、それが関連しているかの判断
を徹底して学習します。
BERT論文のタイトルは、"BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding" というのですが、そこでの "Language Understanding" というのは、単なる「翻訳モデル」を超えた「言語理解」を目指すという方向を示唆しています。二つの文の関係を視野に入れたことで、BERTの能力は大きく拡張可能なものになりました。
もっとも、そうした具体的な課題での「言語理解」のタスクは、Fine-tuningの層で実行されることになります。スライドでは、いくつかのFine-tuning層で実行されるタスクの例を挙げておきました。
・GLUE: The General Language Understanding Evaluation
・SQuAD v1.1: The Stanford Question Answering Dataset
・SWAG: Situations With Adversarial Generations
・MNLI: Multi-Genre Natural Language Inference
・QNLI Question Natural Language Inference
コメント
コメントを投稿