FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「ゼロから作るディープラーニング②」を読む (4. 第4章 word2vecの高速化)

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

「ゼロから作るディープラーニング②」を購入した。

あまり内容を詳細に記録するつもりはないので、読んで纏めていったものをGistに張り付けていく。

  • Jupyter Notebook Viewer: 4章 word2vecの高速化

Jupyter Notebook Viewer

word2vecは、語彙数が増えてくと計算量が非常に大きくなるという問題があり、これを解決するために様々なテクニックを導入する。

  • Embeddeingレイヤによる入力レイヤの削減
  • 多値問題から二値分類に変換することで、計算量を減らす。
  • 二値分類になったことで、計算量が削減された分、外れた値(負例)をサンプリングして別の解を探す(Negative Sampling)
f:id:msyksphinz:20180804145417p:plain
グラフ: 高速化したword2vecの学習経過。

まとめは以下。

  • word2vecを使うと計算量が増加するので、近似計算を行う。
  • Embeddingレイヤを使って、単語のIDを抽出する。計算量を減らす役割がある。
    • Negative Samplingを使って、負例をいくつかサンプリングする。
    • 二値分類を使用して、計算量を減らす。
  • 単語の分散表現は、単語の意味が含まれており、単語ベクトル空間上で似た単語は近い位置に表示されるようになる。
  • word2vecの単語の分散表現は、類推問題をベクトルの加算と減算によって解ける性質を持つ。
  • word2vecは転移学習の点で特に重要である。様々な自然言語処理に適用可能である。