埋め込み層は、Keras埋め込み層でどのようにトレーニングされますか?(たとえば、tensorflowバックエンドを使用すると、word2vec、glove、fasttextに似ています)
事前トレーニング済みの埋め込みを使用しないと仮定します。
埋め込み層は、Keras埋め込み層でどのようにトレーニングされますか?(たとえば、tensorflowバックエンドを使用すると、word2vec、glove、fasttextに似ています)
事前トレーニング済みの埋め込みを使用しないと仮定します。
回答:
どちらの答えも間違っています。
埋め込みレイヤーは、2次元である1つの埋め込み行列を含むトレーニング可能なレイヤーであり、1つの軸にカテゴリカル入力が取ることができる一意の値の数(たとえば、小文字のアルファベットの場合は26)を含み、もう1つの軸には次元を含みますあなたの埋め込みスペースの。埋め込みレイヤーの役割は、少なくとも監視対象タスクにおいて、当面のタスクに役立つ方法でカテゴリーを密な空間にマッピングすることです。これは通常、埋め込みベクトルに意味的な値があり、この空間に近いカテゴリがタスクにとって意味が近いことを意味します。
これは、離散カテゴリをベクトル特徴表現にマッピングするという意味で、ワンホットエンコーディングに関連しています。ニューラルネットワークでもこれを行うことができますが、これを高密度のレイヤーで使用すると、大量のウェイトが作成され、そのほとんどが定期的に使用されなくなります。埋め込みレイヤーを間に置くと、入力の他の部分と相互作用するようにフィードする前に、学習可能なウェイトの量が減ります。もう1つの利点は、埋め込み行列が基本的にルックアップテーブルとして機能することです。これにより、カテゴリのインデックスのスパース性を実際に使用して、埋め込みの現在の値を調べ、重み行列のそのエントリのみを適応させてバックプロパゲーションを適用できます。 。
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations- >このブログ投稿では、埋め込みレイヤーがKeras埋め込みレイヤーでどのようにトレーニングされるかについて明確に説明しています。お役に立てれば。
私が理解している限り、これは単純なオートエンコーダです。つまり、入力を別のスペースにマップしようとしているだけなので、特別なトレーニングは必要ありません。単純なフィードフォワードとバックプロップのみです。これが、トレーニングがかなり速い理由です。
事前トレーニング済みの埋め込みを使用する場合は、その方法で行うことができます
埋め込みレイヤーは、データのマッピングに埋め込み行列を使用し、トレーニング中に更新されることはありません。Keras埋め込みレイヤーにはトレーニング可能なパラメーターはありません。詳細については、Keras埋め込み層のドキュメントを参照してください。