読者です 読者をやめる 読者になる 読者になる

自然言語処理特論最終回

自然言語処理

今日は最終課題になっていた言語モデルのみんなのモデルがどれくらいのPPまでいったかというところをばっと見ていきました。自分はBack-offの実装にてこずっていたら期限が近づいていたので(おい)、線形補間法(EMアルゴリズムで係数推定)で挑みました。ただ、これだけだと面白くないので、出現頻度に応じてブロックに分け、そのブロック内で係数を推定するというAverage-count methodというのを使いました(4つのブロックに分割)。

結果からいいますと、非常にだめだめな感じでBigramは後ろから数えたほうが早いくらい、Trigramは真ん中くらいでしたorz。使うモデルが線形補完では厳しかったか。。。Kneser-Neyが強いなーという印象でした。Trigramのほうは線形補完にしては頑張っていたみたいだけど。30人くらいで色んな言語モデル実装して、性能を競争するっていうのはなかなか面白いですね。

その後は圧勝だったKneser-Neyがベイジアン的な解釈ができるよ!!という論文の軽めの紹介。興味ある人だけ残って聞いておいてねという感じだったので残っていたらいつの間にか一人でした(ぇ。おかげさまで色々質問できましたが。紹介があったのはこれ。ノンパラベイズで有名なYee Whye Tehさんの論文でした。

前回までの授業でベイズを使った言語モデルとして

  • Unigram Mixtures
  • Dirichlet Mixtures
  • Probabilistic LSI
  • Latent Dirichelet Allocation

などが出てきました。これらは混合モデルにしたり、マルチトピッックに対応したりなどなどしていたわけですが、尤度関数は全て多項分布、事前分布をそれぞれ変えているというものでした。これまではパラメトリックベイズ(ベイズじゃないのもあるけど)。ここからはノンパラメトリックベイズです。ノンパラメトリックというのは「パラメータがない」という意味ではなく、データ数に応じてパラメータ数がflexibleに変化できる、ということを指すようです。この考えを適用したモデルが

  • Dirichlet Process Mixtures
  • Hierarchical Dirichelet Process

です。

あとはうまく説明できる気がしないので、断片的にできそうなところ分かってそうなところのみ書いていきます。。。

低次ngramを事前分布として利用する

パラメトリックベイズでは4種類ほどモデルがありましたが、基本的に違うのは事前分布の置き方だけでした。では、ノンパラメトリックベイズの言語モデルではどう事前分布を置くか。答えは低次のngram。低次のngramの事前分布はさらに低次のngramを。という感じで階層化が自然に出てきます。0-gramで終わるので、どこまで階層化すればいいかもある意味自明。階層モデルはなんとなく分かるけど、どこまで階層化すればいいかかが自明な感じではなかった印象だったけど、これだとすっきりします(たぶんこういうのは重要)。

低次のngramが高次のngramを生み出すという感じなんだけど、これというのは要するに分布自体も確率変数(disctibution over disctibutionというので論文とかでは出てくる)ということです。パラメトリックベイズなどでは、事前分布がある空間はR^nのような空間だったけど、ここからは関数空間が事前分布を考える空間ということになる。事後分布を計算するためには、積分をしなければならないのだけど、関数で積分などが必要になるので測度論が必要になるとのこと(よく分からない)。

あと、ここからは確率分布ではなくて確率過程になるというのも注意。確率過程はガウス過程とかのほうがとっつきやすいかな。要するに考えている空間を有限次元から(加算)無限次元に広げるということ。

未知語の扱い

これまでのモデルだと、未知語を1語として扱ってきましたが、ノンパラベイズだと語彙数を無限大に飛ばします。あと、密度関数の減衰の仕方がDirichelet Processだと指数関数的で少し速すぎるんだけど、Pitman-YorのモデルだとZipの法則のような逆数で減衰していくような感じになってこれが言語によく当てはまる、というような話だったがよく思い出せない。
トピックモデル (機械学習プロフェッショナルシリーズ)

トピックモデル (機械学習プロフェッショナルシリーズ)