Zenn
🌊

[個人的用メモ]機械学習におけるone-hotとは?

2025/03/31に公開

one-hotとは?

one-hotとは、カテゴリをベクトルに変換する方法の一つ。
特に分類ラベルを数値として扱うために使います。

実例

例えば:クラスが3つあるとする

バナナ = 0
リンゴ = 1
メロン = 2

上記をone-hot 表現で表現すると以下になります。

バナナ = [1, 0, 0]
リンゴ = [0, 1, 0]
メロン = [0, 0, 1]
  • 各ラベルは「ベクトルの中でそのクラスだけ 1、他は 0」という形になります。
  • 情報の損失がなく、クラス間に誤った順序関係を持たない。(例えばバナナ = 0 リンゴ = 1 メロン = 2のままトレーニングに使用すると、0と1は0と2よりも近いため、バナナはメロンよりリンゴに近いと誤認される可能性がある。)
  • モデルに「これはカテゴリだよ」と正確に伝えることも出来ます。

なんで必要?

モデルが出力する値(たとえば [0.2, 0.7, 0.1] などの確率)と、 正解ラベルを比べるときに使います。
この出力を正解ラベルと比べる必要がありますが、損失関数によってラベルの形式が異なるため、one-hotが必要になる場面と不要な場面があります。

いつ必要?

  • MSELoss を使うとき
    → 出力とターゲットを「同じ形のベクトル」で比較するため、labelも one-hot にする必要あり

  • 複数のラベルを同時に持つ(マルチラベル分類)とき
    → 例:猫にも犬にも写っている画像 → [1, 1, 0, 0] などの形式が必要

Discussion

ログインするとコメントできます