前回に引き続き、「パンの名前を入力すると飲み物の名前を出力するコンピュータ」を例に機械学習について解説していきます。前回は、機械学習を使わずに単純なルールで実現した場合、ルールに無いパターンが入力されると対応できないことを説明しました。今回は、これを機械学習で実現する場合について見ていきましょう。

機械学習で使う「モデル」って何?

「パンの名前を入力すると飲み物の名前を出力するコンピュータ」を機械学習で実現する場合、パンと飲み物がセットになった正解データを準備し、これを学習させます。前回の繰り返しになりますが、機械学習ではこの正解データを「教師データ」と呼び、教師データを使った機械学習を「教師あり学習」と呼びます。

教師あり学習を行う際は、まず最初に、コンピュータが学習する際の「土台」となるものを人が設計し、コンピュータに与えます。この土台を「モデル」と呼び、コンピュータは教師データから学習した内容をモデルに反映させていきます。コンピュータが学習を終えた後のモデルは、未知のデータに対する予測にも使えるようになります。

さて、今回の例では、以下のような教師データ(正解データ)を用意しています。

  1. あんパン → 牛乳
  2. クリームパン、あんパン → 牛乳
  3. クリームパン → コーヒー
  4. メロンパン、ソーセージパン → コーヒー
  5. ジャムパン、あんパン → 牛乳
  6. ジャムパン、メロンパン → コーヒー

パンと飲み物の組み合わせに関する教師データ(正解データ)

コンピュータは教師データに基づき、与えられたモデル上に「飲み物の名前を出力するためのルール」を自動で構築していきます。ただし、出力される飲み物の名前は、教師データにある物のいずれかです。今回の例では、「牛乳」または「コーヒー」と出力します。どんなパンの名前を入力しても、これら以外の飲み物の名前を出力することはありません。

重要なのは、機械学習によって抽出されたルールが非常に柔軟であるという点です。例えば、教師データに無い組み合わせである「ソーセージパン」と「あんパン」が入力された場合でも、恐らく「牛乳」と出力することができます。これは、機械学習が「『クリームパン』と『あんパン』という入力に対して『○○』を出力する」という固定のルールを作るのではなく、「クリームパン」や「あんパン」といった入力の特徴ごと(この例ではパンごと)にルールを抽出しているからです。

コンピュータが学習するイメージをつかんでいただくために、もう少し具体的に説明しましょう。ここでコンピュータが学習したいのは、牛乳とコーヒーに対するパンごとの「結び付きの強さ」です。

コンピュータは、与えられた教師データを上から順番に学習していきます。まずは「あんパン → 牛乳」です。この情報から、コンピュータはあんパンと牛乳に結び付きがあることを学習します。ここでは簡易的に、パンと飲み物に結び付きがあった場合、入力に対する飲み物に●を付けていきましょう。なお、下記では表がモデルに当たり、コンピュータが学習によって表中の●を配置している(ルールを抽出している)というイメージになります。

あんパンと牛乳に結び付きがあったことを学習した

次は「クリームパン、あんパン → 牛乳」です。この情報に基づいて、先ほどと同じように、「あんパン」と「クリームパン」がそれぞれ「牛乳」と交わるところに●を付けます。

「あんパン」と「クリームパン」がそれぞれ「牛乳」と交わるところに●を付ける

次は「クリームパン → コーヒー」です。しかし、同じ要領で●を付けると、クリームパンに対する牛乳とコーヒーの●が同数になってしまい、「クリームパン」と入力しても「コーヒー」と出力することができません。そこで、学習しようとしている教師データに反さないよう、クリームパンと牛乳の結び付き(●)を減らします。これで、「クリームパン」が入力された場合は「コーヒー」と出力できるようになりました。

クリームパンと牛乳の結び付きを弱めれば(●を減らせば)、「コーヒー」と出力できるようになる

このようにしてパンごと(入力の特徴ごと)の値を調整しながら学習し、教師データに基づいたルールを抽出します。教師あり学習とは教師データを順々に学習し、その都度ルールを微調整していく方法なのです。今回の例では、教師データを一通り学習し終えた状態のモデル(表)は次のようになります。

教師データを一通り学習し終えた状態のモデル(表)

こうしたモデルを保持していれば、教師データには無い未知のデータが入力されても、●の数を比較して多いほうを選ぶことで、妥当な飲み物の名前を出力できるというわけです。例えば、「あんパン」と「メロンパン」が入力された場合、牛乳の●が3つなのに対してコーヒーは2つなので、「牛乳」と出力することになります。

機械学習の「ホントのところ」

ざっくり説明しましたが、教師あり学習の大まかな概念は理解いただけたでしょうか。あまりにも単純な話すぎて「こんなやり方でうまくいくの?」と疑問に思う方もいるかもしれません。そこで、もう少し踏み込んだ「ホントのところ」をちょっとだけお話しさせてください。

今回の例では、「牛乳かコーヒーのいずれかを出力する」としましたが、実際には「出力する飲み物が牛乳である確率とコーヒーである確率」を出力するケースも多々あります。つまり、「あんパン」と入力された際に「牛乳」と出力するのではなく、「『牛乳』が正しい可能性が80%、『コーヒー』が正しい可能性が20%」といった確率を出力するということです。これは、ピンポイントで飲み物の名前を出力するようにしてしまうと、大量の教師データに合致する柔軟なモデルを作ることが難しくなるためです。

学習方法についても、今回は教師データに合致するようにルールを変更(●の数を増やしたり減らしたり)しましたが、実際には、現状のモデルによる予測結果と教師データの差に応じてルールを微調整していくことがほとんどです。これから学習しようとしている入力内容に対して、現状のモデルで予測した結果と教師データに書かれている正解データに大きな差がない場合、モデルにはあまり手を加えませんが、大きく異なっている場合はモデルを大幅に調整(ルールを変更)します。

現状のモデルで予測した結果と教師データ(正解データ)の差異の大きさに応じて、モデルを調整する

教師あり学習では、1度教師データを学習させて終了する場合もありますが、同じデータを複数回学習させることもあります。2回目は、1回目の学習で出来上がったモデルをより洗練させていくイメージです。

また、もしパンと飲み物の種類がもっと多く、さらにデータが大量にあれば、より性能の良いモデルを作ることができます。そのため、教師あり学習では「教師データをどのように作るのか」ということと、「どのくらいのデータ量を準備するか」ということが非常に重要です。

次回は、教師あり学習で作成したモデルの性能に関して説明します。

著者紹介


国立研究開発法人 情報通信研究機構
ユニバーサルコミュニケーション研究所
データ駆動知能システム研究センター 専門研究員
大西可奈子

2012年お茶の水女子大学大学院博士後期課程修了。 博士(理学)。同年、大手通信会社に入社。2016年より現職。
一貫して自然言語処理、特に対話に関する研究開発に従事。
人工知能(主に対話技術)に関する講演や記事執筆も行う。
twitter:@WHotChocolate