プロジェクト: EMアルゴリズム稼働

先生にML(Google Groups)で質問したら、等価ではないが、単語出力確率を遷移に依存して出力するのではなく、状態に依存して出力するようにして場合を減らすのが効果的かつ一般的らしいので、その方向で実装したら、ちゃんと動いてかつ速くなった。精度に関しては不明。
今日のプロジェクトの時間では、確率のlogによる計算を実装して作業変数を保持するvectorをf64vectorからf32vectorに落とした。これはメモリ使用効率は上がったが、高速化は微妙な感じ。
ひと通りテストして再計算まで動いたが、やっぱり遅い。先生に見せたら「これはしょうがない」とか言われたが、JavaでやってるMのプログラムが10倍くらい速いんやが…。一体なんであんなに速いんやろう。どっかの計算飛ばしたりしてるんちゃうかと疑うくらい速い。プログラムを見た感じではちゃんとやってるとは思うが…。
これ以上の高速化は、もうCでの実装しかないかもしれない。気分がのったらやるかも。