全5154文字
PR

他分野のAI技術を流用

 BNNを実用化する上では、他のAI技術が役立てられた例が少なくとも2つある(図6)。1つは、スパイキング(Spiking)ニューラルネットワーク(SNN)や確率論的(Stochastic)ニューラルネットワーク(SNN)などの技術が貢献した例である。

図6 脳型モデルや言語系AIの技術も解決のヒントに
図6 脳型モデルや言語系AIの技術も解決のヒントに
学習の際に微分値のほとんどが0になってしまう課題は、活性化関数を工夫することで対処した(a)。具体的には、スパイキングニューラルネット(SNN)など向けに開発された、活性化関数の微分値を(0、1)の範囲で1とする「Straight Through Estimator(STE)」という手法を用いる。LeapMindは、畳み込み層の第1層目と最後の層を1ビット化できなかった課題には、自然言語処理技術で単語をベクトル化する技術を流用し、画素データを低次元の密なベクトルデータに変換することで対処したとする。(図:(a)はLeapMind)
[画像のクリックで拡大表示]

 BNNで単純に重みと活性化関数の出力を1ビット(2値)にすると、活性化関数の微分がほぼ0になって、学習(誤差逆伝播法、BP)が成り立たない。このためか、2015年12月に初登場したBNNでは活性化関数の出力はそもそも1ビットではなかった注1)、2)

注1)具体的には、活性関数として「ハード(hard)シグモイド関数」を用いた。これはx<-1は0、区間[-1、1]はy=(x+1)/2、x>1は1となる関数である。

 2016年初頭に発表されたBNNの“バージョン2”では、活性化関数の出力は1ビットだが、その微分値は入力値が-1から+1までの範囲で1と定める対処を施す3)。これは実際に「1」の符号を決めるだけの活性化関数(sign関数)とは別に、連続的に変化する活性化関数を仮定し、その微分値を用いるやり方で、「Straight Through Estimator(STE)」と呼ばれる上述のSNNの技術だった。こうしたSNNでは、微分が容易ではなく、既存のBPがそのままでは使えないからである。

 もう1つが、言語系ニューラルネットワークの技術を用いてBNNの課題を解決した例だ。

 BNNはCNNの重みと活性化関数の出力を1ビット化するが、実はほとんどの実装例では、CNNの畳み込み層の第1層と最後の層は1ビット化できていない。データの入力時および学習時に生の画素データを用いるからである。このため、この第1層と最終層の演算量やメモリーはほとんど減らない。無理に1ビット化すると、推論精度は大幅に低下してしまう。もし推論精度を落とさずにこの2層を1ビット化できれば、BNNの演算量はさらに約1/2に低減でき、推論スピードは2倍近くに高められる。

 これを解決したのがLeapMind 最高技術責任者(CTO)の徳永拓之氏だ。以前は自然言語処理(NLP)技術のエンジニアだった徳永氏は、NLPの「Word embedding」という技術を流用した「Pixel embedding」を考案した注2)。これらは共に、高次元で疎であるデータを低次元で密なデータに変換する技術で、精度を落とさずに入力データを1ビット化できる。

注2)この技術自体は、AIのフレームワークである「TensorFlow」に実装されており、それを呼び出すだけですぐに使えるという。
参考文献
1)Kawamoto,R. et al.,"A 1.15-TOPS 6.57-TOPS/W Neural Network Processor for Multi-Scale Object Detection with Reduced Convolutional Operations," IEEE Journal of Selected Topics in Signal Processing, DOI: 10.1109/JSTSP.2020.2966331,Jan. 2020.
2)Courbariaux,M. et al.,"BinaryConnect: Training Deep Neural Networks with binary weights during propagations,"Advances in Neural Information Processing Systems 28(NIPS 2015),Dec. 2015.
3)Courbariaux,M. et al.,"Binarized Neural Networks:Training Neural Networks with Weights and Activations Constrained to +1 or -1,arXiv:1602.02830v3,17 Mar 2016.