『日経Robotics デジタル版(電子版)』のサービス開始を記念して、特別に誰でも閲覧できるようにしています。
この数年の自然言語処理で最も大きなブレークスルーはBERTと呼ばれる事前学習手法であろう。
これまで画像認識の分野ではImageNetの画像分類タスクで学習して得られたモデルを他のタスクの初期パラメータとして使う事前学習がよく使われてきた。事前学習によって、様々な画像認識を解くのに必要な特徴抽出器が既に得られており、新しいタスクを学習する場合にはそのタスクに固有の部分だけ学習すれば済むため、学習データが少ない場合には特に有効なアプローチである。

自然言語処理でも事前学習が有効なのではないかと以前から考えられていた。例えばWord2VecやGloveなどの単語表現の事前学習では、次の単語を予測するタスクを解くことで、各単語の連続なベクトル表現を得ることを可能とした。これらの連続表現は単語の意味を表し、そのベクトル上で様々な演算が可能であり、その表現を使うことでその後のタスクの性能を向上できる場合もあった。
この後、質問応答や 文意理解などで求められるような文や段落レベルでの表現を事前学習するparagraph vectorやskip thoughtなども登場していたが、その利用は限定的であった。2018年に登場したELMoは双方向で2つの言語モデル(次の単語予測モデル)を学習し、その表現を事前学習として使うことで様々なタスクを解けることを示した。
SoTAを大きく更新したBERT
そのような中、事前学習の決定版として2018年10月に米グーグルAIからBERT (Bidirectional Encoder Representation from Transformers)が提案された1)。BERTは多くの言語理解タスクのSoTA(最高精度)を大きく更新した。さらにその後、BERTを改善した手法が次々登場し性能改善されている。例えばSuperGLUE2)とよばれる、複数の言語理解タスクから成るベンチマークでは、BERTをベースにしたモデルは人の性能に近づくか並ぶまでになっている3)(人のスコアが89.8なのに対し、BERTを元にしたRoBERTaが84.6、単語の連続表現を利用したCBoWベースの手法は44.5)。BERTが今年のNAACLのベストペーパーを受賞しただけでなく、発表からわずか1年弱で引用数が1000を超え、その利用が自然言語処理以外にも広がっていることもそのインパクトの大きさを示している。
BERTのアイディア自体は単純である。まず、複数の連続する文を境界記号を挟んだ上でつなげた系列を入力とする(オリジナルのBERTでは他の文のサンプリング方法も提案されていたが、文献3)では連続する文で十分であることが示されている)。次にランダムに一部(例えば15%)の単語をマスクし(適当なマスク記号で置き換え)、マスクされた単語を周囲の文脈から予測するタスクを解く。このタスクを解けるように学習されたモデルを事前学習済みモデルとし、様々なタスクの学習時の初期モデルとして利用する。各タスク上ではfine-tuningを行う。なお、事前学習時には入力の一部がマスクされているのに対し、その後に使う時のタスクでは入力はマスクされていないので入力分布の不一致が発生してしまう。そこで事前学習時の予測タスクでは予測対象の単語は全てマスク記号に置き換えず、一部はそのまま単語を残し、一部は別の単語にランダムに置き換えることで、この不一致を抑えるようにしている。
なぜBERTはうまくいったのか
このBERTが成功した点は次の二点である。
1つ目はBERTは予測の際に前後の文脈を使うという点である(図1)。似たようなタスクとしてELMoでも使われた言語モデルがある。それまでの文から次の単語を予測するようなタスクであり、言語モデルを事前学習として使う例は多く存在している。言語モデルでは、予測は前の文脈から次の単語を予測するという一方向であり、前から順番に単語を生成する生成モデルを学習しているとみなすことができる。それに対しBERTでは、予測する際には前後の文脈をみることができ、生成モデルを諦めたモデルを使っている。この双方向による予測は言語理解では重要であり、例えば単語を予測する場合にその前方の文脈をみて、次に後方の文脈をみて、最後にそれらを総合して予測するといったより複雑なプロセスを使うことができる。このような文の前後を状況に応じて使うことは言語理解において重要である。また、前後の文脈として同一文内にある単語だけでなく、隣接する周囲の文も使って予測する点が重要である。入力は連続する文をつなげて構成しており、予測に必要であれば周囲の文の情報を使えるようになっている。これにより文を超えた言語理解が可能となる。
2つ目はTransformer(自己注意機構、self-attention)を使っている点である。Transformerについては2018年10月号の本連載でも紹介した。Transformerは注意機構を使い、データの流れ方をそれまでの処理結果に応じて動的に変えられる仕組みを持っている。これにより、現在までの処理に応じて例えば前方の文脈から情報を集めたり、または後方の位置での処理に情報を渡したりすることができる。さらにTransformerは離れた位置にある情報も1ステップで集約することができる。それに対し、CNNやRNNの場合は離れた位置にある情報を集約するにはその距離に比例または近いステップ数が必要となる。言語理解では、離れた位置にある情報が必要になることも多く(例えば、ある単語を前にも言及している場合でその単語の周辺情報を集めたい場合)、そうした場合でもTransformerは必要に応じて1ステップで集めることができる。またTransformerは疎な注意機構を使っているとみなせるのでMixture of Expertモデル4)と同様にモデルの表現力を上げやすく、表現力が必要な言語処理においては有効である。
一部分をマスクする、前後の文脈を使うというアイディア自体は単純であり思いつくため、おそらく多くの人がこれまで考えて試してみて、良い結果が出ていなかったのではないかと思われる。BERTが成功したのはTransformerの登場が大きいが、もう1つは、大量の学習データで大きなモデルを使い莫大な計算コストをかけて学習させる実験が容易に可能になったためだと考えられる。
BERTを改良する研究は既に多く発表されている。その中でも米University of WashingtonのPaul G. Allen School of Computer Science & Engineering、米Facebook AIから成るチームはBERTを改良したRoBERTaを提案3)しており、現在最も性能が良い。RoBERTaはBERTに加え、1)各iteration毎に異なるランダムなマスクを使う、2)学習時のバッチサイズを大きくする、3)訓練データの走査回数を10倍近く増やすことで性能を大きく改善している。基本的に現在のBERTはUnderfit(未学習)しており、より大きなモデルを使い、より長い学習時間をかければ性能はまだ上がると報告している。
RoBERTaは言語理解タスク上では人に匹敵する成績を上げており、言語理解に向けて大きく前進したといえる。一方でこの結果をもって現時点で言語に関連するタスクが何でも解けるようになったとは考えないほうがよいだろう。この言語理解タスクかカバーしているのはほんの一部である。実用化においては例えば、現実世界と言語間のマッピングをとる記号接地問題、心理モデル、会話などの教示が難しいタスクをどのように教えるかなど多くの重要な問題が残されている。今後、自然言語処理研究が加速していくのは間違いないが、何が解けているかについては慎重に評価が必要だ。
計算負荷は非常に重い
BERTを使った事前学習、およびそれを使った推論には大きな計算リソースが必要とされる。そのため、グーグル、Facebook社、米Microsoft社など大きな計算リソースを利用できる組織でしか新しいモデルを作れないともされ、実際にベンチマークの上位はこれらの企業から成る。例えばクラウドでの学習の1回の実験に、最初のBERTは約73万円、関連した手法であるXLNetは648万円必要であると報告されている4)。オリジナルのBERTの学習では16個のCloud TPU v3 Podを使い3日の学習時間が必要であったが、2)で提案されているステップ回数を使う場合、学習に48日必要な計算となる。こうしたことから並列化による学習の高速化も必要とされ、TPUv3 16枚で3日必要だった学習時間を、TPUv3を1024枚使い、データ並列を進めることで76分まで少なくできたことが報告されている5)。
一方で大きなモデル、データを使い、走査回数を増やすことで性能はまだ上がることが予想されている。2017年にグーグルのGeoffrey Hinton氏らは自然言語処理において、パラメータ数が1兆から成るモデルを1兆個の単語から成るデータ上で学習させることが目標と述べているが6)、現時点ではモデルサイズ、データ数それぞれでまだ100倍程度の差が存在している。
また、学習時だけでなく推論時にも大きな計算量が必要となる。既に米NVIDIA社はBERTで作ったモデルを効率的に推論可能なライブラリを提供しはじめている7)。
言語理解の技術が急速に向上
言語や画像タスクはデータが無数に手に入るような問題設定であり、教師なし学習、自己教師あり学習による学習が最終的に有効になるだろうと考えられてきた。BERTは自然言語処理においてそのようなことが実際に可能であることを示した。言語理解タスクはこれまでとは違うペースで急速に解かれ始めている。画像認識(相互情報量最大化による自己教師あり学習)や機械翻訳(Back Translation)などにおいても同様の現象がみられつつある。
人が教師なし学習、自己教師あり学習を今のAIよりもずっとうまくできている理由として、AIにとって学習可能な決定的な方法がみつかっていないだけではなく、モデルの大きさやモデルの更新回数に人とAIでは圧倒的な差があるからという可能性がある。乳児は周辺環境をぼんやりと見ていたり、人が話をしているのをずっと聞いていて、数年たったら突然周りのものを認識できるようになったり、話せたりするようになる。その間に予測や補完などの自己教師あり学習を今のAIよりもずっと大きなモデルで大量に実行しているのかもしれない。今後は少なくともBERTなどの手法が今よりもずっと大きなモデル、データを使うことでより難しい問題を解けるかが確かめられていくだろう。
1)J. Devlin et al., “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,”
2)https://super.gluebenchmark.com/
3)Y. Liu et al., “RoBERTa: A Robustly Optimized BERT Pretraining Approach,”
4)https://syncedreview.com/2019/06/27/the-staggering-cost-of-training-sota-ai-models/
5)Y. You, et al.,“Large Batch Optimization for Deep Learning: Training BERT in 76 minutes,”
6)N. Shazeer et al., “Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer,”
7)https://devblogs.nvidia.com/nlu-with-tensorrt-bert
Preferred Networks 取締役副社長
