現在、コンテキストに基づいて単語をベクトルとして表現するためのWord2vecニューラルネット学習アルゴリズムの背後にあるアーキテクチャを理解しようとしています。
Tomas Mikolov paper を読んだ後、彼がプロジェクションレイヤーと定義するものに出会いました。この用語はWord2vecと呼ばれるときに広く使用されていますが、ニューラルネットコンテキストで実際に何が行われているかの正確な定義は見つかりませんでした。
私の質問は、ニューラルネットのコンテキストでは、投影レイヤーとは何ですか?以前のノードへのリンクが同じウェイトを共有する非表示レイヤーに付けられた名前ですか?そのユニットは実際に何らかの種類のアクティベーション機能を持っていますか?
problem問題をより広く参照している別のリソースは このチュートリアル にあります。これはプロジェクションレイヤーページ67を参照しています。
投影レイヤーは、n-gramコンテキストの個別のWordインデックスを連続ベクトル空間にマップします。
これで説明されているように 論文
投影レイヤーは共有され、同じWordを複数回含むコンテキストでは、同じ重みセットが適用されて投影ベクトルの各部分が形成されます。この構成により、各コンテキストトレーニングパターンの各単語が個別に重み値の変更に寄与するため、投影レイヤーの重みのトレーニングに使用できるデータ量が効果的に増加します。
この図は、プロジェクションレイヤーの重みマトリックスから列をコピーすることにより、プロジェクションレイヤーの出力を効率的に組み立てる簡単なトポロジを示しています。
次に、非表示レイヤー:
隠れ層は、投影層の出力を処理し、トポロジー構成ファイルで指定された多数のニューロンで作成されます。
Edit:ダイアグラムで何が起こっているかの説明
投影層の各ニューロンは、語彙のサイズに等しい重みの数で表されます。投影レイヤーは、非表示および出力レイヤーとは異なり、非線形アクティベーション関数を使用しません。その目的は、単純に、与えられたn-gramコンテキストを縮小された連続ベクトル空間に射影し、そのようなベクトルを分類するために訓練された隠れ層と出力層による後続の処理のための効率的な手段を提供することです。入力ベクトル要素の1または0の性質を考えると、インデックスiを持つ特定のWordの出力は、射影層の重みの訓練された行列のi番目の列になります(行列の各行は単一のニューロンの重みを表します) )。
continuous bag of words
は、以前のエントリと将来のエントリを考慮して、単一のWordを予測するために使用されます。したがって、コンテキストの結果です。
入力は、以前のエントリと将来のエントリから計算された重みです。すべてに同じ重みが新たに与えられます。したがって、このモデルの複雑さ/特徴数は、他の多くのNNアーキテクチャよりもはるかに小さくなります。
RE:what is the projection layer
:引用した論文から
非線形の隠れ層は削除され、投影層はすべての単語(投影マトリックスだけでなく)で共有されます。したがって、すべての単語が同じ位置に投影されます(ベクトルが平均化されます)。
したがって、投影レイヤーはshared weights
の単一のセットであり、アクティベーション機能は示されていません。
入力と投影レイヤー間のウェイトマトリックスは、NNLMと同じ方法ですべてのWordの位置で共有されることに注意してください。
したがって、hidden layer
は、実際にはこの単一の共有ウェイトのセットで表されます。これは、すべての入力ノードで同一であることを正しく示しています。