機械学習のアルゴリズムはいくつもありますが、分解してみると構造は意外と同じです。「データ」「モデル」「損失関数」。この3つが揃えば、あとは組み合わせ方の違いでしかありません。
個々のアルゴリズムに入る前に、まずこの骨組みを押さえておくと、新しい手法に出会ったときに「結局どこをいじっているのか」が見えやすくなります。
データは世界の断片でしかない
機械学習で扱う「データ」は、数学的には \( d \) 次元空間上の点の集まりです。1つのデータ点はベクトル \( x \in \mathbb{R}^d \) で表されます。画像なら各ピクセルの値が並んだもの、表形式ならカラムごとの数値が並んだものです。
厄介なのは、手元のデータが全体像のごく一部でしかないことです。理論上、データは未知の確率分布 \( P(x, y) \) から生成されたサンプルに過ぎません。 \( x \) が入力(特徴量)、 \( y \) が当てたい正解ラベル。学習とは、限られたサンプルから元の分布 \( P \) がどんな形をしているかを推測する作業にあたります。
データは「世界そのもの」ではなく、世界を覗くための窓です。窓が小さければ見える範囲も限られる。データの量と質がモデルの性能に直結する理由はここにあります。
モデルは仮説の集合
モデルは、入力 \( x \) を受け取って予測値を返す関数の候補一式です。これを仮説空間 \( \mathcal{H} \) と呼びます。一番単純な例として線形モデルなら、以下のように書けます。
\[ \mathcal{H} = \{ f(x) = w^T x + b \mid w \in \mathbb{R}^d, b \in \mathbb{R} \} \]重み \( w \) と切片 \( b \) の組み合わせだけで、すべての候補が決まります。
モデルを選ぶという行為は、「データの裏にある関係はだいたいこういう形だろう」と仮定を置くことです。線形モデルを選べば「直線的な関係がある」と仮定していることになりますし、ニューラルネットワークを選べば「もっと複雑な関係があるかもしれない」と構えていることになります。
ただし表現力を上げれば柔軟になる反面、計算コストやデータ量の要求も上がります。このトレードオフの落としどころが、設計者のセンスが出る部分です。
損失関数が学習の方向を決める
データとモデルがあっても、まだ学習は始まりません。予測がどれだけ外れているかを数値化する仕組みが要ります。損失関数 \( L(f(x), y) \) がその役割を担い、予測値 \( f(x) \) と正解 \( y \) のズレを計算します。
学習の目標は、この損失の期待値を最小にする関数 \( f \) を見つけることです。
\[ \min_{f \in \mathcal{H}} \mathbb{E}_{(x,y) \sim P} [L(f(x), y)] \]ただし真の分布 \( P \) はわからないので、実際には手元の \( n \) 個のサンプルで近似します。
\[ \hat{R}(f) = \frac{1}{n} \sum_{i=1}^{n} L(f(x_i), y_i) \]損失関数の選び方によって「何を間違いとみなすか」が変わります。二乗誤差を使えば大きなハズレに厳しくなり、交差エントロピーなら確率分布のズレに敏感になる。同じデータ、同じモデルでも、損失関数が違えば学習の方向は変わります。地味に見えて、実はかなり設計判断を問われる部分です。
まとめ
データを観測し、モデルで仮説を立て、損失関数で間違いを測って修正する。機械学習はこの繰り返しです。
新しい論文やライブラリに触れるとき、「データの扱い方を変えたのか」「モデル構造を変えたのか」「損失関数を工夫したのか」と分けて考えると、何が新しいのかが整理しやすくなります。次回は、この仕組みを実際に動かすエンジンにあたる「最適化」について書く予定です。