エンベディング: カテゴリ入力データ

カテゴリデータとは、有限の選択肢のセットから 1 つ以上の離散アイテムを表す入力特徴を指します。たとえば、ユーザーが視聴した映画のセット、ドキュメント内の単語のセット、人物の職業などがあります。

カテゴリデータは、スパース テンソル(最もゼロでない要素がほとんどないテンソル)で効率的に表されます。たとえば、映画のレコメンデーション モデルを作成する場合、可能性のある各映画に一意の ID を割り当て、図 3 に示すように、各ユーザーが視聴した映画のスパース テンソルで各ユーザーを表すことができます。

映画のおすすめに関する問題のサンプル入力。

図 3. 映画のおすすめの問題に関するデータです。

図 3 のマトリックスの各行は、ユーザーの映画視聴履歴をキャプチャする一例であり、各ユーザーは視聴可能なすべての映画の一部しか視聴しないため、スパース テンソルとして表されます。最後の行はスパース テンソル [1, 3, 999999] に対応し、映画アイコンの上に表示されている語彙インデックスを使用しています。

同様に、単語、文、ドキュメントをスパース ベクトルとして表すこともできます。この場合、ボキャブラリの各単語は、推奨事項の例の映画に似た役割を果たします。

機械学習システム内でこのような表現を使用するには、各スパース ベクトルを数値のベクトルとして表す方法が必要です。これにより、意味的に類似したアイテム(映画や単語)のベクトル空間内の距離が類似します。しかし、単語を数字のベクトルとして表現するにはどうすればよいでしょうか。

最も簡単な方法は、語彙に含まれているすべての単語に対応するノード(またはデータ内に出現するすべての単語のノードを含む)を持つ巨大な入力レイヤを定義することです。500,000 個の一意の単語がデータに含まれている場合は、500,000 個のベクトルを持つ単語を表し、各単語がベクトルのスロットに割り当てられます。

「1247」をインデックスに割り当て、次に馬をフィードする場合、ネットワークに 1 を、1247 番目の入力ノードに 0 をすべてコピーします。このような表現は、ゼロ以外の値を持つインデックスが 1 つだけであるため、ワンホット エンコーディングと呼ばれます。

一般的に、ベクトルにはより大きなテキスト チャンク内の単語数が含まれる場合があります。これは「単語の袋」と呼ばれています。Bag of Words ベクトルの場合、500,000 個のノードの一部はゼロ以外の値になります。

ただし、ゼロ以外の値を指定すると、単語あたり 1 ノードで非常にスパースな入力ベクトル、つまりゼロ以外の値が比較的大きい非常に大規模なベクトルが得られます。スパース表現には、モデルを効率的に学習させることが困難ないくつかの問題があります。

ネットワークのサイズ

巨大な入力ベクトルは、ニューラル ネットワークの巨大な重みを意味します。語彙に M 語が含まれ、ネットワークの最初のレイヤの入力の上に N ノードがある場合、MxN 重みがそのレイヤでトレーニングします。重み付けが多いと、さらに問題が生じます。

  • データ量。モデルの重みが大きいほど、効果的にトレーニングする必要があるデータが多くなります。

  • コンピューティング量。重みが大きいほど、モデルのトレーニングと使用に必要な計算量が増えます。ハードウェアの性能を超えることは簡単です。

ベクトル間の有意義な関係の欠如

RGB チャネルのピクセル値を画像分類器にフィードする場合は、「閉じる」の値について説明する必要があります。赤みがかった青は純粋な青に近く、意味的にもベクトル間の幾何学的な距離にも役立ちます。しかし、インデックス 1247 に 1 のベクトルが「馬」の場合、インデックス 50,430 で「アンテロープ」を表すベクトルに近づくことはありません。

ソリューション: エンベディング

こうした問題を解決するには、エンベディングを使用します。これにより、スパースなベクトルが低次元の空間に変換され、セマンティックな関係が保持されます。埋め込みについては、このモジュールの以降のセクションで、直感的に、概念的に、プログラムで説明します。