mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2024年04月 来月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

2013年06月29日() [n年日記]

#1 Replicated Softmax Model

比較実験の必要があって, Ruslan Salakhutdinov の Replicated Softmax Model のプログラムを書いた(正確には, 1つだけ公開されているPythonのコードに色々手を 入れた)ので, 公開します。

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以上の性能が出るのですが, それはまた後でということで。


*1: 基本的には Gehler の RaP (Rate Adapting Poisson)モデルと同じですが, RaPは 文書の単語頻度のポアソン分布の期待値を出力するため, 文書長が同じでないと 使えないのに対し, RSMは多項分布なので長さに関わらず使える, というのが唯一違う点です。

2007年06月29日(金) [n年日記]

#1 pdfnup

UnixのTips。
これまで, PDFのスライド等を4up,両面で印刷するのに, UnixのAdobe Readerからは そういう指定ができないので, ずっとWindowsのノートを起動して, そちらから 印刷していたのですが, PDFLaTeX関係のシェルスクリプト集 PDFjam に含まれる pdfnup を使うと
% pdfnup --nup 2x2 hoge.pdf
でPDFを4upにできて, 普通に両面印刷できるのを知りました。ブラボー。
印刷してみましたが, Windowsからと遜色ない結果が得られています(Unixからの方が 若干綺麗だった)。
内部で pdflatex を呼んでいる模様なので, それが入っていないと使えないかも しれませんが, 私の所では特に何もしなくても入っていました(tetexに含まれている のかも)。


2 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project