Pi(1) を i 番目のmodelが予測する次のbitが 1 である確率とする。このとき、Logistic Mixingによる最終的な予測確率 P(1) は以下のように計算される。
- xi = stretch(Pi(1))
- P(1) = squash(Σi wi xi)
ここで
- stretch(x) = ln(x/(1-x))
- squash(x) = 1/(1+exp(-x)) (stretch の逆演算).
それぞれの予測の後、Dataを符号化する計算量を最小化するように重みが調整される。
- wi ← wi + η xi (y-P(1))
ここでηは学習率(典型的な値は 0.002 から 0.01)、y は予測bit、(y-P(1))は誤予測。
実装
roadrollerというprogramにしっかりちゃっかりうっかり組み込まれております(sparse modelと組み合わせる)。その体験版で威力を堪能してみる事をおすすめします。
よそ様に丸投げする訳にもいかないので、私家版のようなものをしっかりちゃっかりうっかりcodepenに仕込んでみました。本家との大きな違いはrange coderを利用している点とfile処理にも対応している点。ただし圧縮文に復号噐は含まれない。
See the Pen Logistic Context Mixing compressor by xezz (@xezz) on CodePen.