機械学習に使われる数学#
次章より 3 つの章にわたって、ディープラーニングを含む機械学習に必要な数学のうち、基礎的なものとして「微分」「線形代数」「確率統計」の 3 つについて、要点を絞り、簡潔に紹介していきます。
その前に、本章では機械学習 (machine learning) の考え方について大枠を掴み、どの部分でそれぞれの項目が登場するかを把握しておきましょう。
機械学習とは#
機械学習は、与えられたデータから、未知のデータに対しても当てはまる規則やパターンを抽出したり、それらを元に未知のデータを分類したり、予測したりする手法を研究する学術領域です。 機械学習は様々な技術に応用されており、例えば画像認識、音声認識、文書分類、医療診断、迷惑メール検知、商品推薦など、幅広い分野で重要な役割を果たしています。
教師あり学習の考え方#
機械学習の代表的な問題設定として、教師あり学習 (supervised learning) というものがあります。 これは、問題に対して予め答えを用意しておき、予想された答えと実際の答えの違いが小さくなるように訓練を行う方法です。
もう少し具体的に教師あり学習の考え方を説明してみます。 例えば、以下の図のような赤い点の集まりがあったとします。
この図は、横軸が
このように、与えられたデータから関係性を予想し、未知のデータに対しても筋の良い見通しを立てることが、教師あり学習の代表的な目標の 1 つです。
直線による近似#
次に、以下のような直線の方程式を考えてみましょう。
これは、1 つの入力
この直線をそのまま赤い点の集まりの上におくと、以下のようになります。
あまりうまく
式
また、パラメータ
それでは、
目的関数#
コンピュータに良いパラメータを自動的に見つけてもらうためには、何が良いパラメータなのかという指標を定義する必要があります。 そのような指標を表す関数を目的関数 (objective function) と呼びます。
ここで、上の直線の例に戻って考えてみましょう。
まず、式
目的関数は多くの場合、モデルの予測値と目標値を受け取って、その間の差異を測って返すような関数です。 差異は小さければ小さいほどモデルの予測が当たっていることを意味するため、この場合は目的関数の値を最小にするパラメータを見つけ出すのが目的になります。
二乗誤差関数#
目的関数の具体例を挙げます。
例えば、適当に赤い点を 1 つ選び、その
この
つまり、
そして、この 200 個の
このとき、これらの予測値の正確さを、対応する目標値との間の差の二乗によって測るのが、二乗誤差関数 (squared error function) と呼ばれるものです。
具体的には、
これは、
これは、平均二乗誤差 (mean squared error) と呼ばれ、連続値を予測する回帰問題などでよく用いられる代表的な目的関数の 1 つです。
この関数は、予測値と目標値がすべての
目的関数の最適化#
ある関数を最小にする入力変数の値を求めることを最適化といいます。この最適化をコンピュータで自動的に行うには、どうすれば良いのでしょうか。 例えば、以下のような関数があるとします。 横軸が入力の値、縦軸が出力の値です。
このとき、関数に適当な値をまず入力してみて、得られた値を使ってその値が小さくなりそうな方向に入力を少し動かす、ということを繰り返し行って、関数が最小値をとる入力値を探索する、という方法があります。
機械学習で使われる数学#
このような最適化を行うのに必要になるのが微分 (differential) の知識です。 なぜなら、「入力をどちらに動かせば出力が小さな値になりそうか」ということを知るためには、対象の関数を微分する必要があるからです。詳細は Chainer チュートリアル『4. 微分の基礎』 を参照してください。
また、初めにあげた赤い点の集まりに最もよく沿うような直線を求める問題では、1 つの値を入力して 1 つの値が出力される関数を考えていましたが、複数の値を同時に扱いたいときに必要になるのが、線形代数 (linear algebra) の知識です。
さらに、赤い点がもし本当は直線上にぴったり沿うようなデータであったのに、観測時に何らかの理由でノイズが乗ってしまったがために直線の周辺にばらついて出てきているのだとしたら、そのノイズがどの程度の範囲で値のズレを発生させるものなのか、見当をつけておきたくなるかもしれません。 そういったときに必要になるのが、確率(probability)・統計 (statistics) の知識です。
機械学習を手法レベルから理解するためには、この 3 つの知識が必要になります。