ゼロからAI理論を再構築する

ー 文系エンジニアがAIの内部構造をゼロから理解する記録 ー

機械学習の骨組み:データ、モデル、損失関数

機械学習のアルゴリズムはいくつもありますが、分解してみると構造は意外と同じです。「データ」「モデル」「損失関数」。この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) \]

損失関数の選び方によって「何を間違いとみなすか」が変わります。二乗誤差を使えば大きなハズレに厳しくなり、交差エントロピーなら確率分布のズレに敏感になる。同じデータ、同じモデルでも、損失関数が違えば学習の方向は変わります。地味に見えて、実はかなり設計判断を問われる部分です。

まとめ

データを観測し、モデルで仮説を立て、損失関数で間違いを測って修正する。機械学習はこの繰り返しです。

新しい論文やライブラリに触れるとき、「データの扱い方を変えたのか」「モデル構造を変えたのか」「損失関数を工夫したのか」と分けて考えると、何が新しいのかが整理しやすくなります。次回は、この仕組みを実際に動かすエンジンにあたる「最適化」について書く予定です。


参考文献