HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

統計的学習理論でのコトバの定義が分かりやすかったのでまとめ

 

 

follow us in feedly

はじめに

青いシリーズの統計的学習理論

統計的学習理論 (機械学習プロフェッショナルシリーズ)

統計的学習理論 (機械学習プロフェッショナルシリーズ)

こいつに書かれているコトバの定義がわかり易かったので、まとめておきます。 機械学習が何たるものであるかを端的に表現することができるので、共通の認識になると良いな。

コトバの定義

データ

観測によって得られる情報。既知の情報だけでなく将来に渡って得られる情報のことも指します。 一般には数値で表現されることが多く、多くの場合はベクトルや行列で表現されます。近年はもっと多次元の配列(テンソルと広く呼ばれている)としてデータを表すようになってきました。

学習データ

データの中でも機械学習モデルの学習に利用するデータを「学習データ」と言います。あるいは「訓練データ」とか「training data」などとも呼ばれます。

検証データ

学習途中段階、あるいは学習後のモデルの性能評価に使われるデータです。「validation data」と表現される場合もあります。多くの場合は機械学習モデルの正則化パラメータ等、学習の際に人間が設定しなければならないハイパーパラメータと呼ばれる数値の選定に使われます。

テストデータ

学習後の機械学習モデルの汎化性能を見積もる際に使われます。想定している状況は、「将来手に入るであろうデータに対しても上手く対応できるモデルであるか否かを試す」という立場であるため(もちろん、試す以上は既に手に入っているデータを使うのだが…)、予め学習データと検証データの何れからも完全に除外されたデータを使う必要があります。

テストデータの結果を真髄に受け止めず、このテストデータに対してモデルの調整をし始めてしまったら、テストデータに対して過剰適合したモデルが出来上がってしまうので注意が必要です(それで良いモデルができたと思っても糠喜びである)。

入力データと出力データ

機械学習モデルに入力するデータのことを入力データと呼び、機械学習モデルから出力されるデータのことを出力データと呼びます。入力データ $x$ で出力データ $y$ のときデータをこれらの組で $(x, y)$ と表します。特に $y$ が離散的で有限集合に値を取る場合はラベルと呼ばれます。 $y \in \{0, 1\}$ というケースでは特に2値ラベルと呼ばれ、要素の数が 3以上になると多値ラベルと呼ばれます。

入力 $x$ が取りうる空間を入力空間 $\mathcal X $ と呼びます。出力 $y$ が取りうる集合を $\mathcal Y$ と表します。

機械学習モデル

仮説

入力空間 $\mathcal X$ から出力集合 $\mathcal Y$ への関数

$$ f : \mathcal X \rightarrow \mathcal Y $$

を仮説と呼びます。急に抽象的になりましたが、要は何らかの機械学習モデルのことを指しています。下記の仮説集合と加えて考えると非常に分かりやすいはずです。

仮説集合

仮説 $f$ の集合を仮説集合 $\mathcal F$ と呼び、機械学習のアルゴリズムとは仮説集合 $\mathcal F$ の中から適切な仮説 $f$ を選び出す処理と言えます。

例:入力 $x \in Rd$ の機械学習モデルを $f(W, x) = Wx $ と置いた場合、 仮説集合は行列 $W$ で表現できるような線形変換全体を表し、

$$ \mathcal F = \{x \mapsto Wx \mid W\in R^{D \times d} \} $$

という集合の中から何らかの学習アルゴリズムによって具体的に $W$ を定めるということになります。

ニューラルネットワークの構造を決めたり、SVMでカーネルを定めたりすることが仮説集合を決めること(どのような仮説が含まれるか、学習結果としてどんなものが選ばれうるかを規定)に相当し、学習アルゴリズムを走らせることでパラメータを定め、学習結果を得ることが仮説集合の中から仮説を一つ選び出す操作になります。

「仮説」という表現はなかなか良いなと思っていて、確かに学習結果は正しい姿を保証しているわけでも何でも無い、有限データと勝手な仮定のもとで導いただけのものであるので、それを端的に表しているなと感じています。

損失

損失関数

損失関数とは、端的に言えば仮説の良し悪しを測るための尺度です。特に値が小さいほど、良い仮説であると言えるような尺度を導入します。例えば、 仮説を $f : \mathcal X \rightarrow \mathcal Y$ が入力 $x$ に対して $y'_i = f(x_i)$ という出力をするとしましょう。実際の入出力データが $(x_i, y_i)$ であるとすれば、下記のような損失関数を選ぶことができます。

$$ \rm {loss} (y', y ) = \sum_i (y'_i - y_i)^2 $$

という計算式は実際の出力データと仮説の予測出力との二乗誤差を損失関数と定めたことになります。

損失関数はどうすれば良い仮説を選んだと言えるのかを考え、機械学習モデルの設計者が選ぶものであることに注意してください。また、計算の都合上で本来測りたいはずの尺度を取り扱うのが困難な場合(例えば微分ができないなど)、都合の良いような関数に少しだけ変更しつつ本来の目的が失われないような改造を加えたりします。そういう場合には「代理損失」などと強調したコトバが使われるケースもあるようです。

予測損失

機械学習の目的は適切な損失関数のもと、未知の新たなデータ(テストデータ)に対する損失が小さくなるような仮説を手に入れることです。 ここで、未知の新たなデータに対する損失を「予測損失」と言います。ここで仮説 $f$ に対する、予測損失 $R(f)$ はテストデータ $(X, Y)$ の分布を $p(X, Y)$ として、下記で定義されます。

$$ R(f) = \mathbb E_{p(X, Y)} [{\rm loss}(f(X),Y)] $$

すなわち、テストデータの損失のテストデータの分布に関する期待値になります。テストデータは未知の新たなデータを想定しており、当然、我々はその分布に関する完全な情報を持ち合わせていないことに注意しましょう。

経験損失

一方で、訓練データが手元に $N$ 個あり、各1つ1つのデータ $(X_i , Y_i)$が $1/N$ の確率で生起するような(実に都合の良い)ケースを考えると、そのような訓練データの分布 $q(X, Y)$ として、

$$ \hat R(f) = \mathbb E_{q(X, Y)} [{\rm loss}(f(X), Y)] = \frac{1}{N} \sum_i {\rm loss}(f(X_i), Y_i) $$

と表すことができます。これを経験損失と言い、通常は経験損失を用いて学習を行います。経験損失と予測損失と最たる違いは、期待値を計算する際の分布であり、もしもテストデータと訓練データの分布が全く同じものであるとするならば、経験損失と予測損失は期待値の意味で一致し、不偏推定量となります。