機械学習

機械学習（きかいがくしゅう、英: machine learning）とは、経験からの学習により自動で改善するコンピューターアルゴリズムもしくはその研究領域で、人工知能の一種であるとみなされている。「訓練データ」もしくは「学習データ」と呼ばれるデータを使って学習し、学習結果を使って何らかのタスクをこなす。例えば過去のスパムメールを訓練データとして用いて学習し、スパムフィルタリングというタスクをこなす、といった事が可能となる。 機械学習は以下の分野と密接に関係する： 計算統計学（英語版）：計算機を使った予測に焦点を当てた分野 数理最適化：定められた条件下における最適解の探索に焦点を当てた分野 データマイニング：教師なし学習（後述）における探索的データ解析に焦点を当てた分野 機械学習という名前は1959年にアーサー・サミュエルによって造語された。 論者により定義が異なるものの、トム・M・ミッチェルによる下記の簡潔な定義は広く引用されている： A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E。 コンピュータプログラムがタスクのクラスTと性能指標Pに関し経験Eから学習するとは、T内のタスクのPで測った性能が経験Eにより改善される事を言う。 — トム・M・ミッチェル（英語版） ここでタスクとは、プログラムが解くべき課題を指し、例えば売上予測タスクであれば「明日の売上を予測せよ」といったタスクである。 経験はなんらかのデータとしてプログラムに与えられる。このデータを訓練データもしくは学習データといい、売上予測タスクであれば例えば「過去の経験」である今日までの売上が訓練データとして与えられる。訓練データを使ってプログラムの性能を改善する過程を、「プログラムを訓練する」もしくは「プログラムを学習させる」という。またプログラムの訓練に用いられるデータ全体の集合を（訓練もしくは学習）データセット（データ集合とも）という。 最後に性能指標は、プログラムがタスクをどの程度の性能で達成したかを測る指標で、前述の売上予測タスクであれば、例えば実際の売上との誤差を性能指標として用いる事ができる。 機械学習では、データxが連続量であるとき、xを量的変数(quantitative variable)といい、「イヌ」、「ネコ」といった分類カテゴリのように物の種類を表す変数を質的変数(qualitative variable)という。質的変数はカテゴリ型変数(categorical variable)、因子(factor)とも呼ばれる。 量的変数、質的変数以外にも「大」「中」「小」のように順序づけられた離散値を取る順序付きカテゴリ型変数(ordered categorical variable)もある。また自然言語のように質的変数とは違い連続量ではなく、カテゴリ型変数と違い有限個のカテゴリに値を取るわけではないものも機械学習では取り扱う。 機械学習のタスクは、以下の代表的な３種類のカテゴリーに分けられる。ただしこれらの３つで機械学習で扱う全てのタスクをカバーしているわけではないし、複数のカテゴリーに属するタスクや、どのカテゴリーに属するのか曖昧なタスクもある。 教師あり学習 入力とそれに対応すべき出力 を写像する関数を生成する。例えば、分類問題では入力ベクトルと出力に対応する分類で示される例を与えられ、それらを写像する関数を近似的に求める。 ラベルのインフォメーションが不足の場合は半教師あり学習である。 教師なし学習 入力のみ（ラベルなしの例）からモデルを構築する。データマイニングや自己符号化器なども参照。 強化学習 周囲の環境を観測することでどう行動すべきかを学習する。行動によって必ず環境に影響を及ぼし、環境から報酬という形でフィードバックを得ることで学習アルゴリズムのガイドとする。例えばQ学習がある。 教師あり学習（supervised learning）では、未知の確率分布 p ( x , y ) {\displaystyle p(\mathbf {x} ,\mathbf {y} )} を対象にする。実応用上は何らかの意味でxを入力、yを出力とみなせる事が多く、例えばyはxに未知の関数Fを施した値F(x)に小さなノイズが載ったものである。アルゴリズムには、 p ( x , y ) {\displaystyle p(\mathbf {x} ,\mathbf {y} )} に従うxとyの組 ( x 1 , y 1 ) , … , ( x n , y n ) {\displaystyle (\mathbf {x} _{1},\mathbf {y} _{1}),\ldots ,(\mathbf {x} _{n},\mathbf {y} _{n})} が訓練データとして与えられる。アルゴリズムが解くべきタスクは訓練データに属していない（かもしれない）データxに対し、条件付き確率分布 p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} ないしそこから決まる値（たとえば p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} の期待値）をよく近似することである。近似の精度は事前に定められた損失関数という関数を使って評価する。したがって損失関数の値の期待値を小さくする事が、教師あり機械学習の目標であると言える。 前述した機械学習の定義に沿って言えば、教師あり機械学習は以下のような機械学習であるといえる： 教師あり学習では事前知識である ( x 1 , y 1 ) , … , ( x n , y n ) {\displaystyle (\mathbf {x} _{1},\mathbf {y} _{1}),\ldots ,(\mathbf {x} _{n},\mathbf {y} _{n})} から、未知のxに対応するyの分布 p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} を当てる事が求められる。このため、アルゴリズムが未知のxから p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} （ないしそこから決まる値）を求める操作を汎化もしくは推論（inference）と呼ぶ。タスクによっては「予測」「判断」「認識」等と呼ばれる事もある。 アルゴリズムは未知のデータxからxに対応するyの分布の情報を推測する必要があるが、この推論の為に事前知識として与えられる訓練データにはxiから推論しなければならないyiが「解答」としてついている。「教師あり学習」という名称は、このように既知の「問題」xiに対する「解答」yiを「教師」が教えてくれるというセッティングで「生徒」であるアルゴリズムが未知の「問題」xに対応する「解答」yを推論する事から名付けられたものである。同様の理由により、教師あり学習では訓練データの事を教師データとも呼ぶ。 多くの教師あり機械学習のモデルでは、実際の汎化を行う前に訓練もしくは学習と呼ばれる作業が発生し、機械学習のモデルは「訓練アルゴリズム」と「汎化アルゴリズム」のペアとして捉える事ができる。訓練アルゴリズムは訓練データを入力として受け取り、パラメータと呼ばれる値θを出力する。パラメータは直観的には訓練データから有用な情報を引き出した「学習結果」であり、汎化の際にはこの「学習結果」であるθを使って汎化を行う。すなわち、汎化アルゴリズムは入力xの他にパラメータθをも入力として受け取り、 p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} （ないしそこから決まる値）を求める。 教師あり機械学習において、変数xを説明変数(explanation variable)、yを目的変数、目標変数(target variable)、もしくは標的(target)と呼ぶ。これらは別の名称で呼ばれる事も多く、xを予測変数(predictor)、yを応答変数（response variable）と呼んだり、xを独立変数（independent variable）、yを従属変数(dependent variable)と呼んだりする事もある。またタスクによってはこれら以外の名称で呼ばれる事もある。 教師あり学習に属する代表的なタスクとして回帰と分類がある。教師あり学習において、目的変数yが量的変数である場合を回帰(regression)、有限集合に値を取るカテゴリ型変数のである場合を分類(classification)もしくは判別と呼ぶ。 回帰の目標は入力xが与えられたとき、 p ( y ∣ x ) {\displaystyle p(\mathbf {y} \mid \mathbf {x} )} に関する情報を予想する事である。典型的には y = F ( x ) + ε {\displaystyle \mathbf {y} =F(\mathbf {x} )+\mathbf {\varepsilon } } のようにyが未知の関数Fの像F(x)にランダムなノイズεを加えたデータであるケースにおいて、入力xからyの可能な限り正確な予想値 y