BERTのすごさ

今回は「fromZEROでAI体験」でも使っているBERTのすごさについて少し詳しく書いてみたいと思います。BERTについて興味を持っていただければとても嬉しいです。

こんにちは。今回はこのサービスでも使っているBERTのすごさについてお話したいと思います。

BERTは、ちょうど2年前の2018年10月にGoogleから発表され、その能力の高さに驚きを持って迎えられました。瞬く間に、研究だけでなく実際のサービスまで幅広く利用されるようになりました。

なぜ、そんなにインパクトがあったのでしょうか。大きく2つの理由があります。大量のテキストをいくらでも学習できることと、汎用性があることです。順に詳しく説明したいと思います。

大量のテキストをいくらでも学習できる

いくらでもテキストを学習させることができるため、ほぼ知らない言葉がないような状態だったのです。そのため、どんな新しい文章を処理させてもとてもいい性能が出たのです。それまでは、テキストを使った学習をさせるためには、教師データを人が一所懸命作る必要があり、大量の教師データを作るには人手やお金が必要だったのです。(参考:「fromZEROでAI体験では」教師データのことを学習データと呼んでいます)

ではどうやって人手による教師データを不要にしたのでしょうか。 それはテキストからプログラムで教師データを作成する2通りの方法を考えたのです。

1) 穴あき文章問題

その一つ目の方法は、穴あき文章問題です。

例えば、

私の好きな果物はりんごです。

というテキストがあったとしましょう。ここから、

問題:「私の好きな果物は[ ]です。」の [ ]にはどんな言葉が入るでしょうか?

回答:りんご

という問題と回答のセットを作ります。穴あき文章の穴に入る言葉を当てるものですね。これが教師データと呼ばれるものです。このような教師データは、テキストの単語のところを [ ] にしていくことによって、テキストが大量にあればいくらでも作成可能です。そして、それが大量にあれば、「私の好きな果物は」と文章が来ると、その次には食べ物、それも果物の名前が入ってくる可能性が高いということを学べます。また、その果物の仲間として、「りんご」や「みかん」、「桃」などがあるということも学べます。

2) 文がつながるかどうか問題

そして二つ目の方法は、文がつながるかどうか問題です。

大量のテキストを一文ごとに区切ります。その中の一文とその次の文を取り出して、その文と次の文はもともとつながっていたので、

「問題:「りんごを使ったデザートで好きなものは何ですか?」「アップルパイです。」の2つの文はつながっていますか?

回答:はい

という問題と回答のセットを作ることができます。逆に、テキスト中で離れた箇所にある文を2つ取り出すことによって、

「問題:「りんごを使ったもので好きなものは何ですか?」「明日は晴れでしょう。」の2つの文はつながっていますか?

回答:いいえ

という問題と回答のセットを作ることができます。これを大量のテキストの中でたくさんの組み合わせを作れば、いくらでも教師データを作成することができます。

これにより、例えば、「りんごを使ったデザートには何があるか?」という問いに「アップルパイ」と答えることができるということを学べます。また、同様に会話の受け答えとして、「ありがとう。」と言われたら、「どういたしまして。」と答えることも学べるでしょう。

汎用性がある

BERTがすごいもう一つの理由が、この「汎用性がある」ということです。

上に書きましたように大量の教師データを使って学習したBERTは、言葉の並びと、文と文の並びの特徴を学んでいます。これを事前学習と言います。この状態である特定の問題を解くための追加の教師データを作成し、それを追加で学習させます。この追加で学習させることをファインチューニングと言います。

このファインチューニングで学習させる問題は1つだけではなく、いくらでも設定することができるため、汎用性があるということになります。例えば、このサービスの体験でも実施している「人名を見つける」問題とか「映画名を見つける」問題など、追加の教師データを変えることでいろんな問題に対応できます。そして、この追加の教師データの量は少なくても大丈夫というのがミソです。事前学習で大量のテキストを学習しているので、ファインチューニングでは最後の手直しだけすれば良いというイメージです。

2018年にBERTが発表された時に、それまで世界中の研究者が競い合っていた11種類の課題に対して、いきなり1位を独占したのです。それも一つの仕組みで様々な種類の課題に対して対応できたので、皆が驚いたのは当然のことでした。それまで、それぞれの課題に対して、皆が必死で専用の仕組みを考えていたのですから。

そして、事前学習した結果のデータは、さまざまな人・機関が無償で公開してくれています。それはこの汎用性があるということのおかげです。事前学習した結果のデータを公開すれば、いろんな人の課題解決に役立つことができるということから、データを公開してみんなでシェアする時代になったのです。私たちはそのシェアされたデータを使って、少量の教師データを作ることでファインチューニングして自分の課題を解決することができるということです。

これからできること

ここまでで、BERTのすごさを説明してきましたが、このすごさを使って、これからいろんなことができます。

一つは、BERTの汎用性を使って、皆さんの身近な課題を解くということです。BERTは、言葉の並びと文の並びを学習していますので、例えば、言葉の並びを使って、先ほどの「人名を見つける」と同じように、「地名を見つける」「製品名を見つける」などの課題に対応することもできるでしょう。また、文の並びを使って、「問い合わせに回答する」「ボケに対してツッコミをする」などの課題に対応することもできるかもしれません。

ぜひ、皆さんもチャレンジしてみてはいかがでしょうか。

また、BERT自身の改良も世界中でどんどん進んでいます。BERTの事前学習でやっていた言葉の並びと文の並びを学習する方法を改良して、異なった事前学習をすることができれば、汎用性もさらに広がるでしょう。こちらに興味がある方は今からでもチャレンジすると面白いと思いますよ。