web-dev-qa-db-ja.com

word2vec-何がベストですか?追加、連結、または平均Wordベクトル?

私はリカレント言語モデルに取り組んでいます。言語モデルの初期化に使用できるWord埋め込みを学ぶために、私はgensimのWord2vecモデルを使用しています。トレーニング後、Word2vecモデルは、語彙の各単語に対して2つのベクトルを保持します。単語の埋め込み(入力/非表示行列の行)とコンテキストの埋め込み(非表示/出力行列の列)です。

この投稿 で概説されているように、これら2つの埋め込みベクトルを組み合わせるには、少なくとも3つの一般的な方法があります。

  1. 各単語のコンテキストと単語ベクトルの合計
  2. 合計と平均
  3. コンテキストとWordベクトルの連結

しかし、最適な戦略に関する適切な論文やレポートが見つかりませんでした。だから私の質問は:

  1. ベクトルを合計するか、平均するか、または連結するかどうかに共通の解決策はありますか?
  2. または、最善の方法は問題のタスクに完全に依存していますか?もしそうなら、どの戦略がWordレベルの言語モデルに最適ですか?
  3. なぜベクトルを組み合わせるのですか?各単語、つまり入力ニューロンと非表示ニューロンの間の重み行列に含まれているものに「元の」単語の埋め込みを使用しないのはなぜですか。

関連する(ただし未回答の)質問:

9
Lemon

スタンフォードの講義「自然言語処理のためのディープラーニング」(講義2、2016年3月)で答えを見つけました。利用可能です こちら 。 46分で、リチャードソッチャーは、一般的な方法は2つのワードベクトルを平均することであると述べています。

4
Lemon

2つのベクトルを組み合わせるさまざまな方法を経験的にテストする作業はわかりませんが、1)Wordベクトルを使用するだけで、2)Wordとコンテキストベクトルを合計するという非常に影響力の大きい論文があります。論文はこちら: https://www.aclweb.org/anthology/Q15-1016/

最初に、メトリックはアナロジーおよび類似性テストであり、下流のタスクではないことに注意してください。

これは論文からの引用です:

sGNSとGloVeの両方について、w + cバリアント[Wordとコンテキストベクトルの合計]を試してみるのは価値があります。これは、適用が簡単で(再トレーニングが不要)、かなりの利益(およびかなりの損失)をもたらす可能性があります。 。

だからあなたはあなたがあなたの特定のタスクでそれを試してみる必要があるだけだと思います。

ちなみに、これはgensimからコンテキストベクトルを取得する方法に関する投稿です。 link

0
Hai

さまざまな代数演算子を使用してWordの埋め込みを組み合わせるという全体的なアイデアを得るために、少なくとも this の調査作業を少なくとも1回読む必要があります。それは私の研究でした。

このホワイトペーパーでは、Wordのベクトルを組み合わせる他の方法についても説明します。

要するに、L1正規化された平均ワードベクトルとワードの合計は、適切な表現です

0
Nomiluks