this ページでは、次のように言われています:
[...] skip-gramはコンテキストとターゲットを反転し、ターゲットワードから各コンテキストワードを予測しようとします[...]
ただし、生成されるトレーニングデータセットを見ると、XとYのペアのコンテンツは、(X、Y)の2つのペアのように、相互交換可能であるようです。
(quick, brown), (brown, quick)
それでは、もしそれが最終的に同じものであるなら、なぜコンテキストとターゲットをそれほど区別するのでしょうか?
また、 Word2vecでのUdacityのディープラーニングコースの演習 を実行すると、なぜこの問題でこれら2つのアプローチの違いが大きいように見えるのでしょうか。
Skip-gramに代わるものは、CBOW(Continuous Bag of Words)と呼ばれる別のWord2Vecモデルです。 CBOWモデルでは、WordベクトルからコンテキストWordを予測する代わりに、コンテキスト内のすべてのWordベクトルの合計からWordを予測します。 text8データセットでトレーニングされたCBOWモデルを実装および評価します。
これは同じ結果をもたらさないでしょうか?
ここに、違いについての単純化されたかなり単純な理解を示します。
私たちが知っているように、[〜#〜] cbow [〜#〜]はコンテキストによって単語を予測することを学んでいます。または、コンテキストを見てターゲットWordの確率を最大化します。そして、これはたまたままれな言葉の問題です。たとえば、コンテキストyesterday was a really [...] day
CBOWモデルは、おそらくWordがbeautiful
またはNice
であることを示します。 delightful
のような単語は、最も可能性の高い単語を予測するように設計されているため、モデルの注目度がはるかに低くなります。この単語は、より頻繁な単語を含む多くの例で平滑化されます。
一方、skip-gramモデルは、コンテキストを予測するように設計されています。単語delightful
を考えると、それを理解し、コンテキストがyesterday was really [...] day
、またはその他の関連するコンテキスト。 skip-gramを使用すると、Word delightful
はWord beautiful
と競合しようとしませんが、代わりにdelightful+context
ペアは、新しい観測として扱われます。
[〜#〜] update [〜#〜]
共有してくれた@ 0xFに感謝 この記事
ミコロフによると
Skip-gram:は、少量のトレーニングデータで適切に機能し、まれな単語やフレーズでも十分に表現します。
CBOW:スキップグラムよりも数倍高速で、頻出単語の精度がわずかに向上
主題へのもう1つの追加が見つかりました here :
「スキップグラム」モードでは、「CBOW」の代わりに、コンテキスト単語を平均化するのではなく、それぞれをペアごとのトレーニングの例として使用します。つまり、[average( 'The'、 'cat'、 'the'、 'mouse')の[predict 'ate']などの1つのCBOWの例の代わりに、ネットワークには4つのスキップグラムの例[predict ' 「The」から食べた」、「cat」から「食べた」と予測し、「the」から「食べた」と予測し、「mouse」から「食べた」と予測します。 (同じランダムなウィンドウの縮小が発生するので、最も近い単語の2つの例の半分の時間です。)
それは、特定のポイントで正確に計算していることに関係しています。各確率の計算により大きなコンテキストを組み込んだモデルを検討し始めると、違いはより明確になります。
Skip-gramでは、コンテキストの単語を計算文の現在の位置にあるWordから;計算で現在のWord(および場合によってはコンテキストの一部)を「スキップ」しています。結果は複数のWordになる可能性があります(ただし、コンテキストウィンドウが1 Wordだけの場合はそうではありません)。
CBOWでは、現在のWordの計算コンテキストのWord(s)なので、結果として1つのWordしかありません。