VC次元——パラメータ数では測れない複雑度

7.9 Vapnik–Chervonenkis Dimension

AIC、BIC、MDL——ここまで登場したモデル選択基準はどれも「パラメータの個数」を複雑度の代わりに使っていた。 しかし本当に「パラメータ数 = 複雑度」と言えるだろうか?

たった1個のパラメータを持つ関数が、無限の柔軟性を秘めているとしたら—— VapnikとChervonenkisが提案したVC次元は、この問いに幾何学的な答えを与える。

パラメータ数は複雑度ではない

機械学習で「複雑度」というと、つい「パラメータがいくつあるか」と数えたくなります。 線形モデルなら係数の数、ニューラルネットワークなら重みの数、というように。 AIC、BIC、MDLはどれもこの考え方の上に乗っています。

しかし、ここに恐ろしい反例があります。関数$f(x;\alpha) = \mathrm{sign}(\sin(\alpha x))$を考えてください。ここで $\mathrm{sign}(\cdot)$ は 中身が正なら+1、負なら−1を返すだけの単純な符号関数です。 この関数の パラメータはたった1個 のαだけ。

1パラメータの正弦関数がαを大きくすると任意の符号パターンを実現するアニメーション

アニメーションが示すように、αを大きくしていくと sin 曲線は細かく振動し始め、 どんな符号パターン(青と赤の割り当て)にも合わせることができます。 αを十分大きく取れば、1次元上のどんな有限個の点に対しても、 +1と−1の 好きな割り当てを実現 してしまうのです。

$$f(x;\alpha) = \mathrm{sign}(\sin(\alpha x))$$

αという 1個 のパラメータだけで、任意の点列の任意のラベル付けが実現できる—— これが衝撃のポイントです。つまり「パラメータ数=複雑度」という素朴な等式は壊れています。

本当に必要なのは、ある関数の集まりが どれだけ多様なラベル付けを実現できるか という、 もっと本質的な能力の測り方です。VC次元はまさにこの問いに答えます。 「点に+1/−1を割り当てる多様性」を直接数えにいく、という発想です。

Shattering(粉砕)という発想

VapnikとChervonenkisが採った戦略はこうです。「関数たちの複雑度を直接測るのは難しい。 だから、それらの関数が 点をどう分類できるか を観察しよう」。

ここで登場するのが shattering(粉砕) という概念です。 具体的なイメージを先に持つために、まず「直線分類器の集まり」—— 平面に1本の直線を引き、片側を+1、もう片側を−1とするルール全体——を念頭においてください。 この 関数たちの集まり のことを以降「関数クラス $\mathcal{F}$」と呼びます。

平面上の3点が直線によって全8パターンshatterされるアニメーション

平面上に3点を一般の位置(一直線上にない)に置くと、その3点に対する$2^3 = 8$ 通りのラベル付けすべてを、ある直線で実現できます。 アニメーションが示すように、直線が移動することで8通りのどのパターンにも対応できる。 つまり 3点はshatterされる

その上で定義です。関数クラス $\mathcal{F}$ が、 点の集合 $S = \{x_1, x_2, \ldots, x_n\}$shatterする とは、Sの点に対する $2^n$ 通りすべてのラベル付けについて、 それを完全に再現する関数が $\mathcal{F}$ の中に少なくとも1つ 存在すること、と定義されます。

$$\mathcal{F} \text{ が } S \text{ をshatterする} \iff \forall \, \text{labeling} \in \{-1, +1\}^{|S|}, \; \exists f \in \mathcal{F} \text{ s.t. } f(x_i) = \text{label}_i$$

この式の二段構えに注目してください。「すべて のラベル付け($\forall$)に対して、 それを実現する関数が $\mathcal{F}$ の中に少なくとも1つ存在する$\exists$)」という形になっています。 「すべて」と「少なくとも1つ」の組合せこそが、shatterの厳しさを生んでいます。

しかし4点になると話が変わります——次のセクションで確認しましょう。

4点はshatterできない——VC次元の確定

3点まではうまくいきました。では4点はどうでしょうか。

4点を平面上に「一般の位置」に置く方法は本質的に2通りあります。凸位置(4点が四角形をなす)と非凸位置(3点が三角形をなし、1点がその内部に入る)。 どちらの場合も、直線では実現できないラベル付けが存在します。

4点を凸配置と非凸配置の両方で示し、直線で分離できないラベル付けが存在することを示すアニメーション

たとえば凸位置で、対角の2点を+1、もう一方の対角2点を−1とする「XORパターン」。 1本の直線でこの2組を分離することは不可能です。 直線の片側に+の2点を集めようとすると、必ず−のうち1点も同じ側に入ってしまう。 アニメーションで直線がどんな角度を試しても、赤いリングがついた誤分類点が消えないことを確認してください。

つまり、線形分類器のクラスは 3点はshatterできるが、4点はshatterできない。 このとき、

$$h(\text{線形分類器 in } \mathbb{R}^2) = 3$$

と書きます。これが VC次元 $h$ の定義です。

VC次元 = 関数クラスがshatterできる最大の点数。

$$h(\mathcal{F}) = \max \{\, n : \exists S \text{ with } |S|=n, \; \mathcal{F} \text{ shatters } S \,\}$$

ここで大切なのは「どこかに shatterできるn点配置が1つでも 見つかればOK」ということ。すべての n点配置でshatterできる必要はありません。 たとえば一直線上に並んだ3点は、線形分類器ではshatterできませんが、 一般の位置に置いた3点ならshatterできる。だから「3点shatter可」と認定されます。 あくまで「達成可能な最大点数」がVC次元なのです。

一般に、$\mathbb{R}^p$ 上の線形indicator関数$I(\beta_0 + \beta^\top x > 0)$ のVC次元は $p+1$ です。

VC次元の計算例

VC次元の感覚を掴むため、いくつかの関数クラスでその値を確認しましょう。

3つの関数クラス(区間、直線、sin関数)のVC次元を視覚的に比較するアニメーション

アニメーションの3つのパネルが示すように、関数クラスによってVC次元は大きく異なります。

例1: 区間indicator関数

$$\mathcal{F} = \{ I(a \leq x \leq b) : a,b \in \mathbb{R}\}$$
(1次元)VC次元 = 2。任意の2点なら、両方+、片方+、両方−の4パターンを区間でカバーできる。 3点並んだ場合、中央−両端+のパターンは1区間では作れない(区間は連結だから)。

例2: $\mathbb{R}^p$ 上の線形indicator

$$\mathcal{F} = \{ I(\beta_0 + \beta^\top x > 0)\}$$
VC次元 = $p+1$。直線、平面、超平面という幾何が次元に比例。

例3: 正弦関数の符号

$$\mathcal{F} = \{ \mathrm{sign}(\sin(\alpha x)) : \alpha > 0 \}$$
VC次元 = 無限大。Section 1で見たとおり、αを大きくすれば任意の有限点をshatterできる。パラメータ数は1なのに

この最後の例こそが「パラメータ数 ≠ 複雑度」の決定的証拠です。 VC次元はパラメータ数とは独立に、関数クラスの真の柔軟性を捉えます。

$$h(\text{intervals on } \mathbb{R}) = 2, \quad h(\text{halfspaces in } \mathbb{R}^p) = p+1, \quad h(\{\mathrm{sign}\,\sin(\alpha x)\}) = \infty$$

VC次元による汎化誤差の上界

VC次元が単なる「面白い概念」で終わらないのは、これが 汎化誤差の上界 を与えるからです。

訓練誤差 $\overline{\mathrm{err}}$ と 真の予測誤差 $\mathrm{Err}_{\mathcal{T}}$ の差は、 VC次元 $h$ とサンプル数 $N$ で抑えられます。 「失敗確率」を表す小さな数 $\eta$ を1つ決めておきます (たとえば $\eta=0.05$)。 すると 確率 $1-\eta$ 以上 で、次の不等式が成り立ちます:

$$\mathrm{Err}_{\mathcal{T}} \leq \overline{\mathrm{err}} + \frac{\epsilon}{2}\!\left(1 + \sqrt{1 + \tfrac{4\,\overline{\mathrm{err}}}{\epsilon}}\right)$$

ここで複雑度項 $\epsilon$ は:

$$\epsilon = a_1 \cdot \frac{h\,[\log(a_2 N / h) + 1] - \log(\eta/4)}{N}$$

$a_1, a_2$ は定数なので、形だけ見れば十分です。$\epsilon$VC次元 $h$ に比例して大きく、 サンプル数 $N$ が大きいほど小さく なります。 つまり「複雑なモデルほどペナルティが重く、データが多いほどペナルティが軽い」という直感そのものです。

VC次元の増加に伴う訓練誤差・複雑度ペナルティ・上界の3曲線が最適VC次元で釣り合うことを示すアニメーション

アニメーションが示すように、訓練誤差(シアン)はVC次元が増えるほど下がりますが、 複雑度ペナルティ(赤)は急増します。その和である上界(黄)はU字型になり、 ある最適なVC次元で最小値を取ります。

ここから生まれるのが 構造的リスク最小化(SRM) の戦略です。 VC次元が $h_1 < h_2 < h_3 < \cdots$ となるネストされたモデル族を用意し、 訓練誤差 + 複雑度ペナルティが最小になるモデルを選ぶ。 AIC・BIC・MDLと似た形ですが、「パラメータ数」ではなく「VC次元」を使う点が本質的な違いです。

$$\mathrm{Err}_{\mathcal{T}} \leq \overline{\mathrm{err}} + \underbrace{\frac{\epsilon}{2}\!\left(1 + \sqrt{1 + \tfrac{4\,\overline{\mathrm{err}}}{\epsilon}}\right)}_{\text{複雑度ペナルティ}}, \qquad \epsilon \propto \frac{h \log(N/h)}{N}$$

訓練誤差を下げるためにモデルを複雑にすると $h$ が増え、 ペナルティが膨らみます。バランスが取れる最適な複雑度を探すのがSRMの本質です。

VC次元の意義と限界

VC次元理論の威力と限界の両方を、最後に確認しておきましょう。

VC次元という複雑度の物差しが、線形・カーネル・ニューラルネットなど多様なモデルに適用される様子のアニメーション

アニメーションが示すように、VC次元は 線形分類器からSVM、ニューラルネットワークまで、あらゆるモデルに適用できる「普遍的な物差し」です。

威力:

限界:

それでも、VC次元は 「複雑度とは何か」を初めて数学的に定式化した という意味で、 機械学習理論の出発点となりました。AdaBoost、SVM、深層学習などの後の発展は、 すべてこのフレームの上で議論されています。

$$\text{パラメータ数} \;\neq\; \text{VC次元} \;\approx\; \text{真の複雑度}$$

VC次元は、学習理論の中で「複雑度」という曖昧な概念に初めて明確な数学的意味を与えました。

ところで——最悪ケースの上界はわかったとして、実際に手元にある有限のデータで、汎化誤差をピタリと推定するにはどうすればいい?理論的なペナルティではなく、データそのものに「予測誤差を語らせる」方法はないのでしょうか?

次のセクションでは、まさにその問いに答える強力な手法——クロスバリデーションに進みます。