前回までに、機械学習でメジャーな3つの手法について説明しました。今回はおさらいとして、ここまで学んできたことを振り返るとともに、皆さんからいただいた質問に答えていきたいと思います。
機械学習を活用するために必要な「2つのコト」
この連載のテーマでもある「人工知能(AI)」という言葉ですが、実は厳密な定義はありません。最近は特に、人工知能と言えば機械学習のことだというイメージが広まっているようですが、人工知能と呼ばれているものが必ずしも機械学習を用いているわけではありません。今の世の中には、非常に簡単なルールで実装されている人工知能から、最新の技術を用いた人工知能まで幅広く存在しているのです。
機械学習は、データからパターンやルールを自動で抽出する技術です。大まかに分類すると「教師あり学習」「教師なし学習」「強化学習」という3種類の手法があります。実は機械学習でできること(解ける問題)は非常にシンプルです。機械学習を使いこなすためには、解きたい課題をいかにして機械学習が解ける問題に落とし込むかがポイントとなります。そのためにも、「それぞれの手法がどのような問題を解くことができるか」を知っておくことと、「実際の課題をどうやって機械学習が解ける問題に落とし込むか」を考える柔軟な思考力が大切になります。
「教師あり学習」「教師なし学習」「強化学習」を、いつ、どのような目的に使用すると良いかを表にまとめました。それぞれほかにもできることはありますが、まずはよく活用される以下の内容を理解しておけば良いでしょう。
主な分類 | できること | やりたいこと(具体例) |
---|---|---|
教師あり学習 | データを分類(クラス分け) | 送られてきたメールが、迷惑メールかどうかを判定する機械が欲しい |
教師なし学習 | データを分割(グループ化) | 大量にあるメールを本文の特徴に基づいて3つのグループに分けたい |
強化学習 | 嗜好錯誤による経験則の作成 | ゲームを自動でクリアしたい |
ここまでを踏まえ、皆さんからいただいた質問を見ていきたいと思います。今回は、第4回の記事への質問です。
質問1:「教師あり学習」では、最初に人間が学習の土台となる「モデル」を作ってコンピュータに渡すって言ってたけど、モデルって具体的には何なの?
機械学習における「学習」とは、実際には「パラメータを持つ関数」のパラメータ部分を調整することを言います。ここで言う関数とは、ある数字が入ってきたら、何かしらの処理を施して別の数字が出てくるもののことです。例えば、入力された数字に1を足す関数ならば、1を入力すれば2を出力しますし、2を入力すれば3を出力するでしょう。
パラメータを持つ関数とは、施す処理の一部が決まっていない状態のものを言います。先ほどの例では「入力された数字に1を足す」という処理を施しましたが、これを「入力された数字に何かを足す」と置き換えてください。何を足すかは不明ですが、何かの数字が入るものとします。この「何か」がパラメータにあたります。
もし目の前に、「入力された数字に何かを足す」関数を持ったコンピュータがあり、そのコンピュータを使って「1が入力されたら3を出力し、2が入力されたら4を出力してください」と言われれば入力された数字に足す「何か」は2になるでしょう。この「1が入力されたら3を出力」「2が入力されたら4を出力」というのが、いわゆる「教師データ」にあたります。
パラメータを持つ関数では、教師データが持っている入力値と出力値のセットを基に、「何か(パラメータ)」にマッチする値を探すのです。
一般的に「モデル」という言葉は、このパラメータを持つ関数のことを言います。教師あり学習を行う際は、最初に人間が、何らかのパラメータを持つ関数をコンピュータに与えるわけです。コンピュータは教師データを基に、できるだけ入力と出力のセットがうまくいくように与えられた関数のパラメータを調整(学習)します。
なお、「一般的」という言い方をしたのは、「モデル」という言葉には明確な定義がないためです。機械学習の世界では頻繁に登場する言葉なのですが、使われるシーンによって微妙に指しているものが異なることがあるので、留意しておいてください。