前回は、人工知能(AI)の一つで、文章を読んで内容を理解する“言語理解AI”の概要や、2017年に登場した新しいディープラーニング手法「トランスフォーマー」に基づく「BERT」と「GPT」シリーズ(GPT-1、GPT-2、GPT-3)、その事例などを紹介しました。
今回は、BERTやGPTシリーズの仕組みや適用方法などを紹介します。
BERTの華々しいデビュー
2018年にGoogleが発表したトランスフォーマーに基づく言語理解AI、BERTは、言語理解に関する各種のベンチマーク(試験問題のようなもの)で最高点を達成しました。
特に、質問に対する回答を「Wikipedia」の記載から見つけ出す「SQuAD」と呼ばれるベンチ―マークでは、初めて人間を越えるスコアを達成したことで話題を呼びました。中国科学院のChangchang Zeng氏らによる質問回答技術に関する調査論文(PDF)によれば、人間のスコアが91.221であったのに対してBERTが93.2のスコアで人間を追い越したことが分かります(それまでのトップは88.3でした)。

※クリックすると拡大画像が見られます
SQuADの中身を見てみましょう。以下のような質問と回答を含むWikipediaの記述をBERTに与えると、BERTはWikipediaの記述から答えとなるべきフレーズ(within a cloud)を抜き出してくれます。
質問「Where do water droplets collide with ice crystals to form precipitation?」(水滴が氷の結晶と衝突して降水を形成する場所は?)
Wikipedia「-Precipitation forms as smaller droplets coalesce via collision with other rain drops or ice crystals within a cloud」(降水は、雲の中で小さな水滴が他の雨滴や氷の結晶と衝突し、形成されます)
答え「within a cloud」(雲の中)
このようなことができると一体どんなことに役立つのでしょうか? 例えばチャットボットサービスにBERTを組み込めば、質問と答えを含む文書(例えば製品やサービスのマニュアルなど)さえあれば、質問への回答を文書から自動的に探し出してユーザーに回答してくれるようになります。従来のチャットボットでは質問と答えのセット(FAQ)を用意しなくてはいけませんでしたが、これが不要となるのです。
BERTの活用手順
BERTの学習済みモデルはGoogleが無償で公開しています。日本語のモデルに関しては、有償や無償のものが大学や企業から公開されています。それでは、これらのモデルを使えば上記のようなサービスがすぐに作れるのでしょうか? 実はそうではありません。BERTは「汎用事前学習モデル」と呼ばれるもので、いろいろなサービスにつかえる「汎用性」を持ちます。
BERTが行う「事前学習」は世の中に大量に存在するテキストデータ(Wikipedia、SNS、論文、ニュース、小説など)をそのまま学習データとして使う学習方法で、膨大な量のテキストデータからテキストの単語の連なりの「言語らしさ」を学習します。
この汎用事前学習を行ったモデルは、例えば「本日の天気は」というテキストを与えると、下の図2のように、「晴れ」や「曇り」など、次に来そうな単語とその確からしさ(スコア)を推定することができます。

図2:言語モデルのイメージ
※クリックすると拡大画像が見られます
従来の学習方法では、人手で正解付けを行った教師データが必要で、作成にはかなりのコストがかかるため、深層学習に必要な膨大な量の学習データを用意することは困難でした。しかし汎用事前学習では、機械的に収集した大量のテキストデータに対して一部の単語をマスク(削除)することで、文章の穴埋め問題の形をした学習データを自動的に大量に作成することができます。
ただし実際のサービスにこの汎用事前学習モデルを使うためには、適用先のサービスに合わせたモデルの「微調整」が必要となります(これを「ファインチューニング」といいます)。例えばテキストを分類したいのであれば、実際の分類サービスに使う正解データを少量用意する必要があります。通常の深層学習では数万~数十万の正解データが必要でしたが、このファインチューニングは数百件レベルの学習データで実施可能です。

図3:汎用事前学習モデルの学習イメージ
※クリックすると拡大画像が見られます