4章word2vecの高速化
何もかも知ろうとして苦労はするな。
さもないと、何ひとつ覚えられない。
—— デモクリトス(古代ギリシアの哲学者)
私たちは前章でword2vecの仕組みを学び、CBOWモデルを実装しました。CBOWモデルはシンプルな2層のニューラルネットワークであったため、簡単に実装することができました。しかしその実装にはいくつか問題があります。大きな問題は、コーパスで扱う語彙数が増えるに従って、計算量が増加する点にあります。実際、ある程度の語彙数に到達すると、前章のCBOWモデルでは計算にあまりにも多くの時間がかかってしまいます。
そこで本章では、word2vecの高速化に主眼を置き、word2vecの改善に取り組みます。具体的には、前章のシンプルなword2vecに対して2つの改良を加えます。ひとつ目の改良はEmbeddingレイヤという新しいレイヤを導入することです。そして、もうひとつの改良として、Negative Samplingという新しい損失関数を導入します。これによって私たちは、“本物”のword2vecを完成させることができます。本物のword2vecが完成した暁には、PTBデータセット(実用的なサイズのコーパス)を対象に学習を行います。そして、その単語の分散表現の良さを実際に評価したいと思います。
4.1 word2vecの改良①
それでは前章の復習から始めましょう。私たちは前章で、図4-1で表されるCBOWモデルを実装しました。
Get ゼロから作るDeep Learning ❷ ―自然言語処理編 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.