埋め込み層は、Keras埋め込み層でどのようにトレーニングされますか?(たとえば、tensorflowバックエンドを使用すると、word2vec、glove、fasttextに似ています)
事前トレーニング済みの埋め込みを使用しないと仮定します。
埋め込み層は、Keras埋め込み層でどのようにトレーニングされますか?(たとえば、tensorflowバックエンドを使用すると、word2vec、glove、fasttextに似ています)
事前トレーニング済みの埋め込みを使用しないと仮定します。
回答:
Kerasの埋め込みレイヤーは、ネットワークアーキテクチャの他のレイヤーと同じようにトレーニングされます。これらのレイヤーは、選択された最適化方法を使用して損失関数を最小限に抑えるように調整されています。他のレイヤーとの主な違いは、それらの出力が入力の数学関数ではないことです。代わりに、レイヤーへの入力を使用して、埋め込みベクトルでテーブルにインデックスを付けます[1]。ただし、基になる自動微分エンジンは、これらのベクトルを最適化して損失関数を最小限に抑える問題はありません...
したがって、Kerasの埋め込みレイヤーがword2vec [2]と同じことを行っているとは言えません。word2vecは、単語のセマンティクスを取り込む埋め込みを学習しようとする非常に特定のネットワーク設定を指すことに注意してください。Kerasの埋め込み層では、損失関数を最小限に抑えようとしているだけなので、たとえば感情分類の問題を扱っている場合、学習した埋め込みはおそらく完全な単語のセマンティクスではなく、感情的な極性だけをキャプチャします...
たとえば、[3]から取得した次の画像は、クリックベイトヘッドライン(左)と事前トレーニング済みのword2vec埋め込み(右)を検出するように設計された監視対象ネットワークの一部として、ゼロからトレーニングしたKeras埋め込みレイヤーを使用した3つの文の埋め込みを示しています。ご覧のとおり、word2vecの埋め込みは、フレーズb)とc)の間の意味的な類似性を反映しています。逆に、Kerasの埋め込み層によって生成された埋め込みは分類に役立つ可能性がありますが、b)とc)の意味上の類似性はキャプチャしません。
これは、トレーニングサンプルの量が限られている場合、word2vecの重みを使用して埋め込みレイヤーを初期化することをお勧めします。そのため、少なくともモデルは、「アルプス」と「ヒマラヤ」が類似していることを認識します。どちらもトレーニングデータセットの文には含まれません。
[1] Keras 'Embedding'レイヤーはどのように機能しますか?
[2] https://www.tensorflow.org/tutorials/word2vec
[3] https://link.springer.com/article/10.1007/s10489-017-1109-7
注:実際には、画像は埋め込みレイヤーの後のレイヤーのアクティブ化を示していますが、この例の目的では重要ではありません... [3]で詳細を参照してください
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations- >このブログ投稿では、埋め込みレイヤーがKeras埋め込みレイヤーでどのようにトレーニングされるかについて明確に説明しています。お役に立てれば。
埋め込みレイヤーは、離散的でスパースな1ホットベクトルから連続した密な潜在空間への単なる投影です。これは(n、m)の行列で、nは語彙サイズ、nは希望する潜在空間の次元です。実際にのみ、実際に行列の乗算を行う必要はありません。代わりに、インデックスを使用して計算を節約できます。したがって、実際には、正の整数(単語に対応するインデックス)を固定サイズの密なベクトル(埋め込みベクトル)にマップするレイヤーです。
Skip-GramまたはCBOWを使用して、Word2Vec埋め込みを作成するようにトレーニングできます。または、特定の問題についてそれをトレーニングして、特定のタスクに適した埋め込みを手に入れることができます。また、事前にトレーニングされた埋め込み(Word2Vec、GloVeなど)をロードしてから、特定の問題のトレーニングを継続することもできます(転送学習の形式)。