機械学習
機械学習(きかいがくしゅう、machine learning)とは、経験からの学習により自動で改善するコンピューターアルゴリズムもしくはその研究領域で、人工知能の一種であるとみなされている。「訓練データ」もしくは「学習データ」と呼ばれるデータを使って学習し、学習結果を使って何らかのタスクをこなす。例えば過去のスパムメールを訓練データとして用いて学習し、スパムフィルタリングというタスクをこなす、といった事が可能となる。
機械学習は以下の分野と密接に関係する:
計算統計学:計算機を使った予測に焦点を当てた分野
数理最適化:定められた条件下における最適解の探索に焦点を当てた分野
データマイニング:教師なし学習(後述)における探索的データ解析に焦点を当てた分野Machine learning and pattern recognition "can be viewed as two facets of the same field."
機械学習という名前は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により改善される事を言う。
ここでタスクとは、プログラムが解くべき課題を指し、例えば売上予測タスクであれば「明日の売上を予測せよ」といったタスクである。
経験はなんらかのデータとしてプログラムに与えられる。このデータを訓練データもしくは学習データといい、売上予測タスクであれば例えば「過去の経験」である今日までの売上が訓練データとして与えられる。訓練データを使ってプログラムの性能を改善する過程を、「プログラムを訓練する」もしくは「プログラムを学習させる」という。またプログラムの訓練に用いられるデータ全体の集合を(訓練もしくは学習)データセット(データ集合とも)という。
最後に性能指標は、プログラムがタスクをどの程度の性能で達成したかを測る指標で、前述の売上予測タスクであれば、例えば実際の売上との誤差を性能指標として用いる事ができる。
機械学習では、データxが連続量であるとき、xを量的変数(quantitative variable)といい、「イヌ」、「ネコ」といった分類カテゴリのように物の種類を表す変数を質的変数(qualitative variable)という。質的変数はカテゴリ型変数(categorical variable)、因子(factor)とも呼ばれる。
量的変数、質的変数以外にも「大」「中」「小」のように順序づけられた離散値を取る順序付きカテゴリ型変数(ordered categorical variable)もある。また自然言語のように質的変数とは違い連続量ではなく、カテゴリ型変数と違い有限個のカテゴリに値を取るわけではないものも機械学習では取り扱う。
機械学習のタスクは、以下の代表的な3種類のカテゴリーに分けられる。ただしこれらの3つで機械学習で扱う全てのタスクをカバーしているわけではないし、複数のカテゴリーに属するタスクや、どのカテゴリーに属するのか曖昧なタスクもある。
入力とそれに対応すべき出力 を写像する関数を生成する。例えば、分類問題では入力ベクトルと出力に対応する分類で示される例を与えられ、それらを写像する関数を近似的に求める。
ラベルのインフォメーションが不足の場合は半教師あり学習である。
入力のみ(ラベルなしの例)からモデルを構築する。データマイニングや自己符号化器なども参照。
周囲の環境を観測することでどう行動すべきかを学習する。行動によって必ず環境に影響を及ぼし、環境から報酬という形でフィードバックを得ることで学習アルゴリズムのガイドとする。例えばQ学習がある。
教師あり学習(supervised learning)では、未知の確率分布p(\mathbf{x},\mathbf{y})を対象にする。実応用上は何らかの意味でxを入力、yを出力とみなせる事が多く、例えばyはxに未知の関数Fを施した値F(x)に小さなノイズが載ったものである。アルゴリズムには、p(\mathbf{x},\mathbf{y})に従うxとyの組(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )が訓練データとして与えられる。アルゴリズムが解くべきタスクは訓練データに属していない(かもしれない)データxに対し、条件付き確率分布p(\mathbf{y}\mid \mathbf{x})ないしそこから決まる値(たとえばp(\mathbf{y}\mid \mathbf{x})の期待値)をよく近似することである。近似の精度は事前に定められた損失関数という関数を使って評価する。したがって損失関数の値の期待値を小さくする事が、教師あり機械学習の目標であると言える。
前述した機械学習の定義に沿って言えば、教師あり機械学習は以下のような機械学習であるといえる:
教師あり学習では事前知識である(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )から、未知のxに対応するyの分布p(\mathbf{y}\mid \mathbf{x})を当てる事が求められる。このため、アルゴリズムが未知のxからp(\mathbf{y}\mid \mathbf{x})(ないしそこから決まる値)を求める操作を汎化もしくは推論(inference)と呼ぶ。タスクによっては「予測」「判断」「認識」等と呼ばれる事もある。
アルゴリズムは未知のデータxからxに対応するyの分布の情報を推測する必要があるが、この推論の為に事前知識として与えられる訓練データにはx'iから推論しなければならないy'iが「解答」としてついている。「教師あり学習」という名称は、このように既知の「問題」x'iに対する「解答」y'iを「教師」が教えてくれるというセッティングで「生徒」であるアルゴリズムが未知の「問題」xに対応する「解答」yを推論する事から名付けられたものである。同様の理由により、教師あり学習では訓練データの事を教師データとも呼ぶ。
多くの教師あり機械学習のモデルでは、実際の汎化を行う前に訓練もしくは学習と呼ばれる作業が発生し、機械学習のモデルは「訓練アルゴリズム」と「汎化アルゴリズム」のペアとして捉える事ができる。訓練アルゴリズムは訓練データを入力として受け取り、パラメータと呼ばれる値θを出力する。パラメータは直観的には訓練データから有用な情報を引き出した「学習結果」であり、汎化の際にはこの「学習結果」であるθを使って汎化を行う。すなわち、汎化アルゴリズムは入力xの他にパラメータθをも入力として受け取り、p(\mathbf{y}\mid \mathbf{x})(ないしそこから決まる値)を求める。
教師あり機械学習において、変数xを説明変数(explanation variable)、yを目的変数、目標変数(target variable)、もしくは標的(target)と呼ぶ。これらは別の名称で呼ばれる事も多く、xを予測変数(predictor)、yを応答変数(response variable)と呼んだり、xを独立変数(independent variable)、yを従属変数(dependent variable)と呼んだりする事もある。またタスクによってはこれら以外の名称で呼ばれる事もある。
回帰の目標は入力xが与えられたとき、p(\mathbf{y}\mid \mathbf{x})に関する情報を予想する事である。典型的には
\mathbf{y}=F(\mathbf{x})+\mathbf{\varepsilon}
のようにyが未知の関数Fの像F(x)にランダムなノイズεを加えたデータであるケースにおいて、入力xからyの可能な限り正確な予想値\hat{\mathbf{y}を出力する事が求められる。なお回帰で扱う目的変数yは連続量であり、典型的には実数を複数並べた数値ベクトルである。
他の教師あり機械学習アルゴリズムと同様、回帰アルゴリズムはp(\mathbf{x},\mathbf{y})に従って選ばれた訓練データの集合D=\{(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )\}をとして受け取る事ができ、これらの訓練データをヒントにして入力xに対応するyの予想値
\hat{\mathbf{y}=\hat{F}_D(\mathbf{x})
を出力する。予想の正確さは損失関数L(\hat{\mathbf{y},\mathbf{y})によって測られる。回帰では損失関数L(\hat{\mathbf{y},\mathbf{y})としては自乗誤差損失
L(\hat{\mathbf{y},\mathbf{y})=||\hat{\mathbf{y}-\mathbf{y}||^2
を用いる事が多い。
回帰の目標は、汎化誤差(予測誤差、予測損失とも)
E[L(\hat{\mathbf{y}(\mathbf{x}),\mathbf{y})]=\iint L(\hat{\mathbf{y}(\mathbf{x}),\mathbf{y}) p(\mathbf{x},\mathbf{y})\mathrm{d}\mathbf{x}\mathrm{d}\mathbf{y}
を小さく抑える事である。ここで\hat{\mathbf{y}(\mathbf{x})=M(\mathbf{x},\theta)は汎化アルゴリズムの出力であり、E[・]は期待値を表す。
回帰では、入力xに対応するyの予測値\hat{\mathbf{y}=\hat{F}_D(\mathbf{x})を出力する事を求められ、\hat{\mathbf{y}はyの期待値に近いことが望ましく、しかも\hat{\mathbf{y}のばらつきは小さい方が望ましい。しかし下記に示すようにこの2つの要件はトレードオフの関係にある:
定理=\hat{F}_D(\mathbf{x})とし、誤差関数を自乗誤差
L(\hat{\mathbf{y},\mathbf{y})=||\hat{\mathbf{y}-\mathbf{y}||^2
により定義し、さらに(\mathbf{x},\mathbf{y})\sim pをDとは独立に選び、
\bar{\mathbf{y}(\mathbf{x})=E_{\mathbf{y}\sim p|_{\mathbf{x}}[\mathbf{y}|\mathbf{x}]
\bar{F}(\mathbf{x})=E_D[\hat{F}_D(\mathbf{x})]
とする。
このとき、予測誤差の訓練データ集合Dに関する期待値(期待予測誤差)
E_D[E_{(\mathbf{x},\mathbf{y})\sim p}[L(\hat{F}_D(\mathbf{x}),\mathbf{y})]=E_{(\mathbf{x},\mathbf{y})\sim p,D}[||\hat{F}_D(\mathbf{x})-\mathbf{y}||^2]
は以下を満たす:
E_{(\mathbf{x},\mathbf{y})\sim p,D}[||\hat{F}_D(\mathbf{x})-\mathbf{y}||^2]=\mathsf{Var}(\hat{F})+\mathsf{Bias}^2(\hat{F})+\mathsf{Noise}(p)
ここで、
\mathsf{Var}(\hat{F})=E_{\mathbf{x}\sim p|_{\mathbf{x},D}(||\hat{F}_D(\mathbf{x})-\bar{F}(\mathbf{x})||^2)
\mathsf{Bias}^2(\hat{F})=E_{\mathbf{x}\sim p|_{\mathbf{x}}(||\bar{F}(\mathbf{x})-\bar{\mathbf{y}(\mathbf{x})||^2)
\mathsf{Noise}(\hat{F})=E_{(\mathbf{x},\mathbf{y})\sim p}(||\bar{\mathbf{y}(\mathbf{x})-\mathbf{y}||^2)
|note=バイアスと分散のトレードオフ}
\begin{align}
&{1\over 2}(E_{(\mathbf{x},\mathbf{y})\sim p,D}[(\mathbf{x})||^2
-||\bar{\mathbf{y}(\mathbf{x})-\mathbf{y}||^2
]\\
&= E_{(\mathbf{x},\mathbf{y})\sim p,D}[
-\hat{F}_D(\mathbf{x})\cdot\mathbf{y}
+\hat{F}_D(\mathbf{x})\cdot\bar{F}(\mathbf{x})
+\bar{F}(\mathbf{x})\cdot\bar{\mathbf{y}(\mathbf{x})
+\bar{\mathbf{y}(\mathbf{x})\cdot\mathbf{y}
-||\bar{F}(\mathbf{x})||^2
-||\bar{\mathbf{y}(\mathbf{x})||^2
]=(1)
\end{align}
\begin{align}
&E_{(\mathbf{x},\mathbf{y})\sim p,D}[-\hat{F}_D(\mathbf{x})\cdot\mathbf{y}
+\hat{F}_D(\mathbf{x})\cdot\bar{F}(\mathbf{x})]\\
&=-E_{(\mathbf{x},\mathbf{y})\sim p}[E_D[\hat{F}_D(\mathbf{x})]\cdot\mathbf{y}
+E_D[\hat{F}_D(\mathbf{x})]\cdot\bar{F}(\mathbf{x})\\
&=E_{(\mathbf{x},\mathbf{y})\sim p}[-\bar{F}(\mathbf{x})\cdot\mathbf{y}
+||\bar{F}(\mathbf{x})||^2]
\end{align}
なので、
\begin{align}
(1)&= E_{(\mathbf{x},\mathbf{y})\sim p}[
-\bar{F}(\mathbf{x})\cdot\mathbf{y}
+\bar{F}(\mathbf{x})\cdot\bar{\mathbf{y}(\mathbf{x})
+\bar{\mathbf{y}(\mathbf{x})\cdot\mathbf{y}
-||\bar{\mathbf{y}(\mathbf{x})||^2
]\\
&=
E_{(\mathbf{x},\mathbf{y})\sim p}[
(\bar{F}(\mathbf{x})-\bar{\mathbf{y}(\mathbf{x}))(\bar{\mathbf{y}(\mathbf{x})-\mathbf{y})
]\\
&=E_{\mathbf{x}[
(\bar{F}(\mathbf{x})-\bar{\mathbf{y}(\mathbf{x}))(\bar{\mathbf{y}(
\mathbf{x})-E_{\mathbf{y}\sim p|_{\mathbf{x}}[\mathbf{y}])
]\\
&=0
\end{align}
|drop=yes}上では回帰の場合について述べたが、確信度を出力する分類でも同様である。
L、p(x,y)をそれぞれ回帰や分類といった教師あり学習のタスクに対する損失関数、データ分布とし、関数Fに関する予測損失をR_L(F)=E_{(x,y)\sim p}[L(F(x),y)] と書き表す。このとき、予測損失の下限
\underset{F}{\mathrm{inf}R_L(F)
を損失関数Lのもとでのベイズ誤差(Bayes error)と呼び、下限を達成するFをベイズ規則(Bayes rule)という。ここで\underset{F}{\mathrm{inf} は可測関数全体の集合における下限である。
ベイズ規則は理論上の最良の予測関数であるが、実際には確率分布p(x,y)が未知なので、p(x,y)に関する予測損失R_L(F)=E_{(x,y)\sim p}[L(F(x),y)] を計算できず、ベイズ規則を求める事ができない。このため教師あり学習では既知のデータ(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )から可能な限りベイズ規則に近い値を出力するアルゴリズムを探索する事が求められる。
自乗損失を損失関数として選んだ場合、次の定理が成り立つ:定理,\mathbf{y})=||\hat{\mathbf{y}-\mathbf{y}||^2
とする。このとき、汎化誤差R_L(F)=E_{(x,y)\sim p}[L(F(x),y)] を最小にするF(\mathbf{x})は、
F(\mathbf{x})=E[\mathbf{y}|\mathbf{x}]
である。ここでEはp(x,y)から定まる条件付き確率分布p(\mathbf{y}\mid\mathbf{x})からランダムにyを選んだときの期待値である。|note=自乗損失に関する回帰のベイズ規則}
\iint
関数f(\mathbf{x})=E[\mathbf{y}|\mathbf{x}]を回帰関数と呼ぶ事もある。
教師なし学習(unsupervised learning)では、教師あり学習と違い、目的変数yに相当するものがそもそも存在しないか、あっても知る事ができない。
教師なし機械学習では、未知の確率分布p(\mathbf{x})に従う変数\mathbf{x}_1,\ldots,\mathbf{x}_nが訓練データとしてアルゴリズムに与えられる。アルゴリズムが解くべきタスクは、確率分布p(\mathbf{x})やその重要な性質を何らかの形で学習し、p(\mathbf{x})の特性を直接推定する事である。教師あり学習と違い、明確な「正解」yが存在しないので、教師なし学習では出力の妥当性を直接評価する評価尺度は存在せず、妥当か否かの判断は主観的なものになり、ヒューリスティックな議論が必要となる。
教師なし学習の興味の一つは確率密度関数p(\mathbf{x})それ自身を推定する密度推定のタスクであり、カーネル密度推定など統計学で様々なノンパラメトリック密度推定の手法が知られている。しかしxの次元が高い場合は次元の呪いが原因でこうした推定はうまくいかず、それゆえ多くの教師なし学習では、p(\mathbf{x})の何らかのパラメトリックなモデルでp(\mathbf{x})を近似することを試みたり、訓練データからp(\mathbf{x})の何らかの重要な性質を抽出するといったアプローチが取られる。
具体的な例として以下のようなものがある。
強化学習(きょうかがくしゅう、reinforcement learning)とは、ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。環境はマルコフ決定過程として定式化される。代表的な手法としてTD学習やQ学習が知られている。
強化学習とは、試行錯誤を通じて「価値を最大化するような行動」を学習する 手法
あらかじめ正しい答えが分かっていなくても(=教師データが存在しない) 学習が可能
深層学習を用いた強化学習のことを深層強化学習(deep reinforcement learning)という
強化学習という名前は、Skinner博士の 提唱した脳の学習メカニズムである オペラント学習に由来する
Skinner博士は、スキナー箱と呼ばれる ラット実験によって、「特定の動作に 対して報酬を与えると、その動作が 強化される」ことを発見し、これを オペラント学習と呼んだ (1940年頃)
ラベルありの例とラベルなしの例をどちらも扱えるようにしたもので、それによって近似関数または分類器を生成する。
トランスダクション(トランスダクティブ推論)
観測された具体的な(訓練)例から具体的かつ固定の(テスト)例の新たな出力を予測しようとする。
関連する複数の問題について同時に学習させ、主要な問題の予測精度を向上させる。
能動学習アルゴリズムは、予算に基づいて限られた入力のセットに対して所望の出力(訓練ラベル)にアクセスし、訓練ラベルを取得する入力の選択を最適化する。インタラクティブに使用される場合、これらはラベリングのために人間のユーザーに提示することができる。強化学習アルゴリズムは、動的な環境で正または負の強化の形でフィードバックを与えられ、自動運転車や人間の対戦相手とゲームをするための学習に使用される。機械学習における他の専門的なアルゴリズムには、コンピュータプログラムに自然言語文書のセットを与え、類似したトピックをカバーする他の文書を見つけるトピックモデリングがある。機械学習アルゴリズムは、密度推定問題において、観測不可能な確率密度関数を求めるために使用することができる。メタ学習アルゴリズムは、過去の経験に基づいて独自の帰納バイアスを学習する。発達ロボティクスでは、ロボット学習アルゴリズムは、カリキュラムとも呼ばれる学習経験のシーケンスを独自に生成し、自己誘導型の探索や人間との社会的相互作用を通じて、新しいスキルを累積的に獲得する。これらのロボットは、能動的学習、成熟、運動相乗効果、模倣などの誘導メカニズムを使用する
機械学習システムによっては、人間の直観によるデータ解析の必要性を排除しようとしているが、人間と機械の協調的相互作用を取り入れたものもある。しかし、そもそもシステムのデータ表現方法やデータの特徴を探る機構は、人間が設計したものであり、人間の直観を完全に排除することはできない。
機械学習とデータマイニングは交差する部分が大きく、技法も同じなので混同されることが多いが、次のように定義できる。
機械学習の目的は、訓練データから学んだ「既知」の特徴に基づく予測である。
データマイニングの目的は、それまで「未知」だったデータの特徴を発見することである。
この2つは、さまざまな面でオーバーラップしている。データマイニングは、機械学習の技法を使うが、その目的は若干異なることが多い。一方、機械学習もデータマイニングの技法を「教師なし学習」として、あるいは学習者の正確性を向上させる前処理として用いる。2つの研究領域は、ECML PKDD という例外はあるが、基本的に学会も学術誌も別々である。それらの間の混同の最大の原因は、それらの基本的前提に由来する。機械学習では、既知の知識を再生成できるかどうかで性能を評価するが、データマイニングではそれまで「未知」だった知識を発見することが重視される。したがって、既知の知識によって評価するなら「教師なしの技法」よりも「教師ありの技法」の方が容易に優れた結果を示すことができる。しかし、典型的なデータマイニングでは、訓練データが用意できないので、「教師ありの技法」を採用することができない。
機械学習アルゴリズムとその性能についての分析は、理論計算機科学の一分野であり、計算論的学習理論と呼ばれている。訓練例は有限であるのに対して、未来は不確かであるため、学習理論は一般にアルゴリズムの性能を保証できない。その代わりに、性能の確率的範囲を与える。 Wassily Hoeffdingによるヘフディングの不等式など統計的学習理論という表現もある。
それに加えて、学習の時間複雑性と実現可能性についても研究している。計算論的学習理論では、多項式時間で終了する計算を実現可能とみなす。
機械学習と統計学は、多くの点で似ているが、使用する用語は異なる。
x \backsim p(x|\widehat{\theta})
統計的機械学習とは、機械学習のうちデータの確率的な生成規則を学習するもの を指す。
統計学は母集団と標本、そこに存在する確率分布に着目した方法論である。統計的機械学習ではデータが母集団から確率的に得られると考え、データの生成過程を確率分布を用いてモデル化し、実際のデータに基づいてモデルの学習(あるいはモデル選択自体の学習)をおこなう。母集団からデータが得られる、母集団からのサンプリングによってデータが生成されると解釈できるため、統計的機械学習のモデルは生成モデル・統計モデルとも呼ばれる。
標本に基づいた母集団(パラメータ)の推定・選択は統計学において長く研究され、多くの理論が存在する。統計的機械学習における学習はまさに母集団の推定・選択であるため、統計学の理論が機械学習に適用できる。学習の収束や汎化性能など様々な機械学習の課題が統計学の知識体系を用いて研究されている。
統計的機械学習の例としては、ニューラルネットワークにおける生成モデル、例えば自己回帰型生成ネット、変分オートエンコーダー(VAE)、敵対的生成ネットワーク(GAN)などが挙げられる。これらのモデル(=母集団)から実際にサンプリングすれば画像や音声といったデータが生成できるため、特にニューラルネットワークの分野では2010年代後半に非常によく研究され大きな成果をあげている(WaveNet、VQ-VAE-2、BigGANなど)。
多くの機械学習手法はデータに対するモデル出力の誤差を定義し、誤差を最小化するようにパラメータの更新(学習)をおこなう。誤差を計算する関数、すなわち損失関数を最小化する学問体系は応用数学において数理最適化(解かれる問題は最適化問題)と呼ばれる。
例えばニューラルネットワークでは損失関数に対して微分をおこなう勾配法(確率的勾配降下法など)で学習がしばしばおこなわれる。勾配法による最適化が最適解に収束するか否かは数理最適化の理論によって研究される。また用いられる最適化法によってニューラルネットワークに課される制約も異なり、勾配法を用いるには連続する関数適用がすべて微分可能である(バックプロパゲーションが可能である)ことが求められる(生成モデルのサンプリングに強く制約を与える)。
決定木を予測モデルとして使用した学習であり、アイテムについての観測をそのアイテムの目標値についての結論とマッピングする。具体例としてID3やRandom forestがある。
大規模データベースにおける変数間の興味深い関係を発見するための技法。
階層的な非線形変換からなるネットワーク。一般に誤差逆伝播法で学習される。非線形性による高い表現能力をもち、分類・回帰・生成など様々なタスクに用いられる。
遺伝的プログラミング (GP)
生物の進化を模倣した進化的アルゴリズムに基づく技法であり、ユーザーが定義したタスクを実行するプログラムを探索する。遺伝的アルゴリズムを拡張・特化させたものである。所定のタスクを実行する能力によって適応度地形を決定し、それによってコンピュータプログラムを最適化させていく機械学習技法である。
帰納論理プログラミング (ILP)
例、背景知識、仮説を一様な表現とし、論理プログラミングを使って学習を規則化する技法である。既知の背景知識と例の集合をコード化して事実の論理データベースとし、全てのポジティブな例を含み、ネガティブな例を全く含まない仮説的論理プログラムを生成する。
サポートベクターマシン (SVM)