Compressing  Neural  Networks  
with  the  Hashing  Trick
(論論⽂文紹介)
ICML2015読み会
2015/08/20  @  ドワンゴセミナールーム
得居  誠也  (Preferred  Networks)
紹介する論論⽂文
Compressing Neural Networks with the Hashing Trick
Wenlin Chen
James T. Wilson
Stephen Tyree
Kilian Q. Weinberger
Yixin Chen
2
←  Hash  で  NN  圧縮、ゲームプレイ、など
←  ⼤大規模学習、博⼠士号取って今は  NVIDIA
←  Feature  Hashing  つくった先⽣生
⾃自⼰己紹介
l  得居  誠也  (Seiya  Tokui)
l  Twitter,  GitHub:  @beam2d
l  東⼤大中川研(修⼠士)→  PFI  →  PFN
l  専⾨門:機械学習
–  中川研時代にハッシュの学習を研究
–  今は主に深層学習、Chainer  の開発など
–  紹介する論論⽂文は  NN+Hash  なので個⼈人的にコンボが決まっています
3
省省メモリで⾼高性能をめざす
ニューラルネットを圧縮する話はいろいろある
l  いらない重みを取り除く  [LeCun+,  ʻ‘89]
l  重み共有(ConvNet,  tied  weights  AE)
l  半精度度浮動⼩小数点  [Courbariaux+,  ʻ‘14]  [Gupta+,  ʻ‘15]
l  重み⾏行行列列の低ランク近似  [Denil+,  ʻ‘13]  [Denton+,  ʻ‘14]
l  モデル圧縮・蒸留留  [Bucilu+,  ʼ’06]  [Hinton+,  ʻ‘14]  [Ba&Caruana,  ʻ‘14]
今⽇日紹介する論論⽂文の⼿手法  (Hashed  Nets)  はこれらと直交するテクニック
で、組み合わせてつかうこともできる
4
Feature  Hashing  [Weinberger+,  ICMLʼ’09]
l  ハッシュ関数を使って、特徴量量を低次元に圧縮する
l  次元の対応とかける  +1/-‐‑‒1  をともにハッシュ関数でつくる
5
特徴
Feature
ゲーム
hashing
⾯面⽩白い
おいしい
……
ハッシュ値
0
1
2
3
……
m
+	
+	
+	
-	
-	
内積 内積
期待値が一致、
分散もバウンドあり
Hashing  Trick
l  ハッシュを使って特徴ベクトルを低次元空間に埋め込むことで、カーネ
ルの内積をその低次元空間での線形な内積で表す
–  Feature  Hashing  を使う=線形カーネル
–  MinHash  を使う=Jaccard  係数カーネル  [Li+,  NIPSʼ’11]
l  Cf.)  カーネルトリック
–  ⾼高次元空間での内積を、ベクトルを陽に作らずに扱う
l  Cf.)  ランダム射影
–  ⾼高次元空間での内積を、低次元空間での内積で近似する
–  FastFood  [Le+,  ICMLʼ’13],  Deep  Fried  ConvNet  [Yang+,  ʻ‘14]
l  3年年半前に  PFI  セミナーでも紹介しました
http://www.slideshare.net/pfi/pfi-‐‑‒seminar-‐‑‒20120315
6
ランダム重み共有
l  全結合層の重みをランダムに共有する  (論論⽂文  Figure  1)
l  どの辺でどの重みをつかうかは辺の  ID  に対するハッシュで決める
7
ランダム重み共有を特徴ハッシュで実装する  (Hashed  Nets)
l  出⼒力力ユニットごとに特徴をハッシュして、同じ重みで出⼒力力を計算する
l  Feature  Hashing  にならってハッシュ部分で  ±1  をかけてもよい(実
験ではこちらを使⽤用)
8
ハッシュ部分では
重みをかけない
出⼒力力側で同じ⾊色の辺は
同じ重みをかける
誤差逆伝播
l  このグラフに従って素直に誤差逆伝播するだけ
l  重みの勾配も基本はそのまま(式  (12)  にまとまってる)
9
実験
l  MNIST(とその様々な変形バージョン)と  CONVEX,  RECT  データ
セットで実験
l  既存の圧縮⼿手法と⽐比較
–  ベースラインとして、単純にネットワークを⼩小さくして同じパラメータ数と
した無圧縮の  NN  とも⽐比較
–  提案⼿手法  (HashedNets)  については  Dark  Knowledge  との組み合わせも実
験
10
実験1)圧縮率率率  vs  エラー率率率(論論⽂文  Figure  2,  3)
11
実験2)メモリ量量を固定して「もとのNN」を⼤大きくしていく
12
まとめ
l  NN  を圧縮する試みはいろいろある
l  出⼒力力ユニットごとの特徴ハッシュは、(ハッシュを使った)ランダム重
み共有と等価
l  特徴ハッシュによる  NN  の圧縮は、既存の圧縮⼿手法と⽐比べて、⼤大きく圧
縮しても予測性能があまり落落ちない
l  使えるストレージ(メモリ)のサイズが決まってる場合、パラメータ数
を固定して次元を上げていくことで単純な⼩小さい  NN  よりも予測性能を
上げられる  (inflated  NN)
13
感想
l  既存⼿手法とくらべて想像以上に性能がよさそう
l  特徴次元に対する操作だけなので、ConvNet  にもおそらく応⽤用できる
l  GoogLeNet  がやったような  1x1  conv  による(ボトルネック型の)次
元圧縮とどちらが良良いのか気になる
–  Hashed  Nets  は⼀一⾒見見ボトルネック型の  NN  だが、ボトルネックでの
値が出⼒力力ユニットごとにバラバラなので少し違う
14

論文紹介 Compressing Neural Networks with the Hashing Trick