交差エントロピー誤差を求める時の入力がなぜOne-Hotベクトルなのか

こんにちは。ゆうせいです。

ディープラーニングの分類問題を学ぶ際、損失関数として交差エントロピー誤差(Cross Entropy Error)が登場します。その際、正解ラベルを必ずOne-Hotベクトル(一つの要素だけが1で、他はすべて0のベクトル)の形で表現するよう指導されます。しかし、なぜわざわざそのような形に変換する必要があるのか、という疑問は自然なものです。本記事では、その理由を情報理論と計算効率の両面から解説します。

結論

  • 単一正解の分類では、正解クラスを1、その他を0とする教師分布を表現できるから
  • One-Hotベクトルを使うと、正解クラスの予測確率だけで誤差を計算できるから

交差エントロピー誤差の式をおさらい

交差エントロピー誤差は、以下の式で定義されます。

latexE=k=1Ktklogyklatex E = -\sum_{k=1}^{K} t_k \log y_klatexE=−∑k=1K​tk​logyk​

ここで、t_k は正解ラベル、y_k はモデルが予測するクラスkの確率です。K はクラスの総数です。

例えば、3クラス分類で正解がクラス2の場合、One-Hotベクトルでは t = [0, 1, 0] と表現されます。一方、クラス2という情報をそのまま t = 2 と書く人もいるでしょう。その違いがなぜ重要なのか、という疑問が本記事の核です。

One-Hotベクトルとは

One-Hotベクトル(ワンホットベクトル)とは、全ての要素が0で、ちょうど一つの要素だけが1になるベクトルです。

3クラス分類の例を示します。

クラス1が正解の場合:t = [1, 0, 0]
クラス2が正解の場合:t = [0, 1, 0]
クラス3が正解の場合:t = [0, 0, 1]

この形式は、自然言語処理や画像分類など、分類タスクの標準的な表現方法になっています。

なぜOne-Hotベクトルなのか:情報理論的理由

情報理論の視点から見ると、One-Hotベクトルを使うことは、分布比較の問題を明確にします。

交差エントロピー誤差の本質は、二つの確率分布の「離れ具合」を測ることです。一つは、正解を完全に知っている分布(理想的な分布)、もう一つは、モデルが予測した分布です。

正解がクラス2の場合、理想的な分布は「クラス2である確率は100パーセント、他は0」という確実な分布です。これをベクトルで表現するなら、[0, 1, 0] となります。

一方、モデルが予測した分布は、ソフトマックス関数の出力 [0.1, 0.7, 0.2] のような、不確実性を含む分布です。

交差エントロピー誤差は、この二つの分布がどれだけ異なっているかを測るための指標なのです。理想的な分布を記号で表すとき、One-Hotベクトルの形式が最も自然で明確なのです。

なぜOne-Hotベクトルなのか:計算上の理由

計算の効率性も重要な理由です。

交差エントロピー誤差の式 E = -Σ t_k log y_k を展開してみましょう。

t = [0, 1, 0]、y = [0.1, 0.7, 0.2] の場合、

E = -(0 × log 0.1 + 1 × log 0.7 + 0 × log 0.2)
= -log 0.7
≈ 0.357

ほとんどの t_k が0なので、1に対応する項だけが計算に寄与します。

もしOne-Hotベクトルを使わず、正解をスカラー値 t = 2(クラス2の番号)で表現するなら、式を書き換える必要があります。

E = -log y_t

つまり、t番目の要素の対数を取るだけ、ということになります。

一見するとこちらの方がシンプルに見えますが、実装上の問題が生じます。

バッチ処理では複数のサンプルを同時に処理します。One-Hotベクトルなら、バッチサイズ N に対して、形状 (N, K) の二次元配列で統一的に計算できます。スカラーのクラス番号を使うと、インデックス処理が複雑になり、コードが読みづらくなるのです。

また、行列演算ライブラリ(NumPyやPyTorch)は、行列同士の積和計算に最適化されています。One-Hotベクトルを使うことで、この最適化を活用できるのです。

One-Hotベクトルを使わない場合

理論上、正解をスカラー値(クラス番号)や、多値表現(複数のクラスに確率を割り当てる形式)で扱うこともできます。

ただし、その場合の問題を見てみましょう。

スカラー値 t = 2 を使う場合、「クラス2が正解」という情報は符号化されていますが、「確率1で正解」という情報が明示されていません。計算式を書くたびに「t番目のクラスに対して」という文脈を心に留めておく必要があります。

複数のクラスに確率を割り当てる場合(例えば t = [0.1, 0.8, 0.1])、これは「クラス2が80パーセント正解」という意味になってしまい、訓練データの表現としては不自然です。教師あり学習では、各サンプルの正解は一意に決まっているはずだからです。

One-Hotベクトルは、この「正解は一意に定まっている」という前提を、最も明確かつ効率的に表現する形式なのです。

具体例で理解する

3クラスの分類タスク(クラスA、クラスB、クラスC)を例にします。

画像を分類する場合、以下のようにデータが与えられます。

正解が「クラスB」のとき、One-Hotベクトルは t = [0, 1, 0]。

モデルの出力(ソフトマックス関数の結果)が y = [0.2, 0.6, 0.2] だったとします。

交差エントロピー誤差は、

E = -(0 × log 0.2 + 1 × log 0.6 + 0 × log 0.2)
= -log 0.6
≈ 0.511

計算では、t_k = 1 の項だけが効いています。つまり、正解クラスの予測確率の対数の負の値が誤差になるわけです。

これは直感的にも理に適っています。正解クラスの予測確率が高いほど(1に近いほど)、対数値は0に近づき、誤差が小さくなります。逆に予測確率が低いほど(0に近いほど)、対数値は負の大きな値になり、誤差が大きくなるのです。

もし One-Hotベクトルを使わず、正解を単に t = 1(0番目ではなく1番目)と書いたら、「1番目のクラスの確率を対数に取る」という計算ルールを暗黙的に想定することになり、式の意味が不透明になります。

情報理論的背景

情報理論では、確率分布 P と Q が与えられたとき、P から Q へのKLダイバージェンス(Kullback-Leibler divergence)が、二つの分布の相違度を測ります。

latexDKL(PQ)=xP(x)logP(x)Q(x)=xP(x)logP(x)xP(x)logQ(x)latex D_{KL}(P||Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} = \sum_{x} P(x) \log P(x) - \sum_{x} P(x) \log Q(x)latexDKL​(P∣∣Q)=∑x​P(x)logQ(x)P(x)​=∑x​P(x)logP(x)−∑x​P(x)logQ(x)

前半の項 Σ P(x) log P(x) は、分布 P のエントロピーであり、固定値です。

後半の項 -Σ P(x) log Q(x) が、交差エントロピアと呼ばれます。

分類問題では、P が正解分布(One-Hotベクトル)で、Q がモデルの予測分布(ソフトマックス出力)です。

KLダイバージェンスを最小化することは、P のエントロピー部分を除けば、交差エントロピーを最小化することと等価です。つまり、交差エントロピー誤差を最小化することは、情報理論の観点からみて、モデルの予測分布を正解分布に近づける最適な目標なのです。

この枠組みの中で、正解を One-Hotベクトルで表現することは、「正解の確率分布は、その一つのクラスに確率1、それ以外に確率0」という数学的に厳密な表現になるのです。

まとめ

交差エントロピー誤差を求める際に One-Hotベクトルを使う理由は、以下の三点にまとめられます。

情報理論的には、正解を確率分布として表現するのに、最も自然で明確な形式である。計算効率の観点から、バッチ処理や行列演算ライブラリの最適化を活用できる。KLダイバージェンスの最小化という最適化の枠組みの中で、One-Hotベクトルが理論的に正当性を持つ。

One-Hotベクトルは、単なる「慣習」ではなく、情報理論と計算効率の両面で根拠を持つ表現方法なのです。

次のステップとして、実装で one-hot 変換がどのように行われているかを確認したり、KLダイバージェンスと交差エントロピーの数学的関係を学んだりすることをお勧めします。その学習を通じて、分類タスクの目的関数をより深く理解できるようになるでしょう。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。