教師あり学習

**教師あり学習**（きょうしありがくしゅう, ）とは、機械学習の手法の一つである。

既知の「問題」に対する「解答」を「教師」が教えてくれるという方法であり、「生徒」であるアルゴリズムが未知の「問題」に対応する「解答」を推論する事から名付けられたものである。そのような訓練に用いるデータを、**教師データ**とも呼ぶ。

教師データは人間が用意する必要がある。例えば、正解画像とラベルのセットが教師データに該当する。分野ごとに扱う概念が異なるため自作のデータを用意することが普通であるが、公開されたデータセットも存在する。画像認識については、ImegeNet，MNISTが世界的に有名な公開された教師データ（としても使えるデータ）である。

## 概要
教師あり学習では、未知の確率分布p(\mathbf{x},\mathbf{y})を対象に学習を行う。実応用上は何らかを**入力**()、**出力**()とみなせる事が多く、例えばはに未知の関数を施した値に小さなノイズが載ったものである。アルゴリズムには、p(\mathbf{x},\mathbf{y})に従うとの組(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )が訓練データとして与えられる。アルゴリズムが解くべきタスクは訓練データに属していない（かもしれない）データに対し、条件付き確率分布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 )から、未知のに対応するの分布p(\mathbf{y}\mid \mathbf{x})を当てる事が求められる。このため、アルゴリズムが未知のからp(\mathbf{y}\mid \mathbf{x})（ないしそこから決まる値）を求める操作を**汎化**もしくは**推論**（*inference*）と呼ぶ。タスクによっては「予測」「判断」「認識」等と呼ばれる事もある。

アルゴリズムは未知のデータからに対応するの分布の情報を推測する必要があるが、この推論の為に事前知識として与えられる訓練データにはから推論しなければならないが「解答」としてついている。

### 訓練フェーズと汎化フェーズ
多くの教師あり機械学習のモデルでは、実際の汎化を行う前に**訓練**もしくは**学習**と呼ばれる作業が発生し、機械学習のモデルは「訓練アルゴリズム」と「汎化アルゴリズム」のペアとして捉える事ができる。訓練アルゴリズムは訓練データを入力として受け取り、**パラメータ**と呼ばれる値を出力する。パラメータは直観的には訓練データから有用な情報を引き出した「学習結果」であり、汎化の際にはこの「学習結果」であるを使って汎化を行う。すなわち、汎化アルゴリズムは入力の他にパラメータをも入力として受け取り、p(\mathbf{y}\mid \mathbf{x})（ないしそこから決まる値）を求める。

### 変数の名称
教師あり機械学習において、変数を**説明変数**(*explanation variable*)、を**目的変数**、**目標変数**(*target variable*)、もしくは**標的**(*target*)と呼ぶ。これらは別の名称で呼ばれる事も多く、を**予測変数**(*predictor*)、を**応答変数**（*response variable*）と呼んだり、を**独立変数**（independent variable）、を**従属変数**(*dependent variable*)と呼んだりする事もある。またタスクによってはこれら以外の名称で呼ばれる事もある。

## タスク
教師あり学習に属する代表的なタスクとして回帰と分類がある。教師あり学習において、目的変数が量的変数である場合を'''回帰'''(*regression*)、有限集合に値を取るカテゴリ型変数のである場合を**分類**(*classification*)もしくは**判別**と呼ぶ。

典型的な訓練データ（例題）はベクトル（問題）{\mathbf x}_i とラベル（回答）y_iの組として、({\mathbf x}_1, y_1), ({\mathbf x}_2, y_2), ... のように与えられる。ここで、({\mathbf x}_i, y_i)はi 番目のデータを表し、y_i は0または1の2値を取るのラベルで、{\mathbf x}_i はベクトルを表す。

典型的な訓練データは分類問題ではy_i が離散値を、回帰問題では実数値を取る。

これらのデータに何らかの基準でもっとも合う関数関係 y=f(x) を求める「学習」によって求められることで、未知のデータ {\mathbf x} にに対して、予言 y = f({\mathbf x}) を得ることができる。y=f(x)を分類問題であれば分類器、回帰問題であれば回帰曲線などと称する。

### 回帰
回帰の目標は入力が与えられたとき、p(\mathbf{y}\mid \mathbf{x})に関する情報を予想する事である。典型的には
\mathbf{y}=F(\mathbf{x})+\mathbf{\varepsilon}

のようにが未知の関数の像にランダムなノイズを加えたデータであるケースにおいて、入力からの可能な限り正確な予想値\hat{\mathbf{y}}を出力する事が求められる。なお回帰で扱う目的変数は連続量であり、典型的には実数を複数並べた数値ベクトルである。

他の教師あり機械学習アルゴリズムと同様、回帰アルゴリズムはp(\mathbf{x},\mathbf{y})に従って選ばれた訓練データの集合D=\{(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n )\}をとして受け取る事ができ、これらの訓練データをヒントにして入力に対応するの予想値
\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)は汎化アルゴリズムの出力であり、は期待値を表す。

### 分類
分類タスクでは、事前に定められた有限個のクラスが定められていて、各クラスには、「ネコ」、「イヌ」などの**クラスラベル**（もしくは単に**ラベル**）と呼ばれるクラス名が割り振られている。分類タスクの目的は与えられた入力がのいずれに属するかを当てる事である。

分類タスクを解くアルゴリズムには大まかに「決定論的アプローチ」と「確率論的アプローチ」の２種類があり、前者は分類タスクでは入力が与えられたとき、が属すると思われるクラスラベルを出力するというものであり、損失関数としては典型的には**0-1損失**
L(\hat{y},y)=
\begin{cases}
1 &\text{if } \hat{y}\neq y\\
0 &\text{otherwise}
\end{cases} 

を使う。

一方、後者はクラスラベルを直接出力するのではなく、**確信度**（*confidence score*）\widehat{y_1},\ldots,\widehat{y_k}を出力するというものである。ここで\widehat{y_j}はが番目のクラスに属しているとどの程度確信しているかを表す尺度であり、0\le \widehat{y_j} \le 1と\widehat{y_1}+\cdots+\widehat{y_k}=1を満たす。

確信度を出力させる分類タスクでは、訓練データ(\mathbf{x}_i,\mathbf{y}_i)のも確信度と整合性が取れるように符号化する。すなわち、が番目のクラスに属している場合、\mathbf{y}_i=\mathbf{e}_jとする。ここでは番目の成分が1でそれ以外の成分が0のベクトルである（このように1つの成分だけが1でそれ以外は0となるベクトルを**one-hotベクトル**とい、one-hotベクトルによりデータを表現する事を**one-hot表現** という）。損失関数としては典型的には**[[交差エントロピー]]**
L(\hat{\mathbf{y}},\mathbf{y})=-\sum_ky_k\log \widehat{y_k}
 

を使う。

### 回帰と分類の関係性
確信度を使った分類タスクに対するアルゴリズムを設計する典型的な手法は、回帰タスクのアルゴリズムを流用するというものである。すなわちクラスをone-hotベクトルで符号化した訓練データ(\mathbf{x}_1,\mathbf{y}_1),\ldots,(\mathbf{x}_n,\mathbf{y}_n)を使って回帰タスクのアルゴリズムを訓練し、訓練結果のアルゴリズムを分類タスクに利用するという手法である。ただし、回帰タスク出力\widehat{\mathbf{u}}=(\widehat{u_1},\ldots,\widehat{u_k})は、分類タスクの出力である確信度と違い、0\le \widehat{u_j} \le 1と\widehat{u_1}+\cdots+\widehat{u_k}=1という条件を満たさないという問題が起こる。そこで一旦**[[ソフトマックス関数|ソフトマックス変換]]**
\mathrm{softmax}~:~\mathbb{R}^k\to [0,1]^k, (u_1,\ldots,u_k)\mapsto {1\over \sum_{j=1}^ke^{u_j}}(e^{u_1},\ldots,e^{u_k}) 

をかける事でこの問題を解決する。

逆に確信度を使った分類タスクを回帰タスクに流用する事もでき、この場合は上と同様の理由でソフトマックス変換の逆変換をかける必要がある。

## バイアスと分散のトレードオフ

回帰では、入力に対応するの予測値\hat{\mathbf{y}}=\hat{F}_D(\mathbf{x})を出力する事を求められ、\hat{\mathbf{y}}はの期待値に近いことが望ましく、しかも\hat{\mathbf{y}}のばらつきは小さい方が望ましい。しかし下記に示すようにこの２つの要件はトレードオフの関係にある：

=\hat{F}_D(\mathbf{x})とし、誤差関数を自乗誤差
L(\hat{\mathbf{y}},\mathbf{y})=||\hat{\mathbf{y}}-\mathbf{y}||^2
により定義し、さらに(\mathbf{x},\mathbf{y})\sim pをとは独立に選び、
\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})]
とする。

このとき、予測誤差の訓練データ集合に関する期待値（**期待予測誤差**）
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=バイアスと分散のトレードオフ}}

(\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}}上では回帰の場合について述べたが、確信度を出力する分類でも同様である。

### ベイズ規則
、をそれぞれ回帰や分類といった教師あり学習のタスクに対する損失関数、データ分布とし、関数に関する予測損失をR_L(F)=E_{(x,y)\sim p}[L(F(x),y)] と書き表す。このとき、予測損失の下限
\underset{F}{\mathrm{inf}}R_L(F) 
を損失関数のもとでの**ベイズ誤差**(*Bayes error*)と呼び、下限を達成するを**ベイズ規則**(*Bayes rule*)という。ここで\underset{F}{\mathrm{inf}} は可測関数全体の集合における下限である。

ベイズ規則は理論上の最良の予測関数であるが、実際には確率分布が未知なので、に関する予測損失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}]
である。ここではから定まる条件付き確率分布p(\mathbf{y}\mid\mathbf{x})からランダムにを選んだときの期待値である。|note=自乗損失に関する回帰のベイズ規則}}

関数f(\mathbf{x})=E[\mathbf{y}|\mathbf{x}]を**回帰関数**と呼ぶ事もある。

#### 分類

（確信度ではなくクラスを直接出力するタイプの）分類タスクにおいて、0-1損失関するベイズ規則は以下のようになる：

## 半教師あり学習
半教師あり学習の一種は部分のデータがラベルを付き、部分のデータがラベルを付かないこと。他の状況は、学習の目標はデータのラベルよりも多い場合。例えば、画像のボックスのラベルだけで、分割の役割を果たすこと。

## 注釈

## 出典

## 参考文献

*  
** 同書原著のweb版
*
**：上述の書籍の英語版公式サイト。無料pdfあり。
*
*

## 関連項目
* バックプロパゲーション
* サポートベクターマシン
* ID3
* 単純ベイズ分類器
* 過剰適合
* 事例ベース推論
* ブースティング
* 教師なし学習