BinaryNet が最近話題になっている。ニューラルネットワークの二値化については前から興味があったので読んでみた。 ニューラルネットワークの二値化についてはこれまでも色々と研究があるようである。大きな方向性としては、まずはじめに実数値で重みを学習してそれを二値化するというやり方と、最初から二値の重みを学習するやり方がある。BinaryNetはそのどちらとも明確に分類しづらい、ちょっと変わった手法である。 BinaryConnectBinaryNetの前にBinaryConnectに触れておくことにする。どちらもBengioグループの研究である。BinaryConnectは大雑把に説明すると、以下の様な手法である。 weight matrix自体は実数で値を持っていて、forward/backwardの計算時に二値化する。パラメーター更新時は実数で持っている側のweight matrix