論文紹介「A Hierarchical Bayesian Language Model based on Pitman-Yor Processes」

NPYLMを実装するために元になっているHPYLMの論文を読む話。

3章。Pitman-Yor過程はbase distributionG0とdiscount parameter 0 < d < 1とstrength parameter θ > -d から新しい分布を作る確率過程。スティック・ブレイキングで構成できる。独立な確率変数列Vk ~ Beta(1 - d, θ+kd)とφk ~ G0から(9)式によって作ることができる。これがスティック・ブレイキング。

別の視点から見ると、中華料理店過程でも表現できる。一つのレストランには上限のない個数のテーブルがあり、客がそのテーブルに座る。最初の客は最初のテーブルに座り、それ以降の客はk番目のテーブルにck - dに比例する確率で座る。ckは既にそのテーブルに座っている客の数である。また、客はまだ誰も座っていないテーブルに座ることもある。この確率はθ + dtに比例する。ここでtはテーブルの個数である。G0からφkをドローするとか、φkは料理だとか書いてあるけどよくわからん!ここまでの話だとG0が出てくる余地なく客の配置の分布が決まりそうに思う。

ck - dをt個のテーブルに対して足して、それに新しいテーブルが追加されるθ + dtを足すとθ+cになる。これが(10)式の分母に来ている。あー、新しく追加されたテーブルにどの料理を置くかがG0から出るのか。

(11)式が予測確率で、NPYLMの方にも出てきた式だと思う。twはwを出しているテーブルの数。語彙は有限でテーブルの数は無限なので同じ料理を出すテーブルが存在しうるわけだ。これはレストランごとにw->intの対応を持たないといけないのかなぁ。かさばりそう。

4章。文脈uは手前のn-1文字。uがgivenのときのGu(w)を予測したい。でuによって決まるdとθと、それからuより1文字短い文脈での分布からPYでuの分布を作る。以下の数式でuはレストラン=文脈、wは料理=単語、kはテーブル。cuwkはレストランuのテーブルkに座ってwを食べている客の数。もしkがwを出していなければ0。(kが複数のwを出したりはしないよね?)。tuwはレストランuでwを出しているテーブルの数。tu・はレストランuにあるテーブルの個数(ということはやっぱりkは1個のwを出すわけだな)。

で(16)式が階層的にした時の予測確率の式。

付録Bに擬似コードがある。

付録Cでdとθの推定について書いてある。dはベータ分布、θはガンマ分布に従うと仮定する。計算の都合でベータ分布に従うx、ベルヌーイ分布に従うy、zを作って、それを組み合わせてdとθのハイパーパラメータを決める。えーと、その分布からサンプリングされたdとθを使って、現在の座席配置が出てくる確率を計算して、それがメトロポリスヘイスティングの受理基準に当てはまるかどうかチェックしながらMCMCで決めるんだな。ああ、xやyやzの分布のパラメータにdとθが混ざっている。つまり現在の値でサンプリングして、良くなってたら置き換えて、を繰り返すことで適切なdとθになるだろう、ってことね。初期値もちゃんと書いてある。

さいごに

この記事はDeep Learningに興味を持った著者が、関連論文を読んで勉強しながら書いているものです。そのため間違いなどが含まれている可能性があります。もしなにか気になる点がありましたらご指摘いただけるとありがたいです。