2016-07-04 10 views
52

Kerasのドキュメントでは、これが実際に何であるかが明確ではありません。私はこれを使用して入力フィーチャ空間をより小さなものに圧縮することができると理解しています。しかし、これは神経設計の観点からどのように行われますか?それはautoenocder、RBMですか?Kerasに埋め込みとは何ですか?

+2

訓練できるルックアップテーブル –

答えて

46

私が知る限り、埋め込みレイヤは、単語を対応する単語埋め込みに変換する単純な行列乗算です。

埋め込みレイヤの重みは、形状(vocabulary_size、embedding_dimension)です。各訓練サンプルについて、その入力は整数であり、これは特定の単語を表す。整数は語彙サイズの範囲内にある。埋め込みレイヤは、各整数iを埋め込み重み行列のi番目のラインに変換する。

これを素早く行列乗算するために、入力整数は整数のリストとしてではなく、ワンホットマトリクスとして格納されます。したがって、入力シェイプは(nb_words、vocabulary_size)、1行につき1つの非ゼロ値を持ちます。あなたは埋め込むの重みによって、これを掛ける場合は、形状

(nb_words, vocab_size) x (vocab_size, embedding_dim) = (nb_words, embedding_dim) 

での出力はそう簡単な行列の乗算を使用すると、対応するワード埋め込みにサンプル内のすべての単語を変換し得ます。

+0

興味深いことに、単純な行列乗算です。オートエンコーダーで埋め込みを学ぶことで何かを得ることができると思いますか? –

+2

確かに有効なアプローチです([Semi-Supervised Sequence Learning](https://papers.nips.cc/paper/5949-semi-supervised-sequence-learning.pdf)を参照)。また、自動エンコーダーを使用して埋め込みを学習し、埋め込みレイヤーの初期化として使用して、ニューラルネットワークの複雑さを軽減することもできます(埋め込みレイヤーの後に別のことを行うと仮定します)。 – Lorrit

+2

[ここ](http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/)は、単語の埋め込みとその利点に関する素晴らしいブログです。 – sietschie

2

機能をよりよく理解するために、ソースコードを見るのは良い習慣です。ここにあるのはEmbedding だから基本的には訓練可能なルックアップテーブルだ。

関連する問題