LoginSignup
5
5

More than 5 years have passed since last update.

[論文メモ] Enriching Word Vectors with Subword Information

Posted at

前置き

アルゴリズムの概要

  • word2vecに代表されるskip-gramによるembeddingを拡張したもの。
  • 単語だけでなく、単語のn-gramも考慮することで高速かつ高精度にembeddingができるようになった。

準備: Skip-gramモデル

  • skip-gramモデルは下記の対数尤度を最大化するモデル。

$$\sum_{t=1}^T \sum_{c \in C_t} \log p(w_c|w_t)$$

  • $C_t$は$w_t$のまわりにある単語のインデックスの集合
  • 確率はsoftmaxを使って下記のように定義する。

$$p(w_c|w_t) = \frac{e^{s(w_t, w_c)}}{\sum_{j=1}^W e^{s(w_t, j)}}$$

  • 実際にはnegative samplingを行い下記の最大化する。

$$\sum_{t=1}^T \sum_{c \in C_t} l(s(w_t, w_c)) + \sum_{n \in N_{t,c}} l(-s(w_t, n))$$

  • $N_{t,c}$はサンプリングされたnegative exampleの集合
  • $l(x)=\log(1 + e^{-x})$

  • またスコアリング関数$s$はembedding同士の内積とする。

$$s(w_t, w_c) = u_{w_t} \cdot v_{w_c}$$

  • ここで$u_{\cdot}$と$v_{\cdot}$は違うものであることに注意。

Subword model

  • 単語$w$のn-gramの集合を$\cal{G}_w \subset \{1,...,G\}$とする。
  • n-gram $g$のembeddingを$z_g$とし、各単語のembeddingをその単語のn-gramのembeddingの合計とする。
  • このときスコアリング関数$s$を下記のように定義する。

$$s(w, c) = \sum_{g \in \cal{G_w}} z_g \cdot v_c$$

  • ここで常に単語$w$は$\cal{G}_w$に含まれるにようにする。
    • ただし、n-gramとしての文字列と単語のとしての文字列が一致しても別のembeddingを持つ。
    • 例えば、単語としてのasとpasteの中に含まれる2-gramのasは別のembeddingを持つ。
  • このように単語間でn-gramを通じて同じembeddingを共有することでレア単語に対しても有効なembeddingを学習できる。

Dictionary of n-gram

  • $\cal{G_w}$の定義に設定の余地がある。
  • この論文では下記のような設定を提案している。
    • 3以上6以下のn-gramを使う。
    • 別途、prefixやsuffixを追加する。
    • ただし最も頻出する上位P個の単語に関してはn-gramを使用しない。

使い方

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5