前の章では、機械が、よくある言い換えを覚え、文を読んで別の文として書き直し、長い流れの中でも大事なことを忘れにくくするところまで進んできた話を見てきました。
でも、それでもまだ、機械の「読む力」には限界がありました。
たとえば人間は、文章を読むとき、ある単語の意味を決めるのに、前の言葉だけでなく、後ろの言葉も見ています。
「はし」という言葉が出てきたときも、
・ごはんを食べるときのはし
・川にかかるはし
・机のはし
では、意味が違いますよね。
しかも、その違いは、前の語だけでなく、後ろに続く言葉も見て初めてはっきりすることがあります。
この「前後の流れごと読む」という読み方を、機械が本格的に身につける大きな転機になったのが、BERTです。
BERT
BERTは、Google社によって開発された自然言語処理モデルです。
名前は Bidirectional Encoder Representations from Transformers の略で、日本語にざっくり言えば、Transformerを使って、前後の文脈を双方向から読む表現という意味になります。
ここで大事なのは、BERTが、Transformerのエンコーダ部分のみを使っていることです。
以前見たように、Transformerには
・入力を読むエンコーダ
・出力を作るデコーダ
という考え方がありました。
BERTは、そのうち、読む役割に特化したエンコーダ側を使っています。
だからBERTは、文を次々に生成するモデルというより、文章を深く読み取ることに強いモデルなのです。
これは、小説を自分で書き進める作家というより、前後の流れを丁寧に読み取る読書家に近い存在だと言えます。
BERTが重要なのは、単語を単独で見るのではなく、前後の文脈の中で読むという考え方を、はっきり前面に出したことです。
ここで大事なのが、双方向という言葉です。
それまでのモデルの中には、左から右へ順番に読んでいくものが多くありました。
もちろんそれでも文は読めます。でも、それだけでは「後ろを見て意味を決める」ことが苦しくなりやすい。
BERTは、文の中の単語を読むときに、
・前にどんな言葉があるか
・後ろにどんな言葉があるか
の両方を見ながら、その意味を考えます。
つまりBERTは、単語を、前からだけでも後ろからだけでもなく、前後の流れごと読むモデルなのです。
BERTは一行ずつただ追うだけの読者ではありません。
ある一文を読んだときに、
・その前に何が起きていたか
・このあと何が書かれているか
・この場面でこの語がどう響くか
を見ながら意味を受け取る読書家に近いです。
たとえば小説で、
彼女は静かに笑った。
という一文があったとする。
この「笑った」が、安心の笑みなのか、皮肉なのか、あきらめなのか、悲しさを隠す笑みなのかは、前後を読まないとわかりませんよね。
BERTは、まさにそういう読み方を機械にさせようとしたモデルです。
単語を辞書の意味だけで決めるのではなく、文の中で、その単語がどんな表情をしているかを読む。そこがBERTの大きな特徴です。
BERTと事前学習
BERTは、いきなり個別の仕事だけを学ぶわけではありません。
まず、事前学習によって大量のテキストデータから学習します。
これは、機械が最初に、たくさんの本や記事や文章を読んで、言葉の使われ方や流れを身につけるようなものです。
たとえるなら、いきなり国語の試験問題を解かされるのではなく、まずは図書館にこもって大量の文章を読み、日本語そのものの感覚を育てる感じです。
この事前学習があるからこそ、BERTはあとから
・感情分析
・質問応答
・文の分類
・文どうしの関係の判定
といった、さまざまな仕事に強くなります。
つまりBERTは、大量の文章を読むことで、言葉の土台を先に身につけておくモデルなのです。
Masked Language Model
BERTの事前学習で有名なのが、Masked Language Modelです。
これは、文の中の一部の単語を隠して、前後の文脈からその単語を当てる学習です。
たとえば、
私は昨日、図書館で[ ]を借りた。
という文があれば、そこに「本」が入りそうだと考えますよね。
でも、それを当てるには、前後の流れを見なければいけません。
私は
昨日
図書館で
借りた
という文脈を見るからこそ、その空欄に入る語が見えてくる。
これがMasked Language Modelです。
たとえるなら、インクで一部が隠された本を読みながら、前後の文の流れから消えた単語を想像する訓練です。
この学習によってBERTは、単語そのものではなく、単語が置かれている場面ごと読む力を育てていきます。
Next Sentence Prediction
もう一つ、初期のBERTで重要だったのが、Next Sentence Predictionです。
これは、二つの文が与えられたときに、後ろの文は、本当に前の文の続きとして自然かを判断する学習です。
たとえば、
「今日は雨が降っている。」
「だから傘を持って出かけた。」
なら自然に続いていますよね。
でも、
「今日は雨が降っている。」
「猫は高いところが好きだ。」
では、話の流れとして急に飛びすぎています。
Next Sentence Predictionは、こうした文と文のつながりを見る訓練です。
これは単語の意味だけでなく、
・文どうしの関係
・話の流れ
・つながりの自然さ
を見るために役立ちます。
つまりBERTは、単語の穴埋めだけでなく、文章の続き方そのものも学んでいたのです。
BERTとELMo
ここで気になるのが、前の章で出てきたELMoとの関係です。
ELMoもまた、同じ単語でも、文脈によって意味が変わることを扱おうとしたモデルでした。
この点では、BERTとELMoはよく似ています。
どちらも、単語を固定された一つの意味としてではなく、文脈の中で意味が変わるものとして見ています。
でも違いもあります。
ELMoは、文脈を使って単語表現を豊かにした大事な一歩でしたが、BERTはそこからさらに進んで、
・Transformerのエンコーダを使い
・前後を双方向に読み
・大量のテキストで事前学習し
・Masked Language ModelやNext Sentence Predictionで学ぶ
ことで、より強力に文脈を扱えるようになりました。
たとえるなら、ELMoが「単語の表情は場面で変わる」と教えてくれた先輩だとすれば、BERTはそこからさらに、文章全体の流れを本格的に読む読書家になった存在です。
つまりBERTは、ELMoと地続きでありながら、その読み方を大きく押し広げたモデルだと言えます。
GLUE
BERTが登場すると、自然言語処理のさまざまなタスクで性能が大きく伸びました。
たとえば、
・文の分類
・感情分析
・質問応答
・文の意味の判定
・文どうしの関係の理解
といった、文章をしっかり読まないと答えにくい仕事です。
これは、BERTがただ次の単語を当てるだけではなく、文全体の意味のつながりを読むことに強かったからです。
つまりBERTは、自然言語処理の世界で「ちゃんと読む力」を強く押し上げたモデルだったのです。
ここで出てくるのが、GLUEです。
GLUEは、ひとことで言えば、自然言語処理モデルの読解力を測るための、総合テストのようなものです。
人間でも、読書の力を見たいなら、一問だけでは足りませんよね。
・語句の意味
・文の関係
・読解
・推論
・感情の読み取り
など、いろいろな問題を見て、はじめて「この人は読む力が高い」と言えます。
GLUEもそれに似ています。
自然言語処理モデルが、いろいろな言語タスクで、どれくらい力を出せるかをまとめて測るためのベンチマークです。
BERTは、このGLUEで高い成績を出したことで、「文脈を双方向から読むモデル」がどれほど強力かを広く印象づけました。
だからGLUEは、BERTそのものの中身というより、BERTの読解力が、どれほど高かったかを示す舞台だと考えるとわかりやすいです。
まとめ
ここまでを振り返ると、BERTがもたらした変化は大きいことがわかります。
それまでの機械は、言葉を読めるようになってきてはいました。
でもBERTによって、その読み方はさらに人間らしいものに近づきました。
単語だけを見るのではなく、前後の流れを見る、文の中の役割を見る、場面の中で意味を考える……。
つまりBERTは、機械に、言葉の「前後関係」を本格的に読む力を与えたモデルだったのです。
このあと自然言語処理は、「深く読む」BERTの流れと、「続けて書く」GPTの流れへ、大きく枝分かれしていきます。
だからBERTは、言語モデルの歴史の中で、とても大事な分岐点に立っている存在なのです。
BERT
→ Google社が開発した自然言語処理モデル
→ Transformerのエンコーダ部分のみを使う
→ 単語を前後の文脈の中で読む
事前学習
→ 大量のテキストデータを読んで、言葉の土台を身につける
Masked Language Model
→ 文の一部を隠し、前後の文脈から当てる学習
Next Sentence Prediction
→ 二つの文が自然につながるかを考える学習
ELMoとの関係
→ どちらも文脈に応じて単語の意味が変わることを扱う
→ BERTはそれをさらに強力に押し進めたモデル
GLUE
→ モデルの読解力を測る総合テストのようなベンチマーク
→ BERTの強さを示す舞台になった
next ▶ 文章を生み出すモデル