1行定義
ワンホットベクトルとは、語彙やカテゴリの数だけ次元をもち、該当する1つの要素だけが1で、残りの要素がすべて0のベクトルのことです。
くわしく
ワンホットベクトルは、ものの種類を数値で表すときの最も素朴な方法です。「ワンホット(one-hot)」は、1か所だけが「点灯している」という意味です。
作り方
自然言語処理では、まず扱う単語の一覧(語彙)を決め、各単語に番号を振ります。語彙が「犬・猫・車」の3語なら、犬は(1, 0, 0)、猫は(0, 1, 0)、車は(0, 0, 1)と表します。次元数は語彙の数と同じで、各ベクトルで1になる要素は1つだけです。
自然言語処理以外でも使います。表形式のデータで「都道府県」のようなカテゴリの列を数値に変えるときや、分類問題の正解ラベルを表すときです。分類では、正解ラベルのワンホットベクトルと、ソフトマックス関数の出力から交差エントロピーを計算します。
弱点
- 高次元で疎:語彙が数万語あれば、数万次元のベクトルになります。要素のほとんどが0で、記憶や計算の効率がよくありません。
- 意味の近さを表せない:異なる単語のベクトルは互いに直交します。そのため、「犬」と「猫」の近さも、「犬」と「車」の近さも同じになります。
分散表現との関係
これらの弱点を補うのが、単語を数百次元ほどの密なベクトルで表す分散表現(単語埋め込み)です。word2vecなどは、意味の似た単語が近いベクトルになるように学習します。
ただし、ワンホットベクトルが不要になったわけではありません。ニューラルネットワークでは、ワンホットベクトルに埋め込みの重み行列を掛けると、その単語に対応する行が取り出されます。つまり、分散表現へ変換する入口の役割をもちます。また、文書に含まれる単語のワンホットベクトルを足し合わせると、出現回数を数えたBoWの表現になります。
覚え方
「1か所だけ点灯、残りは消灯」と覚えます。
G検定での出題
出題のされ方
語彙の数と次元数の関係、疎で高次元になる点、どの2語も直交して意味の近さを表せない点、分散表現(単語埋め込み)との違いや変換の関係が問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| ワンホットベクトルこのページの用語 | 語彙やカテゴリの数だけ次元をもち、該当する1つの要素だけが1で、残りの要素がすべて0のベクトル |
| 分散表現 | 単語などの意味を、多数の要素に情報を分散させた数百次元程度の実数ベクトルで表す表現方法 |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
語彙が5万語のとき、各単語のワンホットベクトルは5万次元になり、0でない要素は1つだけになる。
答えを見る
答え ◯ 正しい
次元数は語彙の数と同じです。ほとんどの要素が0の疎なベクトルになり、語彙が増えるほど次元も増えます。
-
ワンホットベクトルでは、文書中での単語の出現回数を各要素に入れるため、よく使われる単語ほど大きな値をもつ。
答えを見る
答え × 誤り
ワンホットベクトルの要素は0か1だけで、頻度は反映しません。文書中の単語のワンホットベクトルを足し合わせて出現回数を数えると、BoWの表現になります。
-
単語のワンホットベクトルに単語埋め込みの重み行列を掛けると、その単語に対応する埋め込みベクトルだけが取り出される。
答えを見る
答え ◯ 正しい
1の位置に対応する行(行列の向きによっては列)だけが残るためです。実際の実装では、掛け算をせずにその行を直接取り出して計算を省きます。