Highway Networks
通常のNeural Networks
活性化関数
入力
重み
バイアス
としたときには、通常の層は以下のような計算で出力を決めます。
これは単純に
- 線形変換を作用
- バイアス分だけずらす
- 活性化関数で非線形変換
という操作をしていることになります。
Highway Networks
一方で、Highway Networksの層は以下のような変換を行います。
活性化関数
シグモイド関数
入力
重み
バイアス
要素ごとの積
としたときに、
です。
これは、通常のニューラルネットワークの層の働きを包含しています。
通常の層と同じ働きをするケース
仮に
という条件が揃っていたとしましょう。
は
となり、通常のニューラルネットワークの層と同じように働くことになります。
あたかも層が無いかのように振る舞うケース
仮に
という条件が揃っているとしましょう。
は
となり、入力をそのまま出力します。
Highway Networksの働き
基本的まとめ
一般的には
であることに着目すれば、通常のニューラルネットワークの層の働きと、何もしないで入力を通過させるかの中間的な働きをすることが期待できます。
すなわち以下の式
において、は、そのバランスを取る役割を担っていることになります。当然、このバランス自体も、をパラメータとして学習により決定されます。
Highway Networksの利点(論文の主張)
基本的に、ディープラーニングと謳われる通り、ニューラルネットワークは深い構造をしていることで高い能力を示してきました。しかし一方で、層が深くなるほど学習は困難になってきます。
これは「1.誤差逆伝搬法が上手く動作しない」や「2.パラメータの増加による鞍点(学習が停滞する場所)の増加」が原因としてあげられます。「1.」にはReLUや事前学習による重みの初期化、「2.」にはAdamを代表とする最適化手法の改良によって解決がなされてきました。
今回のHighway Networksはネットワークの構造を工夫したことで、深い層の学習を可能にした手法であると言えます。
実際、論文では「確率的勾配降下法(SGD)」を使い、通常のニューラルネットワークと比較をしていますが、層が増えていった際の学習の困難さの違いが顕著に現れています。
以下はCIFAR-10(10種類の画像認識コンペ)の学習曲線です。緑色がHighway Networksであり、青色が通常のNeural Networksです。左から(10、20、50、100)と層の数を増やして学習をしていますが、Highway Networksでは層の増加による学習の困難さへの影響はあまりなさそうです。
※ただし、単純に学習による損失の減少は、層が少ない通常のニューラルネットでも十分になっています。これはCIFAR-10がそれほど複雑なニューラルネットでなくても、ある程度対応できる問題だからです。
CIFAR-100でも同様に実験を行い、900層もの深いHighway Networksを学習させたところ、それでも最適化が難しくなる兆候は見られなかったそうです。
詳しくは以下を参照
最後に
Chainerでの実装
ChainerにはHigjway Networksの層が既に実装されています。
import chainer.links as L
を書いておけば
L.Highway(in_out_size)
in_out_sizeは入力・出力ベクトルの次元。デフォルトで活性化関数は「ReLU」が選ばれることに注意してください。(したがって、順伝搬の際に活性化関数を書く必要はありません)
まあ、それほど難しいものではないので、自分でChainerを使って実装するのも簡単でしょう。
TensorFlowでの実装
以下のページで実装が載せられています。
それほど難しくありません。
Highway Networksのアイデアの根幹
Highway NetworksはLSTMにインスパイアされて出てきたものです。LSTMも複数のGateを用いて入力を変換し、通過させる度合いを調整しています。