Noise-contrastive estimation の雑なメモ
word2vec のモデルの説明で、以下の尤度関数の最大化を行いたいが、分母にある正規化項の計算が重すぎてこのままでは計算できないという話があった。
word2vec では、この尤度関数を直接最大化するのではなく、正例とノイズとを区別する2クラス分類問題の新たに考え、この問題の誤差関数を最小化することでパラメータを求めていた。 しかし普通に考えると、位置tのコンテキストの条件付き確率分布の尤度最大化と、観測データとノイズの2クラス分類問題は全く別の問題のように見える。
Chainer本では前者の問題を解くのと後者の問題を解くのとは「本質的に同じ」と書いてあった。 これらの本質的に同じとはどういうことなのか疑問に思ったので、negative sampling の元ネタらしい Noise-contrastive estimation の論文を読んでみた。
Noise-contrastive estimation: A new estimation principle for unnormalized statistical models
問題
ベクトル が未知の確率分布 に従うとする。 この分布を、パラメータ を持つ確率分布 でモデル化し、尤度を最大化することでパラメータ を決定することを考える。
確率分布は正規化されていなければならない。 つまり、定義域全体に渡る積分が1にならなければならない。
正規化されていない分布 があるとき、正規化制約を満たすためには以下のように を定義すればよい。
しかし、 が解析的に解けることはめったにないし、(word2vec の場合のように)数値的に計算するのもコストが高すぎて困難である場合が多い。 したがって、 を計算することなく、尤度を最大化する を求めたい。
Noise-contrastive estimation
を計算するのではなく、新たなモデルパラメータとしてモデルに組み込むことを考える。 つまり を以下のように再定義する。
をパラメータにしてしまったので、この分布は の値をうまく決めないと正規化されない。 このため、この分布の尤度を目的関数として最大化を行うことはできない。 なぜなら、 を小さくすれば尤度をいくらでも大きくできるからだ。
Noise-contrastive estimation では、観測されたデータである と、人工的に作ったノイズ をロジスティック回帰で識別する問題を代わりに考える。
は ノイズ分布 と呼ばれる分布であり、サンプリングすることができる分布であれば自由に選んでよいらしい。 ただし、 が非ゼロである点では も非ゼロであることが望ましい。 さらに言うと、 にできるだけ近い分布を選ぶのがよいらしい。
を観測データとし、 をノイズ分布 からサンプルしたデータとする。 このとき、NCE において最大化すべき目的関数(ロジスティック回帰の尤度関数)は以下のように与えられる。
ただし、 は、 をシグモイド関数として、以下のように書ける関数。
つまり、 と の対数尤度比をシグモイドに突っ込んだのが 。
いろいろ条件を仮定すると、この目的関数を最大化するパラメータを としたとき、 は元々の問題の尤度関数を最大化する と一致し、 は を正しく正規化する値になる ことが示せるらしい。すごい。
まとめ
ということで、「本質的に同じ」というのは「どっちの問題を解いても同じモデルパラメータが得られる」という意味らしい。 ただし、negative sampling は NCE をベースとしているけど異なる手法なので、negative sampling で本当に同じパラメータが得られるのかはよくわからない。 後で調べたい。