mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
||||||||||||||||||||||||||||||||||||||||||||||
Replicated Softmax (Salakhutdinov & Hinton, NIPS 2009)はいわゆる"Deep Net"の 一つで, レイヤーが一つの単純なRBMでテキストをモデル化するものです。 多層にするなどの色々な細かい改良はありますが, これが事実上の state of the art だと思います。 LDAのような混合モデルより性能が良いと言われていて(最適化が非常に難しいですが, これは僕も確認済み), 文書を潜在的なトピックの組み合わせの1/0のビットパターンで 表現します。 *1
上のコードは,
http://www.fylance.de/rsm/
で唯一公開されていたPythonのコードを色々拡張して使えるようにしたもの。
これは NumPy で書かれているので, Pythonですが, 処理の割には非常に高速に動作
します。実は自分でC言語で書き直してみましたが, 処理速度はほぼ同等でした。(!)
NumPyは文書データのようなスパースな行列もフルで持つので, かなりメモリを食います
が, C言語だと工夫するとメモリ消費量は非常に小さくできます
(具体的には, 700MB->30MBくらいになる)。
ただ, そうすると大きなデータを食わせられますが, 大きいデータはいずれにしても
iterationが超重くなるので, 見通しがよいPython版のみ公開することにしました。
実際にやってみると, RBM共通らしいですが, まず局所解が非常に多く, かなり
パラメータを工夫しないとまともなパープレキシティが出ない, ということが
わかります。
一方で文書の hidden activation が行列計算一回で出るというのは面白く, 上のページ
でもそれを行うスクリプトを同梱しておきました。これを見ると, シグモイド関数に
かかるので1/0とは限らず, 0.5とか0.7とかも出るのかと思っていたら, 実際には
ほとんどの場合にactivationは0か1になってしまうのが印象的でした。これでは中々
最適化は難しいだろう, という。
僕の今やっている話はこういう問題がなく, MCMCでスルスルと最適化してやはり
LDA以上の性能が出るのですが, それはまた後でということで。
% pdfnup --nup 2x2 hoge.pdfでPDFを4upにできて, 普通に両面印刷できるのを知りました。ブラボー。
タイトル一覧 |