2015-10-30

[1510.04189] Improving Back-Propagation by Adding an Adversarial Gradient

http://arxiv.org/abs/1510.04189
A simple extension to the back-propagation method is proposed, that adds an adversarial gradient to the training.
ニューラルネットで、1パス目は重みを更新せずに誤差を計算して、2パス目はその誤差を加工した値を入力値に加算して通常の学習を行うというシンプルな手法で精度が上がるというもの。

Algorithm 1 だけでだいたい分かるが、
z = x + ε * sign(e)
で、x は1パス目の入力値、e は1パス目で計算した誤差、sign 関数は { +1, -1 } を返す関数、ε は揺らす大きさ(係数)、z は2パス目の入力値となる。
As stated in Goodfellow et al. (2014) and Fawzi et al. (2015), adding adversarial perturbations is quite different from adding input noise. Adding noise will direct the model to increase the margin in all possible directions around the training samples. A model has limited capacity, and this may limit the achievable margin in the directions that matters most, where the margins are smallest.
モデルの表現力には限界がある。ノイズを加える手法は不要な方向にもマージンを大きくしてしまうのが問題だが、adversarial perturbations はそれとは違うということが記述されている。

2015-10-28

[1409.2329] Recurrent Neural Network Regularization

http://arxiv.org/abs/1409.2329
We present a simple regularization technique for Recurrent Neural Networks (RNNs) with Long Short-Term Memory (LSTM) units. Dropout, ...
LSTM に dropout を適用するには、リカレント(同じ層の1つ前の時間ステップ)の隠れユニットに適用するのではなく、入力(または1つ下の層の隠れユニット)に対して適用するとよいという話。

Figure 2 と p3 の下の式の太字 D の箇所を参照するとよい。

2015-10-26

[1510.02693] Feedforward Sequential Memory Neural Networks without Recurrent Feedback

http://arxiv.org/abs/1510.02693

feedforward sequential memory networks (FSMN), which can learn long-term dependency without using recurrent feedback.
提案されている FSMN は、非再帰形ディジタルフィルタと同じ型のネットワークのようだ。

Table 2 のアーキテクチャでは、メモリブロック付きの隠れ層素子数は 600 とあるが、30 次の FIR フィルタということは 30 * 600 = 18k となるわけで、計算量が多すぎるのではないだろうか。また、隠れ層の数も各手法で異なっており、性能比較が妥当かどうか疑問である。

なお、非再帰形ディジタルフィルタについては次のページを参考されたい。

ディジタルフィルタとz変換
http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/basic/chap10/index.htm

ディジタルフィルタとz変換

http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/basic/chap10/index.htm
1クロック(T)だけ信号を遅延する関数は z-1 で表されます。

2015-10-25

[1510.03009] Neural Networks with Few Multiplications

http://arxiv.org/abs/1510.03009
First we stochastically binarize weights
Second, while back-propagating error derivatives, in addition to binarizing the weights, we quantize the representations at each layer to convert the remaining multiplications into binary shifts.
次の2つの手法により乗算を減らす。
  1. binary connect (2値結合) / ternary connect (3値結合)
  2. quantized back propagation (量子化誤差逆伝搬法)
(1) 重みを確率変数とみなし、2値 {-1, 1} (binary connect) または 3値 {1, 0, -1} (ternary connect) にサンプリングした重み行列で計算する。これにより内積を乗算ではなく加減算で計算できる。

(2) 誤差逆伝搬時の重み更新量 ΔW を計算するときに、入力値 x を確率的に量子化することで、乗算を使わずにシフト演算で計算する。
具体的には、x = 5 の場合、log_2(5) = 2.32... を切り下げて 2 なので、シフト量は 0.75 の確率で 2 となり、0.25 の確率で 3 となる。よって、ΔW = δ << 2 (または δ << 3) として計算できる (δは誤差項)。シフト量は -4~3 の範囲に収まるようにクリッピングする。

論文からは (2) の quantized back propagation の方法がよく分からなかったので、第一著者のソースコードを参照した。

Zhouhan Lin (第一著者) のソースコードは次のアドレスにある。
https://github.com/hantek/binary_conv/blob/master/matcode/layer_m.py

精度が若干向上している(正則化のような効果が出ている)のは、確率的に重みや(重み更新時の)入力値が揺れているためではないかと思われる。つまり、ノイズを混ぜているのに似ているではないだろうか。

Low-discrepancy sequence - Wikipedia, the free encyclopedia

https://en.wikipedia.org/wiki/Low-discrepancy_sequence
Low-discrepancy sequences are also called quasi-random or sub-random sequences

A deviation of CURAND: standard pseudorandom number generator in CUDA for GPGPU

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MTGP/curand-slide-mcqmc.pdf
xorwow = xorshift + Weyl generator
XORWOW の解説スライド。

準乱数の生成 - MATLAB & Simulink - MathWorks 日本

http://jp.mathworks.com/help/stats/generating-quasi-random-numbers.html
一般の生成法で説明した疑似乱数列とは異なり、準乱数列は多くのランダム統計検定に失敗します。しかし、真のランダムの近似はその目的ではありません。準乱数列は、初期のセグメントがこの行動を指定の密度まで近似させる方法により、均一に空間を満たします。