得られたLPC係数をPARCOR係数の形で記録し、予測時にLPC係数に変換する、という実装を試していた。 しかし圧縮率が芳しくない(50.74%)し、正則化の影響を受けない。また、SLAで良かった不均一ビット割り当てもあまり効果なし。
消すのももったいないのでブランチ切っておいた。
じゃあ、最近傍の2の冪になるように正則化パラメータを設定する方針に変えてみようか。負荷が大きくなるのは分かっている。実装してしまって確かめる。
- 実装した。対数スケールに直して、 \(\yen lceil \yen log_{2}(\yen max_{i} |h_{i}|) \yen rceil - \yen log_{2}(\yen max_{i} |h_{i}|)\) が一番小さくなるような正則化パラメータを見つけてやればよい。しかし、1/512に勝てない。なんだろうこのマジックナンバー…。
- でも実装してみて、一旦自己相関が求まればL-D法連打はあまりコストにならないことが分かった。つまり \(\yen max_{i} |h_{i}|\) の計算コストは低い。
- この知見から、 \(E[(x_{t} - x_{t}^{qgrad})^{2}]\) をL2ノルム近似しないで厳密計算してもよさそうな感触を得て、これをロスにして試してみたけど、正則化パラメータを低く設定しがち(0が最善とか)。依然として1/512が強い。
- レイヤー毎に右シフト量を決めているのが致命的、というか大きな正則化パラメータパラメータを選ぶ原因かも。各ユニットでいい感じの係数に抑えても、レイヤー内で大きな係数が出たらそれに引っ張られてしまう。
- 2, 4分割くらいで右シフト量を決めるようにしてみるか。演算負荷への影響は少なそう。
- 量子化誤差についても、まだ乗算誤差を組み入れてない。→ざっと計算してみたが、入力信号の分散に依存せず量子化ステップ幅だけできまるから、かなり小さい値になりそう。