BERTでの言葉の扱い方

今回は「fromZEROでAI体験」で使っているBERTが、入力された文章・言葉をどのように扱っているのかについて考えてみたいと思います。

こんにちは。このサービスで使っているBERTについて、前回は入力された文章の何を見ているのか、実は文字の形すら見ていないということについてお話ししました。今回は、その入力された文章・言葉をどのように扱って、どのように処理に使っているのかについて考えていきたいと思います。そうすると、文章だけでなく、文字の大きさや字体、さらにそれを音読した時の声のトーン、その言葉が発せられた情景もうまく取り込む方法があることに気づくでしょう。ぜひお付き合いください。

BERTの中ではどんなデータが流れているのか

BERTの中身はニューラルネットワークという仕組みで動いています。ニューラルネットワークとは、人間の脳の神経細胞(ニューロン)の動きを参考にして考えられたもので、たくさんの入力を何らかの計算をしてその結果を次に渡すというものが次々と連鎖していくものになっています。神経細胞を真似したものがネットワークでつながっているので、ニューラル(神経細胞の)ネットワークと呼ばれています。その入力と出力は数値となっており、中では掛け算と足し算が組み合わさっているような計算になっています。例えば、

0.834(入力1) * 0.23 + 0.385(入力2) * 0.43 + 0.921(入力3) * 0.553 = 0.866683(出力)

のような計算をしています。世界中の研究者がこの計算の仕方をどんどん工夫することによって、ニューラルネットワークの仕組みは年々進化していっています。

文章や言葉はどうやって数値で表現できるのか

では、文章や言葉はどうやってニューラルネットワークに入力するのでしょうか。

これもさまざまな研究によってさまざまな方法が提案されています。まず簡単な方法を紹介しましょう。入力文の最初の文を例えば「りんごとみかんを棚に置いて時計を棚から取りました。」だとします。

  1. 文を単語ごとに区切ります。(りんご, と, みかん, を, 棚, に, 置い, て, 時計, を, 棚, から, 取り, まし, た, 。)
  2. 同様に全ての文に対して、1. を行います。
  3. 出来上がったたくさんの単語のリストに対して、同じ単語には同じ番号をつけるようにして、全単語に番号をつけます。(1:りんご, 2:と, 3:みかん, 4:を, 5:棚, 6:に, 7:置い, 8:て, 9:時計, 10:から, 11:取り, 12:まし, 13:た, 14:。)
  4. 単語の種類の数(例えば全部で100種類あったとします)の入力を用意して、その単語があったら、その入力の数値を1とし、なかったら、0とします。(「りんごを取りました」だと、1:1, 2:0, 3:0, 4:1, 5:0, …, 10:0, 11:1, 12:1, 13:1, …)

これにより、とりあえず文章・言葉を数値データにすることができるので、ニューラルネットワークで文章・言葉が扱えるようになります。これがニューラルネットワークに文章・言葉を入力する最も基本的な方法になります。

もう少し意味の違いも表現することはできないのか

先ほどの方法で数値にしただけだと、似た意味の単語でも全く違う意味の単語でも、単純に番号付けされているだけなので、その違いを表現することはできませんね。例えば、りんごとみかんは食べもので、時計は食べられないものなので、りんごとみかんは近い種類で、時計は違う種類だということは単語番号だけではうまく表現できません。また、語順が入れ替わっても、同じ単語が2回以上登場しても同じ数値になってしまいます。また、世の中で使われる全単語に番号をつけてしまうと、とても大きな入力が必要になってしまい、ニューラルネットワークの計算がとても大変なものになってしまいます。

そこで、単純に単語番号で表現するのではなく、たくさんの特徴で表現してはどうかということになります。例えば、何か四角い箱があったとして、それを表現するのには、まずは

縦の長さ, 横の長さ, 高さ, 重さ, 色

の5種類を使うということが考えられます。言葉も同じようにできないでしょうか。

生物かどうか, 動物かどうか, 食べられるものなら甘さ, 物なら大きさ, …

ちょっと難しいですね。どれだけの種類を用意して、それにどんな数値を当てはめれば良いか、なかなか見当もつきません。そこで、本サービスで使っているBERTでは、その種類と数値も大量の文章から学習するようになっています。大量の種類とその数値で単語や文章を表現しています。これを分散表現と言います。それがどういう種類に分けられていて、その数値にはどんな意味があるのかは人間にはわかりません。わかるのは、BERTは、前々回でご紹介した「穴あき文章問題」と「文がつながるかどうか問題」をとにかく間違えずにうまく解けるように種類と数値を学習しているということだけです。

文章・言葉以外も入力できるのか

ここまでで文章・言葉を数値にしてニューラルネットワークに入力できることがわかりました。そうすると、そこに別の数値を入力として増やすということも簡単にできます。例えば、文字の大きさ、線の太さ、その文章を音読した時の声の高さや大きさ、その時の周りの明るさ、気圧、湿度、場所、情景の色など、いくらでも入力として加えることができます。こういった様々な入力の種類を扱うことをマルチモーダルと言います。従来は、文章・言葉と、それら数値情報を同時に入力として扱うことは特別な方法が必要でしたが、ニューラルネットワークでは単純に入力の種類を増やすことにより、扱うことができるようになりました。そういう研究もどんどん進んでいるところです。どういう入力を増やすとどんなことができるようになるのか、想像してみると面白いですね。

>人工知能(AI)の入門なら体験して学べる 「fromZEROでAI体験」

人工知能(AI)の入門なら体験して学べる 「fromZEROでAI体験」

AI時代を生き抜くためには、開発者だけでなく利用者も「AIとは何か」を知ることが重要です。私たちは、すべての人に「AIとは何か」を知ってもらうために、AIを体験して学べるオンライン学習サービス「fromZEROでAI体験」をはじめました。

CTR IMG