2017-08-18 18 views
1

ワード埋め込み用のコーパスが1つあります。このコーパスを使用して、単語の埋め込みを練習しました。しかし、単語の埋め込みを訓練するときは、結果は全く異なります(この結果は、K-Nearest Neighbor(KNN)に基づいています)。例えば、最初のトレーニングでは、「コンピュータ」最近傍の言葉は「ラップトップ」、「のコンピュータ」、「ハードウェア」です。しかし、2回目の練習では、この言葉は「ソフトウェア」、「マシン」、...(「ラップトップ」は低いランクです) - すべてのトレーニングは独立して20エポックで実行され、ハイパーパラメータはすべて同じ。ワード埋め込みトレーニング

非常によく似た埋め込み単語を練習したい(たとえば、「ラップトップ」が高いランク付けされている)。私はどうすればいいですか?ハイパーパラメータ(学習率、初期化など)を調整する必要がありますか?

答えて

0

あなたはどのword2vecソフトウェアを使用しているのか言わなかったので、関連する要因が変わる可能性があります。

word2vecアルゴリズムは、初期化とそのトレーニングのいくつかの側面(ネガティブサンプリングの使用、または非常に頻繁な単語のランダムダウンサンプリング)で、ランダム性を本質的に使用します。さらに、マルチスレッドトレーニングを行っている場合は、OSスレッドスケジューリングの本質的にランダムなジッタがトレーニングの例の順序を変え、別のランダム性の原因を導入します。したがって、同じパラメータとコーパスであっても、後続の実行が必ずしも同じ結果をもたらすとは限りません。

十分なデータ、適切なパラメータ、および適切なトレーニングループを使用すると、relative-neighborsの結果はとなります。はrun-to-runとかなり似ています。そうでない場合は、より多くのデータや反復が役立つかもしれません。

コーパスにモデルが重すぎると(ひどすぎてディメンション/単語が多すぎるため)、結果が大きく異なる可能性があり、オーバーフィットする傾向があります。すなわち、一般化力を達成することなく、その特異性を本質的に記憶することによって、データの大きな構成を見つける。このような過密化が可能な場合、通常、このような記憶には多くのメリットがあります。したがって、実行時間とはかなり異なる場合があります。その一方で、多くのデータを含む正しいサイズのモデルは、真の一般性を捕捉することになり、これらのは、任意のランダム化にもかかわらず、実行から実行まで一貫しています。

より多くのデータを取得したり、より小さなベクトルを使用したり、より多くのトレーニングパスを使用したり、単語の保持/訓練のために最小の単語発生数を上げることが役立ちます。 (非常にまれな言葉では高品質のベクトルが得られないので、他の言葉の品質に干渉してからほとんど同様のリストにランダムに入り込みます)。

他に何が間違っているのか知るには、あなたの質問のもので明確にすべきよう:

  • 使用
  • モード/ metaparametersが
  • コーパスのサイズを使用したソフトウェアは、多くの例では、言葉で平均一例サイズ、ユニークワードは、両方の生の中で(カウントコーパス、および任意の最小カウントが適用された後)
  • 前処理の方法
  • トレーニング用コード(複数のトレーニングパスを自分で管理している場合)