このセクションでは、エンベディングを取得するいくつかの方法と、静的エンベディングをコンテキスト エンベディングに変換する方法について説明します。
次元削減手法
高次元空間の重要な構造を低次元空間で捉える数学的な手法は数多くあります。理論的には、これらの手法のいずれかを使用して、ML システムのエンベディングを作成できます。
たとえば、主成分分析(PCA)は、単語エンベディングの作成に使用されています。バッグ オブ ワード ベクトルなどのインスタンス セットが指定されると、PCA は、単一のディメンションに集約できる相関性の高いディメンションを探します。
ニューラル ネットワークの一部としてエンベディングをトレーニングする
エンベディングは、ターゲット タスクのニューラル ネットワークをトレーニングするときに作成できます。このアプローチでは、特定のシステムに合わせて適切にカスタマイズされたエンベディングが得られます。ただし、エンベディングを個別にトレーニングするよりも時間がかかる場合があります。
一般に、ニューラル ネットワークにサイズ d の隠れ層を作成して、エンベディング レイヤとして指定できます。ここで、d は、隠れ層内のノードの数とエンベディング空間内の次元数の両方を表します。このエンベディング レイヤは、他の特徴量や隠れ層と組み合わせることができます。他のディープ ニューラル ネットワークと同様に、ネットワークの出力レイヤのノードでの損失を最小化するために、トレーニング中にパラメータが最適化されます。
食事のおすすめの例に戻ると、現在のお気に入りの食事に基づいて、ユーザーが気に入る可能性のある新しい食事を予測することが目標です。まず、ユーザーの好きな食べ物トップ 5 に関する追加データを収集できます。次に、このタスクを教師あり学習問題としてモデル化できます。上位 5 つの食品のうち 4 つを特徴データとして設定し、5 つ目の食品をモデルが予測する正のラベルとしてランダムに設定します。ソフトマックス損失を使用してモデルの予測を最適化します。
トレーニング中に、ニューラル ネットワーク モデルは、エンベディング レイヤとして機能する最初の隠れ層のノードの最適な重みを学習します。たとえば、モデルの最初の隠れ層に 3 つのノードがある場合、食品アイテムの最も関連性の高い 3 つのディメンションは「サンドイッチ」、「デザート」、「液体」であると判断される可能性があります。図 12 は、「ホットドッグ」のワンホット エンコードされた入力値を 3 次元ベクトルに変換したものです。
![図 12. ホットドッグのワンホット エンコーディング用のニューラル ネットワーク。最初のレイヤは 5 つのノードを持つ入力レイヤで、それぞれが表す食品(ボルシチ、ホットドッグ、サラダ、シャワルマなど)のアイコンがアノテーションされています。これらのノードはそれぞれ値 [0, 1, 0, ..., 0] を持ち、「ホットドッグ」のワンホット エンコードを表します。入力レイヤは 3 ノード エンベディング レイヤに接続されています。このレイヤのノードの値はそれぞれ 2.98、-0.75、0 です。エンベディング レイヤは 5 ノード隠れ層に接続され、5 ノード出力レイヤに接続されます。](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=7&hl=ja)
hot dog
のワンホット エンコーディング。エンベディング レイヤは、ワンホット エンコーディングを 3 次元エンベディング ベクトル [2.98, -0.75, 0]
に変換します。トレーニングの過程で、エンベディング層の重みが最適化され、類似するサンプルのエンベディング ベクトルが互いに近づきます。前述のように、実際のモデルがエンベディングに選択するディメンションは、この例ほど直感的または理解しやすいものではありません。
コンテキスト エンベディング
word2vec
静的エンベディング ベクトルの 1 つの制限事項は、単語が文脈によって異なる意味を持つ可能性があることです。「Yeah」は単独で使用すると 1 つの意味を持ちますが、「Yeah, right」というフレーズでは正反対の意味になります。「Post」は、「郵便」、「郵送する」、「イヤリングの裏ぶた」、「競馬のゴール地点の標識」、「ポストプロダクション」、「柱」、「掲示する」、「警備員や兵士を配置する」、「後」などの意味があります。
ただし、静的エンベディングでは、各単語はさまざまな意味を持つ場合でも、ベクトル空間内の単一の点によって表されます。前回の演習では、色または果物の種類を意味する単語「orange」の静的エンベディングの制限を確認しました。静的エンベディングが 1 つしかない場合、word2vec
データセットでトレーニングすると、オレンジは常にジュースよりも他の色に近くなります。
この制限に対処するために、コンテキスト エンベディングが開発されました。コンテキスト エンベディングを使用すると、単語を複数のエンベディングで表すことができます。このエンベディングには、単語自体だけでなく、周囲の単語に関する情報も組み込まれます。Orange には、データセット内の単語を含む一意の文ごとに異なるエンベディングが割り当てられます。
ELMo などのコンテキスト エンベディングを作成する方法では、例の静的エンベディング(文内の単語の word2vec
ベクトルなど)を取り、周囲の単語に関する情報を組み込んだ関数で変換します。これにより、コンテキスト エンベディングが生成されます。
コンテキスト エンベディングの詳細については、こちらをクリック
- 特に ELMo モデルの場合、静的エンベディングは、他のレイヤから取得したエンベディングと集約されます。このエンベディングは、文の前方から後方への読み取りと後方から前方への読み取りをエンコードします。
- BERT モデルは、モデルが入力として受け取るシーケンスの一部をマスクします。
- Transformer モデルは、自己注意レイヤを使用して、シーケンス内の他の単語と個々の単語との関連性に重み付けを行います。また、位置エンベディング マトリックス(位置エンコードを参照)の関連する列を、以前に学習した各トークン エンベディングに要素ごとに追加して、推論のために残りのモデルに入力される入力エンベディングを生成します。この入力エンベディングは、個別のテキスト シーケンスごとに一意のコンテキスト エンベディングです。
上記のモデルは言語モデルですが、コンテキスト エンベディングは画像などの他の生成タスクにも役立ちます。馬の写真のピクセル RGB 値のエンベディングは、各ピクセルと隣接ピクセルのエンコードを示す位置マトリックスと組み合わせてコンテキスト エンベディングを作成すると、RGB 値のみの元の静的エンベディングよりもモデルに多くの情報を提供します。