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