Google BERT: 双方向性による次世代自然言語処理の開幕

近年、注目を浴びているChatGPTをはじめとした生成AIに欠かせない技術が自然言語処理(NLP)技術というものです。簡単に言うと、人間の言葉を機械が理解するための技術で、この技術は2017年にGoogleの研究チームが開発した「Transformer」というAIアーキテクチャにより大きく進化しました。そんなTransformerを用いた初期の自然言語処理モデルがGoogleの「BERT」なのです。そこで、この記事ではGoogleが2018年に発表したBERTを紹介していきます。

 

【GoogleのBERTとは】

BERT(Bidirectional Encorder Representations from Transformers)はGoogleが開発した自然言語処理モデルのひとつで、2018年10月11日に技術レポートが公開されました。ほぼ同時期に発表されたOpenAIのGPT-1と比較すると、ともにTransformerアーキテクチャを使用しています。BERTは文章の理解に特化している一方で、GPTは文章の生成に長けているという違いもあります。

 

【開発の目的・背景】

BERTの開発までに、Googleが提供してきた製品やサービスにはどのようなものがあるでしょうか。はじめに思い浮かぶのは、言わずと知れたGoogleの検索エンジンではないでしょうか。Googleの検索エンジンの原型となる「BackRub」は1996年に開発され、1997年にはGoogle.comとしてドメイン登録されます。その後、2000年には日本語にも対応しました。その他にも、GmailやGoogle Mapなどのサービスも展開しています。2007年にAppleが発表してから、現在では当たり前になったスマートフォンですが、Googleは翌年にスマートフォンを発売しています。さらに2016年には音声で操作できるスマートスピーカー「Google Home」なども開発されていきました。こうしたサービスに欠かせないのが「検索機能」なのです。つまり、BERTの開発目的は「検索機能の向上」にあると考えられます。検索において生じる問題の一つは、人間の言葉をコンピュータが正確に理解できるかどうか、というところです。人間の言葉、すなわち自然言語をコンピュータが理解するには、自然言語処理という技術が欠かせません。ましてや音声検索になると、より口語的な表現になりますから、コンピュータも理解に苦しむわけです。

こうした背景からGoogleは自然言語処理技術の一環として、BERTの開発を進めていくことになります。

 

【学習方法】

BERTの開発は主に、「事前学習」「ファインチューニング」の2つのステップに渡って行われました。ここでは、それぞれの段階でどのようなことをしたのか、ということを簡単に紹介していきます。

 

◎事前学習

BERTの事前学習では、従来の一方向の言語モデルは使いません。その代わりに、2つの教師なし学習を行います。

〈事前学習その1〉Masked Language Model

これは、与えられた単語列のうちの何割かの単語を[MASK]に置き換えてしまい、隠された部分を当てるというタスクをこなす学習方法です。これにより、双方向的な学習ができる反面、「ファインチューニング」の段階では[MASK]というトークンが現れることがないため、相性が悪くなってしまいます。そこで、次のような学習に改良します。

単語列のうち15%を置き換える候補とします。さらにそのうちの

(1)80%は[MASK]に、(2)10%はランダムに選んだトークンに、(3)10%は元の単語に、置き換えるようにします。

 

〈事前学習その2〉Next Sentence Prediction

続いての事前学習は、Next Sentence Predictionと呼ばれ、「次の文章の予測」という意味です。具体的には、二つの文章をインプットして、それらが連続した文章であるか、そうでないかを判断させるという学習方法です。これは質問応答や自然言語推論のタスクなどにおいて重要な「2つの文章の関係性を理解する」という能力を鍛えるための学習です。

 

◎ファインチューニング

事前学習を終えたら、様々なタスクを処理できるようにファインチューニングという微調整をしていく必要があります。ファインチューニングではモデルのパラメータを適切に調整しています。BERTのファインチューニングは、各タスクについて、タスク固有の入力と出力をBERTに代入し、すべてのパラメータを最初から最後まで調整します。

ファインチューニングは事前学習に比べて計算時間などといったコストが低かったことも報告されています。

 

◎事前学習に用いたデータ

BERTの事前学習に使用したデータは主に次にあげる2種類でした。

  • BooksCorpus (8億語)
  • English Wikipedia (25億語)

The Book Corpusについての詳しい言及はないですが、BERTの学習データは主に英語の文献であると考えていいでしょう。

 

【性能の評価】

以上のような事前学習とファインチューニングを行って、11個の自然言語処理に関するタスクをこなし、その性能を評価しました。

また、論文ではBERTのモデルをTransformerブロックの数(=L)、隠れ層のサイズ(=H)、Self-Attentionヘッドの数(=A)に応じて、2つ用意しています。

  • BERT(BASE):L=12, H=768, A=12, 全体で1.1億パラメータ
  • BERT(LARGE):L=24, H=1024, A=16, 全体で3.4億パラメータ

 

1.GLUE (The General Language Understanding Evaluation)

GLUEは8つの自然言語処理タスクを実行し、その平均点を最終スコアとするベンチマークです。8つのタスクは次のようなものです。

  • MNLI-(m/mm):前提文と仮説文の含意関係
  • QQP:2つの質問が同じ意味かどうか
  • QNLI:質問と文章が正しい回答を含むかどうか
  • SST-2:映画レビューの感情分析
  • CoLA:文章が英文法として正しいかどうか
  • STS-B:ニュースの見出し文の類似度を5段階で判定
  • MRPC:2つの文章が同じ意味かどうか
  • RTE:2つの文章の含意関係

この結果を論文の表から引用して掲載します。

 

[出典:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding;https://arxiv.org/pdf/1810.04805.pdf

この表から読み取れることは、BERT(BASE)すら、それ以前の言語モデルよりも良いスコアを出していて、パラメータを増やしたモデルのBERT(LARGE)は、さらに良いスコアを出したということです。

 

2.SQuAD v1.1(The Stanford Question Answering Dataset)

SQuAD v1.1は、読解力と質問応答の能力を確かめるためのデータセットです。データはWikipediaの記事をもとに作られています。

 

3.SQuAD v2.0

SQuAD v1.1は質問に対して答えが存在したのに対して、SQuAD v2.0は答えがない質問も含んでいます。そのため、SQuAD v1.1よりも難易度の高い質問であると言えます。

 

4.SWAG(The Situations With Adversarial Generations)

根拠に基づく常識的な推論ができるかどうかを測る、自然言語処理タスクにおいて用いられるデータセットです。具体的には11万3000個の様々な選択問題からなるデータであり、4択問題として作られています。

 

【BERTの特徴】

BERTはこれまでに発表されていたGPTのように一方向的な単語の予測ではなく、双方向から文章を理解します。そのため、BERTは脈を理解することができる言語モデルと言われています。そのため、検索エンジンやチャットボット、FAQの作成などに活用されています。

また、個別のタスクのためにモデルの構造を大きく変更する必要がなく、出力層を追加するだけで特定のタスクに合わせたモデルに変えることができます。こうした点で、BERTは汎用性の高い言語モデルだと言えます。

 

【まとめ】

この記事ではBERTを紹介しました。要点をまとめると次のようになります。

  • Googleが2018年に発表したBERT(Bidirectional Encoder Representations from Transformers)は、自然言語処理技術の一環として開発された言語モデルである。これは、検索エンジンやチャットボット、FAQ作成などのさまざまなタスクに活用されている。
  • BERTの学習方法は、事前学習とファインチューニングの2つのステップで行われ、事前学習では、Masked Language ModelとNext Sentence Predictionという2つの教師なし学習を行い、その後、ファインチューニングによって様々なタスクに適応させている。
  • BERTの性能評価では、GLUE(The General Language Understanding Evaluation)やSQuADなどの自然言語処理タスクにおいて、高い精度を示した。
  • BERTは双方向から文脈を理解し、様々な自然言語処理タスクに高い精度で対応できる汎用性の高い言語モデルである。

【参考文献】

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding