Python

自然言語解析に革命をもたらしたBERTについて解説

1. はじめに

今回は、Googleが2018年10月に発表した、自然言語処理モデル「BERT(Bidirectional Encoder Representations from Transformers)」を見ていきたいと思います。自然言語処理(Natural Language Processing)とは、人間の言語を機械で処理することで、NLPと略されることが多いです。

具体的には、言葉や文章などで使う話し言葉や、論文や新聞のような書き言葉など、私たちが普段使う自然言語を対象として、自然言語が持つ意味を解析する技術を言い、今やAIの分野で最も注目を集めている分野の一つです。

今回紹介するBERTは、多くのNLPモデルの中でも特に精度が高いモデルと言われており、最近発表されているNLPモデルはBERTをベースに開発されたモデルも多くなっています。

今回は、最近のNLPモデルで大きな影響力を放っているBERTを、詳しく見ていきたいと思います。実装例は多くのサイトで触れられていますので、ここではBERTの考え方のみを紹介していきます。

BERTとは

1) BERTの概要

BERT がGoogleから発表された当時は、他のあらゆるNLPモデルを凌ぐ性能を実現し、注目を集めました。(8つの自然言語処理タスクで、最高の性能を達成)

一部のタスクにおいては、人間の能力を上回っており、その実力は折り紙付きと言えます。

BERTで特に新規性があったのは、「事前学習」と呼ばれる学習の方法です。BERT独特の事前学習が、BERTの汎用性を飛躍的に高めることにつながりました。

2) BERTの特徴

BERTが発表される以前から、様々なNLPモデルが発表されていました。BERTは高い性能で注目を浴びましたが、BERTの構造に従来のNLPモデルと比べて大きな違いがあったことも、多くの注目を集めた要因です。

従来のNLPモデルは、CNNやRNNといったニューラルネットワークを用いていました。一方、BERTはTransformerを用いた事前学習モデルであり、既存の実行モデルに付加することで、その実行モデルの精度を向上させることができます。既存モデルに付加することを、Fine-tuning(転移学習)と言います。

既存の様々な実行モデルに転移学習できるのが、BERTの特徴でもあります。そして、BERTを転移学習で実装した実行モデルは、追加で少ないデータを学習するだけでよいので、一からモデルを構築しなくても、精度の高いモデルを作ることができます。

また、これまでのNLPモデルの課題の一つに、学習用データの不足があります。これは学習用データの収集やラベリングに、多大な時間とコストがかかり、大量にデータを集めるのが難しいためです。

それに対しBERTでは、Wikipediaなどネット上に存在する、ラベルの付いていない大量の教師なしデータで事前学習ができるため、比較的容易に、かつ、大量に入手が可能であり、データ不足を克服することができました。

3) BERTの仕組み

それでは、BERTはどういった点で優れていたのか、その仕組みを少し詳しく見てみましょう。

BERTの事前学習の大きな特徴は、文章データを基に、Transformerが文脈を双方向(Bidirectional)に学習することです。

ここでTransformerとは、機械学習のアーキテクチャの一つで、特に言語処理に優れたアーキテクチャです。BERTでは、Transformerが文章内の特定のトークン(最小単位の文字列)を、前後両方の文脈から予測して学習します。具体的には、「Masked Language Model(MLM)」と「Next Sentence Prediction(NSP)」と呼ばれる手法を用います。

BERT以前にも、OpenAI GPTやELMoといったモデルが事前学習モデルとして発表されています。

OpenAI GPTは前から後への単一方向の学習、つまり特定の単語の前にある単語列を読み込んでその文脈を予測します。

そして、ELMoはBERTと同じく双方向モデルではありますが、前から後の学習結果と後から前の学習結果を最終層で連結するモデルで、すべての層において双方向に学習するBERTと比べると、双方向性が浅いモデルでした。その結果、BERTはOpenAI GPTやELMoを大きく上回る高精度なモデルとなりました。

図1: 事前学習モデルの概要

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

図1に示されたBERTのモデルは、簡単に述べると以下のようになっています。

・入力層と出力層の間に、隠れ層を24層重ねたモデル。(Trm=Transformer)

・ベクトル(E1 … EN)で入力され、ベクトル(T1 … TN)で出力されるモデル。

BERTの事前学習モデルは一般に公開されており、日本語の事前学習モデルであれば、京大の黒橋・村脇研にて公開されているモデルを、無償で使うことができます。

4) BERTの事前学習について

それでは、BERTの事前学習で用いられる、2つの手法を見ていきます。

①Masked Language Model(MLM)

入力した文章から、無作為に抽出した15%のトークンをマスクし、以下のような割合で置換してから、置換前のトークンは何であるかを予測する穴埋め問題がMLMです。

80% を [MASK]トークン に置換。例:my dog is hairy → my dog is [MASK]

10% を ランダムなトークンに置換。例:my dog is hairy → my dog is apple

10% は元のまま変えない。例:my dog is hairy → my dog is hairy

このような置換をするのは、こうすることにより事前学習とファインチューニングで生じる誤差を緩和できるためです。

②Next Sentence Prediction(NSP)

Q&Aなど、文同士の関係を考慮する問題に対しては、MLMは対応できません。そこで、2つの文が関係あるかを予測するのが、NSPです。

学習用データの50%を文章A、Bが関係あるもの、50%を無関係なものとします。そして、文章Bが文章Aの後に続いて、意味が通るかどうかを予測する方法です。

MLMとNSPを繰り返す事前学習により、BERTは高い言語処理能力を獲得できますが、4つのTPUを使って4日もかかる大変なプロセスです。

5) BERTで何ができるのか

高い性能を発揮するBERTですが、どのようなことができるのか、いくつかの例を見てみましょう。

読解:与えられた文書の内容を基に、質問に答えることができます。

含意:表現が異なる2つの文章について、言っていることが同じかどうかを判断できます。

換言:与えられた単語に対し、意味の近い別の単語を与えることができます。

対話:ユーザーの質問に対して適切な回答を提供し、ユーザーとやり取りができます。

要約:与えられた長文を基に、重要な部分を抜き出して要約することができます。

翻訳:ある言語の文章を、他の言語に変換できます。

これらの能力を生かして、Web検索などの検索エンジン、あるニュース記事に関連する記事をレコメンドする情報整理、ユーザーのプロフィールやアクセス実績から嗜好を分析する属性分析、チャットボット、スマートスピーカーなどに利用されています。

また、高度な応用例として、過去の診療記録のデータベースをBERTに学習させて、ある患者が既往歴のない病気を新たに発症するかを予測させる、などの事例もあります。

おわりに

NLPモデルの一つであるBERTは、双方向Transformerによる事前学習によって、高性能を実現し、色々な自然言語処理タスクで利用されています。

現在でもNLPモデルは盛んに研究されており、XLNetやMT-DNNなど、BERTを上回るNLPモデルもいくつか開発されています。しかし、自然言語処理の分野で残したBERTの功績は、非常に大きいものと言えるでしょう。

参考サイト

自然言語処理の王様「BERT」の論文を徹底解説

https://qiita.com/omiita/items/72998858efc19a368e50

BERT解説:自然言語処理のための最先端言語モデル

https://ainow.ai/2019/05/21/167211/

BERTは何がすごいのか?

https://ainow.ai/2019/05/08/166723/

はじめての自然言語処理

https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part3.html

大規模データ時代に求められる自然言語処理

ABOUT ME
北爪 聖也
ダメ営業マンからデータサイエンティストへキャリアチェンジ。 技術とビジネスサイドの橋渡しが出来るため、ダメ営業マンの経験も役に立ちました。 広告代理店ADKにて3年勤務→データ分析受託の会社DATUM STUDIOにて1.2年勤務後、独立。
【事例集プレゼント】業務効率化したい医薬業界の方

株式会社piponでは医薬業界の企業様向けにDXの成功事例を集めた医薬DX事例集をe-bookとしてご提供しております。

ご興味ある方がいらっしゃいましたらこちらのフォームよりご連絡頂けると嬉しいです。