Chainerを使った自作の損失関数の実装。
損失関数としては失敗作。
音の波形を、量子化したone hotを入力して予測するとき、
損失関数 Softmax Cross Entropyでは、正解の1要素しか評価されない。
音としてはできるだけ近い振幅値(indexが近い)に予想されるように、
振幅が近いほど損失値が小さくなるような評価式を考案してみた。
WaveNetChainer-Examples-WaveNetを使った。これに損失関数を追加し、変更を加えた。 データは、非常に少ないが、お試しとして、wav of Pannouの中の140個(約130秒分)を使った。
下図が損失と正解率の結果である。 4 iteration毎に描いていて、値が大きくばらついているため、波形がギザギサになっている。
下図は比較のため、同じモデル構成と同じデータを使って損失関数にSoftmax Cross Entropyの場合の結果である。
損失関数としてSoftmax Index Weightedを使った場合は正解率が全然向上していない。
この理由は、Softmax Index Weightedでは、局所的に損失がボトムになるところ(局所最適)がいたるところにあって、ターゲットに落ち込まないためと考えられる。