BERTは何がすごいのか?

最終更新日:

こんにちは、AINOW編集部のぱるです。

現在、「BERT」というモデルが自然言語処理の分野で幅広く使用されています。さまざまな処理タスクにおいて、「BERTを組み込むことで従来よりも高精度になりました!」という論文をよく目にするようになりました。

主にルールベースでの研究を行う私は、「BERTって何?なんでそんなに騒がれているの?私もBERT使っているよって言ってみたい!」と思ったので、BERTについてまとめてみることにしました。

みなさんの中で、BERTについて簡単に知りたいな、使ってみたいなと思っている方にぜひ参考にしていただきたいと思います!

その前に、もしみなさんの中で「そもそも自然言語処理とは?」という方は、先にこちらの記事をご覧ください!

BERTとは

BERTとは、Bidirectional Encoder Representations from Transformersを略したもので、「双方向Transformerによる汎用的な言語表現モデル」として、2018年10月11日にGoogleによって公開されました。

これは、「双方向Transformer」によって言語モデルを事前学習することで汎用性を獲得し、さらに転移学習させることで8個のベンチマークタスクで最先端の結果を達成しました。

つまり、一つの言語モデルを一度事前学習させるだけでさまざまなタスクに利用できるということです!

では、そのTransformerとは何なのか?ということが気になりますね。これは、「文章などのシーケンス(単語データの並び)から別の文章などのシーケンスを予測するニューラルネットアーキテクチャ」のことです。これが、従来から主に用いられてきたRNNやCNNによるアーキテクチャと比較して、機械翻訳といった言語理解タスクで高い精度を達しているのです。

BERTについて重要なことは、「双方向」によるTransformerであることです。従来モデルでは、「単方向」もしくは「浅い双方向」によるTransformerであったため、注目する各単語のその左(あるいは右)に存在する単語によってのみの文脈しか学習できませんでした。

一方で、BERTを用いると、注目する単語の前後両方の文脈について学習することができるのです。これが、Bidirectionalの意味するところになります。

また、もう一つの重要なこととして、多くの種類の自然言語処理タスクでとても容易に採用できるということがあります。論文の中では、言語理解の様々なタスクを備えた、以下4つのベンチマークセットを用いて精度が検証され、ほとんどタスク特有の変更を行わずに最先端の結果が得られました。

  • SQuAD
  • NER
  • SWAG
  • GLUE

さらに8つのベンチマークタスクによる結果を見比べても、全て最先端の精度を達成しています。(引用元:https://twitter.com/_Ryobot/status/1050925881894400000

このような利点から、現在、自然言語処理タスクの中でBERTを用いた精度検証が広く行われています。そして、これら多くの結果において最先端の精度が見られることから、自然言語処理の分野において広く流行しているのです。

事前学習(Pre-Training)

事前学習とは、さまざまなタスクの応用を前提とした表現学習のことです。自然言語処理に応用する場合は、自然言語の特徴量を自動的に抽出し、学習させます。これによって、あるタスクを解くために必要な特徴が入力に出現していない場合でも、単語や文書同士の一般的な依存関係が事前に与えられていれば、それを補うことができます。つまり、事前学習はとても重要なタスクなのです。

こんなに素晴らしい技術なのであれば、中身はさぞ複雑なものであろうと考えられますが、、

実は、とてもシンプルな方法によって事前学習が行われています。

それが、「Masked Language Model」と「Next Sentence Prediction」と呼ばれる学習方法です。これら2つのタスクを同時に実行させて学習が行われます。

Masked Language Model

先に説明した通り、BERTは「双方向」という特徴があります。単純に考えても、単方向学習よりも双方学習の方がより優れた精度が期待できそうです。

ところが、双方向モデルは一般的な条件付き言語モデルでは学習できません

一般的な条件付き言語モデルでは、

p(xn | x1, x2, …, xn-1)

のように、n-1番目までの情報から次のn番目の単語を予測するタスクです。これは、カンニングとなってしまわないように、現在の予測プロセスの中で次に予測するべき未来の単語情報を用いてはいけないという制約があります。よって、モデル自身は前後両方の文脈を考慮できず、前の文脈情報のみで次の推測をしなければならないのです。

そこで、モデル側ではなく、入力データ側を穴埋め問題にして制約をかける手法が取り入れられています。

これは、入力シーケンスの15%を確率的に[MASK]トークンで置き換えし、置き換える前のものを予測させるタスクです。そうして置き換えられた[MASK]トークンのうち、80%がマスク変換、10%がランダムな別のトークンに変換、10%をそのままのトークンにします。

  • 15%中80%:マスクトークンに置き換え

  my dog is hairy → my dog is [MASK]

  • 15%中10%:ランダムに別のトークンに置き換え

  my dog is hairy → my dog is apple

  • 15%中10%:置き換えなし

  my dog is hairy → my dog is hairy

こうすることで、前後の文脈を考慮したモデルで学習させることができるのです。

Next Sentence Prediction

続いて、ここでは2つの文章を与えて、それらが隣り合っているかいないかを2値判定します。

QAや自然言語推論では、2つの文章の関係性を理解させる必要があります。しかし、文章同士の関係性は単語の共起性から単語の発生確率をモデリングしている言語モデルのみでは捉えられない特徴量を含んでいます。そこで、隣り合った2つの文の予測問題から、文章単位での意味表現を獲得しているのです。

よって、単語をベクトル化して表現したモデルであるword2vecに対し、BERTは文章も考慮した、より広範的な言語表現モデルとして機能できるという利点があります。

処理の流れとしては、入力データとしてAとBの2つの文章を与え、BがAの後にくる実際の文章として正しいか(IsNext)、正しくないか(NotNext)を判定します。

これら二つの文章A, Bが与えられたとき、50%の確率で別の文章Bに置き換えられます。

  A:  [CLS] the man went to [MASK] store [SEP]

  B:  he bought a gallon [MASK] milk [SEP]

  Label:  IsNext

  A:  [CLS] the man went to [MASK] store [SEP]

  B:  he bought a gallon [MASK] milk [SEP]

  Label:  NotNext

これが、文章単位で意味表現を獲得できる仕組みです
ただし、このような事前学習タスクの欠点としては、学習コストが高価であることが挙げられています。

転移学習(Fine-Tuning)

転移学習とは、すでに学習済みのモデルを転用して、新たなモデルを生成する方法のことです。よって、他のデータから学習されたモデルを使うことができるため、少ないデータ・モデルで新たなモデルが生成可能であり、安価に学習できます

この学習から様々に特化した自然言語タスクに高精度判断の適用が期待できます。

活用事例

国内で初めてBERTを製品化した事例として、サイシードによるFAQデータ作成サービス「sAI FQA Builder」があります。

これは、企業内の様々なデータからAIが読み取れる形式のFAQデータを自動で作成するサービスです。

このサービスには、最もふさわしい回答を自動で提示するチャットボット「sAI Chat」と、自然文を理解する検索エンジン「sAI Search」が実装されています。各質問文に対して行われる、類似表現の拡張とキーワードを抽出する作業にBERTを活用させることで自動化が実現しました。これによって、AIの学習に必要なトレーニングデータを約80%削減、学習期間を約95%短縮させることができました

従来モデルとの比較

BERT以外にも、事前学習の手法が異なる二つの従来のモデルとして以下のようなものがあります。

  • ELMo(Feature basedアプローチ)
  複数の文に対して、文同士の関係性を事前学習するアプローチを用いています。
  順方向と逆方向のLSTMを同時に学習できないことから、浅い双方向モデルです。
  • OpenAI GPT(Fine tuningアプローチ)
  トークン同士の関係性を事前学習するアプローチを用いています。
  left-to-right のTransformerを用いて、未来の単語の位置のみ予測できます。

OpenAI GPTがleft-to-right のみの取得だったのに対し、 right-to-leftの情報、つまり後の情報も取得できるように拡張したものがBERTです。
次の単語を予測するのではなく、ランダムにマスクされた単語について、周辺情報から予測するという事前学習を行なっています。これが従来のモデルとの大きな違いなのです。

おわりに

今回は、汎用言語表現モデル「BERT」について簡単に説明しました。

自然言語処理×深層学習といえばBERT”というように、現在様々なタスクにBERTが活用されています。実際に、3月に行われた言語処理学会でも幅広い研究で使用され、従来スコアと比較して上回る精度を達成していました。

現在は、このBERTが中心となって活用されていますが、最近ではBIGBIRD(後にMT-DNNと呼ばれる)が出てきたりとより一層精度の良い新しい技術が発表されてきています。しかし、すべての自然言語推論を行うためには自然言語がもつ特性を考慮した学習を行う必要があるため、未だ難しいとされています。

言語の特性をニューラルの中で学習させることができれば、今よりも高精度なタスクを行えるようになるのではないかと感じました。

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する