- @ThothChildren
- 2019.1.10
- PV 294
One Hot ベクトル
ー 概要 ー
One Hot ベクトル(One Hot Vector , One-of-K表記法)は、ベクトルの全要素のうち一つだけ1で他は0になっているベクトルをさす.
この章を学ぶ前に必要な知識
条件
- 複数のクラス/単語等をベクトルで表現したいデータがある
効果
- "あるクラスのベクトル"はそのクラスが割り当てられているベクトル要素だけを1としたベクトル
ポイント
- 機械学習の多クラス分類などにおいて一つのクラスを一つのベクトル要素に対応づけOne Hotベクトルの表現を行う
- 自然言語処理でN個の単語がある時もOne Hot Vector表現される
- 仮に1からの整数値を割り当てたクラスラベルを使うと(平均処理等)数値計算時に意味のない数値計算を行なってしまう
解 説
One Hot ベクトル(One Hot Vector , One-of-K表記法)は、ベクトルの全要素のうち一つだけ1で他は0になっているベクトルをさす.
多クラス分類で正解データをクラスで表現するときに、
犬は(1, 0, 0)、猫は(0, 1, 0)、猿は(0, 0, 1)で表現する.この表現方法をOne Hot ベクトルまたはOne-of-K表記法と呼ぶ.
クラスの数とベクトル要素の数が一致する.
他に自然言語処理で単語のベクトルを扱う場面があるが、その際にも単語の数とベクトル要素数を一致させて、apple:(1, 0, 0.....0), banana:(0, 1, 0...0)のように表現して扱う. | One Hotベクトルとは |
One Hot ベクトルの概要 | |
多クラスを表現するのに他の方法として、クラスラベルの値を用いる方法が考えられる.
犬:1, 猫:2, 猿:3のように割り当てることでそれぞれのクラスの値を一つの値で表現するということ.
しかし、この形は用いられない.
機械学習などにおいて内部の計算を行い最後のクラスラベルの値を出力するモデルがあるとする.
内部では色々な処理の計算をするが、例えばクラスの平均を計算するような処理があったとして、犬ラベルと猿ラベルの可能性が高く、その二つの平均(犬ラベルの値1 + 猿ラベルの値3) /2 = 2を計算すると、猫のラベルになってしまうようなことが起きてしまう.
また、似たような別の例を出すと、例えば出力が計算の結果2.2のような小数の値になったときには、どのように値を解釈すべきかわからない.偶然猫を2として、猿を3として割り当てたがこの順番の割り当てには何も意味がなく、従って2.2は猿よりも猫に近いとも言えるわけではない.
仮にトラ:4としていたら、猿よりももっとトラに近い値になっているべきだが、他にも猫に似たクラスがあるとクラスラベルの連続的な整数値ではそれを表現できない.
そのためやはりOne-Hotベクトルのように各クラスが独立になっている表現を使えば、上記のようなケースでも扱えるようになるのである. | なぜクラスラベルの値ではなく、
One-Hot ベクトルを用いるのか |
この章を学んで新たに学べる
Comments