本日はPruningによるネットワーク高速化の論文を取り上げます。背景としてはディープニューラルネットワークではConv層の計算量やパラメータ数が膨大で、処理時間増大やメモリ圧迫が生じるのでなんとかしたいというところから来ていますね。
特に、ディープラーニングを組み込みで動かす場合はこのあたりの話はかなりシビアに効いてきます。
Pruning Filters for Efficient ConvNets (2017)(PDF)
Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, Hans Peter Graf
・Pruningによる高速化手法。
・Conv層をカーネルごと削減する手法を提案。
・L1ノルムが最小のカーネルを有効性が低いと仮定して削除する。
・既存のBLAS等のライブラリで実現可能。
・ResNetなど複雑な構造のネットワークでもConv層のPruningは可能
・関連するLayerもあわせて次元削減して次元数を揃える点に要注意
・Residualを出力するConv層を基準に削除次元を選定すると良いとのこと
・ランダムにカーネル選定するよりはL1を用いた方がわずかに良かった
・Layer別にPruning時の性能低下率と速度向上率を検証。
・性能低下を招きやすいLayerや、速度向上しやすいLayerがあることを示した。
所感
カーネル選定手法はまだまだ議論の余地はありそうですが、ポピュラーな構造のネットワークについて丁寧に検証されている論文でした。