BatchNormalizationの初出論文メモ

Internal Covariance Shiftの問題

ニューラルネットワークでは,入力となるデータの分布が白色化されていると学習が早く進む. 特徴を無相関化し,平均0,分散1とすることは画像処理では特によく行う.

しかし,階層的なニューラルネットでは,入力層での入力データが白色化されていたとしても, 重みパラメータは更新されていくため,後層では常に分布が変化する入力をもとに学習することになる.
せっかくパラメータを学習しても、新たな入力分布に合わせて再適応させなければならず、無駄となってしまう。 この現象を著者らは, internal covariance shift と呼んでいる.

分布をコントロールしないこのような場合には、勾配消失問題も起きやすくなる。
このときには,

  • 学習率を小さく設定する
  • 重みの初期化を注意深く行う

などの処置を行う必要がある。
そこでこの論文では上記の問題を回避する、Batch Normalizationを提案している。
Batch Normalizationでは以下のように, ミニバッチ内で平均を0に,分散を1にする操作を行う.

f:id:yusuke_ujitoko:20170616154548p:plain:w400

上図の最後の行を見ると, gamma と beta を掛けて細かい調整ができるようになっている. たとえば,Batch Normalizationの効果をキャンセルすることもできる (gamma を標準偏差に設定し,betaを平均に設定する)

ただし,このgammaとbetaは学習できるパラメータとなっているため, 人が自由に決められる訳ではない. 単純に表現力を増やした,という意味と解釈した.

BatchNormalizationには、

  • ミニバッチ単位で平均・分散を正規化するため計算量が小さい
  • ミニバッチ単位で微分可能

という特徴がある。 アルゴリズムはどのようになるかというと

訓練時はミニバッチごとに正規化し、
一方、テスト(inference)時は、全訓練データから学習した情報で正規化したいため、 分散は訓練データの平均、不偏分散を使う。

どこにBatch Norm層を挿入するかというと, 普通は全結合層や畳み込み層の直後で,活性化関数の直前.

MNISTの結果

論文の図をそのままのせる。

f:id:yusuke_ujitoko:20170616154645p:plain

収束が早く、また入力分布は安定しているのがわかる。

読み解けなかった点

regularizationの意味

Batch Normによる正則化の効果を謳う文句がところどころに散見されるが, その正則化の意味がよくわからなかった.

Furthermore, batch normalization regularizes the model and reduces the need for Dropout (Srivastava et al., 2014).

When training with Batch Normalization, a training example is seen in conjunction with other examples in the mini-batch, and the training network no longer producing deterministic values for a given training example.

バッチに含まれる訓練データに依存して各データは正規化されるが, そのバッチの選び方はdeterministicでないため,結果的に訓練データの正規化のされ方もdeterministicではなく, ばらつきがあるので,訓練データの拡張につながって,正則化の効果があるという意味?

Reduce the photometric distortions.の意味

Batch Normのネットワークにおけるテクニックの最後の例として, Reduce the photometric distortionsが紹介されているが, これは訓練データの拡張をあまりしない,という意味?

Because batchnormalized networks train faster and observe each training example fewer times, we let the trainer focus on more “real” images by distorting them less.

ResNetは様々な長さのパスをもつネットワークのアンサンブルとみなせる

ResNetの初出の論文を読んだが、 なぜ深層の学習がうまく行ったのか不明瞭だった。
本論文ではその「なぜ?」の部分に対する解釈を与えている。
この解釈は興味深く感じる。

概要

  • ResNetの新たな解釈を提案
    • ResNetは様々な長さの多くのパスの集合体
    • 深層の学習を短いパスだけを使って行っている。
  • ResNet内の様々なパスを明示的に展開した上で実験
    • アンサンブル学習の振る舞いを観測
    • 長いパスの部分は学習に寄与しない
    • 短いパスが重要
      • 勾配消失問題を避けている。

パスの展開

ResNetは、畳み込みとskip connectionの2通りのパスをもつ各モジュールが積み重なっている。
このパスを明示的に以下のように展開することができる。

f:id:yusuke_ujitoko:20170615211121p:plain

展開図からも分かるように、
深さに応じて指数関数的にパスが増えることになる。
この多数のパスに関して、以下のような疑問に応える形で実験を行っている。

  • この展開されたパス同士に依存性はあるか?冗長性があるか?
  • 依存性がない場合、アンサンブル学習と同じ振る舞いを見せるか?
  • パスの長さによって結果へのインパクトは異なるか?

4.1 テスト時に一つのResNetモジュールを取り除く

テスト時に1つのResNetモジュールを取り除いて(skip connectionだけ残す)、結果への影響を見る。
VGGではモジュールを取り除くことで結果が悪くなったが、ResNetではあまり変わらなかった。
この結果によりResNetでは個々のパスには依存性がないことがわかった。

f:id:yusuke_ujitoko:20170615212317p:plain

この結果から、ResNetは 各パスからなるネットワークのアンサンブルとみなせるはず。

4.2 テスト時に多くのモジュールを取り除く

アンサンブルな振る舞いがあるとすると、
取り除くモジュールの数に応じて、スムーズに結果が変化すると期待できる。
結果として、valid pathsの数に応じて、errorがスムーズに増えた。

f:id:yusuke_ujitoko:20170615212308p:plain:w400

勾配消失

展開されたResNetでは、パスごとにskip connectionをどれだけ通るかが異なるため、畳み込み処理が行われる回数も異なる。 これをパスの長さと言っている。
このパスの長さにより勾配消失が起こりやすいかを調べている。

真ん中の(b)が、パスの長さごとの入力層の勾配の大きさを示している。 これを見ると、パスが小さくなるにつれて入力層での勾配は大きくなっていることがわかる。

f:id:yusuke_ujitoko:20170615213513p:plain

また、(c)は各パスにおける勾配の合計値を示しており、これを見るとある程度短いパスの方が、訓練時に勾配情報が伝わっていることがわかる。

ResNet論文を読んだメモ(arXiv:1512.03385)

今更ながらResNet論文を読んだメモ

概要

  • 深いネットワーク
    • 勾配消失や勾配爆発によって収束しない問題は、初期値の正規化や中間層の正規化によって解決しつつある
    • 一方、収束はするが訓練するのがある程度、層を深くするとerrorやaccuracyが悪化する問題がある
  • そこで効果的に学習が進むフレームワークを提案
    • residual functionsを学習する

f:id:yusuke_ujitoko:20170615193941p:plain:w300

  • 層を深くしてerrorが小さくなるのを確認した。

なぜうまく行くのか

なぜResidual Learningだと、うまく行くのかが良くわからなかった。
以下は推測(Sec3.1の記述がポイントっぽい)。

現実には層を深くしていくとerrorが悪化することが観測されている。

少ない層数である程度うまく行ったネットワークの後ろの層に、 層を追加してさらに精度を良くしていくことを考えると、 追加した層は細かい調整をする程度の役割を負えばよいので、 ほぼidentity mappingになっているのが望ましい。
そこで、identity mappingのパスと、そうでないconvを掛けるパスを用意することで、 identity mappingをとりやすくしたと推測.

Fig.7 の図を見る。

f:id:yusuke_ujitoko:20170615194024p:plain:w500

層ごとのレスポンスを検証したところ、 ResNetではplain netに比べて、レスポンスが後ろの層にいくごとに徐々に小さくなっていくことが示されている。

つまりResNetでは、各層が入力に関与する割合が、plainの場合と比べて小さくなっており、 微調整が効いているといえる?

層を増やしていくと、この傾向は更に強まり、一個一個の層のレスポンスは相対的に小さくなり、安定していくとみられる。

https://arxiv.org/abs/1603.05027も読んでみたが,結局うまくいく理由はよくわからなかった.
(追記) ResNetの分析で面白い論文を見つけた.

どの図もiterが3e4あたりでガクッとerrorが小さくなっている理由

f:id:yusuke_ujitoko:20170615194246p:plain

などの図を見ると,だいたい同じようなiterationで学習が一気に進んでいる.
3.4 Implementaionを見ると,

The learning rate starts from 0.1 and is divided by 10 when the error plateaus,

とあって,平坦になったら学習率を1/10にすることが書かれている. でもアーキテクチャが違ったときに,平坦になる速度が異なるアーキテクチャ間で同じになることなんてあり得ないと思う. 実験するときには決められたタイミングで学習率を小さくしているのだろう.

でもそうなると,その時点で最適化が進んでいるかいないかで, errorは大きく変わりそう. 例えば最適化があまり進んでいないのに,学習率が下げられてしまうと,学習が進まなくなってしまう. どうしてるんだろうか.

closed formのメモ

closed formとは,有限個の"よく知られた"演算の組み合わせによる解の表し方のこと.
“よく知られた"の部分は主観や文脈に左右されるが,例えば以下の演算など.

ただしlimitは使えない

解がclosed formで表せるとき,その問題はtractableという.
例えば,二次関数{ax^{2} + bx + c = 0}は解の公式のようなclosed formで表せるのでtractableであると言える.

closed-formでないものとしては例えば, {} $$ f(x) = \sum_{i=0} \frac{x}{2^{i}} $$ など

Cramér GANでいらすとや画像生成してみる

このGANは数日前(5/30)に投稿されたもの。

これまでGANのベースラインとして,
vanilla GAN,DCGAN,WGAN,WGAN-gpなどが使われてきた.
この中のWGANやWGAN-gpより優れているという主張が論文内でされている.
(abstで it performs significantly better than the related Wasserstein GAN との記述)

また,twitter上では「WGANは死んだ」などの強めのつぶやきが観測されている.

f:id:yusuke_ujitoko:20170603140649p:plain f:id:yusuke_ujitoko:20170603140657p:plain

その強さを見てみたいので,このCramér GANの論文を読み,
実装していらすとや画像を生成してみたというのが本記事の主旨。
ついでにWGAN-gpも実装して比較した。

f:id:yusuke_ujitoko:20170604160034p:plain

論文の概要

  • 機械学習に使う確率分布間の距離指標には,次の3つの性質が必要
    • sum invariance
    • scale sensitivity
    • unbiased sample gradients
  • 最近注目のWasserstein距離はこのうち前2つは満たすが,最後の1つは満たさない.
    これは深刻な問題につながる
  • そこでWasserstein距離の代わりにCramér距離を使うことを提案
    • Cramér距離は上記3つの要件を満たす
  • Cramér距離を使うCramérGANを提案

距離指標の性質

距離指標としてよく使われるKL divergenceとWasserstein距離の定義をまず確認すると,
分布{P}{Q}間のKL divergenceは {} $$ KL(P \mid \mid Q) = \int_{-\infty}^{\infty} \log \frac{P(dx)}{Q(dx)} P(dx) $$ であり,
そして分布{P}{Q}間のWasserstein距離は、累積分布関数を{F_{p} = \int_{-\infty}^{x} P(dx)  }とすると、
その逆関数を使って、 {} $$ w_{p}(P,Q) = \left( \int_{0}^{1} \mid F_{P}^{-1}(u) - F_{Q}^{-1}(u) \mid^{p} du \right)^{1/p} $$ と表される。
これらKL divergenceとWasserstein距離の違いとしては,
Wasserstein距離は分布の変化には鋭敏ではないが,出力の幾何関係には鋭敏であること.

さて、ここから距離指標の性質について説明していく.
まずパラメータ定義をする。
距離を {\boldsymbol{d}},分布{P, Q}に従う変数を{X,Y}とする.

{\boldsymbol{d}}scale sensitive であるとは,
全部の{X,Y}に対して,以下を満たす{\beta>0}{c>0}があること {} $$ \boldsymbol{d} (cX, cY) \leq \, \mid c \mid^{\beta} \boldsymbol{d}(X, Y) \tag{S} $$

{\boldsymbol{d}}sum invariant であるとは,
{X,Y}に対して独立な、どのような{A}に対しても以下が成り立つこと {} $$ \boldsymbol{d} (A+X, A+Y) \leq \boldsymbol{d}(X, Y) \tag{I} $$

理想的な距離{\boldsymbol{d}}は上の(S)と(I)を満たすと言われているらしい(Zolotarev, 1976).

機械学習向けにはさらに3つ目の性質が距離指標には必要とのこと.
機械学習では{\boldsymbol{d}}をlossとして使う. {Q_{theta}}{\theta}をパラメータとする分布とすると,
lossとして{d(P,Q)}を考えて,このlossを最小化するような{\theta}を見つけたいのだった.
そのためには,3つ目の性質として unbiased sample gradients が必要となる.

またパラメータを幾つか定義する。
{X_{1},X_{2}, \cdots, X_{m}}{P}からサンプリングした変数、
{\delta_{x}}を,異なる{x}に対するディラック関数、
経験分布を{\hat{P}_{m} = \frac{1}{m}\sum \delta_{X}  }
sample loss{\theta \rightarrow d(P, Q)}とする.

{\boldsymbol{d}}unbiased sample gradients を持つときとは,
sampleのlossが{P}の真のlossと等しいこと.つまり以下のときのこと。 {} $$ \mathbb{E}_{X_{m} \sim P} \nabla_{\theta} \boldsymbol{d} (\hat{P}_{m}, Q_{\theta}) = \nabla_{\theta} \boldsymbol{d} (P, Q_{\theta}) \tag{U} $$ 上の(U)が満たされない場合には,SGDで間違ったminimumに到達してしまう.
一方,(U)が満たされれば,sample lossがQ=Pとなることが確かに言える.

さてこれまで(U),(I),(S)と見てきたが,
KL divergenceとWasserstein距離はこれらを満たしているかというと,

  • KL divergenceは(U)は満たすが,(S)は満たさない
  • Wasserstein距離は(I)と(S)は満たすが(U)は満たさない

ということのようだ。(証明も載っているが省く)

Cramér距離

そこでCramér距離が出てくる.
Wasserstein距離は(U)を満たさないが,このCramér距離は(U)を満たすので,
こちらのCramér距離の方が良いということらしい.

Cramér距離の定義は次のようになる.
分布{P,Q}に対する累積分布関数を{F_{P}, F_{Q}}とすると, {P}{Q}間のCramér距離は, {} $$ l_{2}^{2}(P,Q) = \int_{-\infty}^{\infty} (F_{P}(x) - F_{Q}(x))^{2} dx $$ となる。

この平方根{l_{2}}は距離指標として使える。 また、この{l_{2}}は次の{l_{p}} familyに属する指標でもある。 {} $$ l_{p}(P,Q) = \left( \int_{\infty}^{\infty} \mid F_{P}(x) - F_{Q}(x) \mid ^{p} dx \right)^{1/p} $$ p=1において,この{l_{p}}とWasserstein距離は同一になる.
しかし,p≠1では異なる.
Wassestein距離と同じく,この{l_{p}}の指標も次のdual formをもつ.
(Dedecker and Merlevede ,2007) {} $$ l_{p}(P,Q) = \sup_{f \in \mathbb{F}_{q}} \mid \mathbb{E}_{x \sim P} f(x) - \mathbb{E}_{x \sim Q} f(x) \mid $$

Cramér距離は性質として(U)(I)(S)を満たす。 具体的には、

  • {1 \leq p \leq \infty}において(I)(S)が成り立ち
  • {p=2}のときのみ(U)が成り立つ

Cramér距離はWasserstein距離とKL divergenceのいいとこ取りした指標と言える. 論文ではCramér距離が(U)(I)(S)を満たすことの証明があり,
その後に別の指標として energy distance が導入されている.

この energy distance (Szekely, 2002)はCramér距離の拡張になっている.
具体的には, energy distance の1/2がCramér距離に相当する.
そのため energy distance も(U)(I)(S)を満たすことがわかり, 実装アルゴリズムではこちらの energy distance が使われている。

Cramér GANの実装

Generatorは前述の energy distance を最小化するように学習し,
Discriminatorは energy distance を最大化するように学習する.

f:id:yusuke_ujitoko:20170603155440p:plain:w500

Cramér GANの実装はWGAN-gpによく似ている。
WGAN-gpはImproved WGANという論文タイトルであることを踏まえると、
Cramér GANはImproved Improved WGAN的な位置づけと言えるかも.
注意点としては、

  • Discriminatorの出力ユニットが1つではなく、高次元となること
    (論文では256ユニット。高次元であればあるほどよいと書いてある)
  • BatchNormalizationを使わないこと
  • Dropoutを使わないこと

Cramér GANによるいらすとや画像の生成

これまでと同じくいらすとや画像を使わせていただいて、 GANを試してみる。
生成した画像がこちら.

100epoch

f:id:yusuke_ujitoko:20170604151717p:plain

500epoch

f:id:yusuke_ujitoko:20170604151745p:plain

1000epoch

f:id:yusuke_ujitoko:20170604151803p:plain

5000epoch

f:id:yusuke_ujitoko:20170604151820p:plain

27000epoch

f:id:yusuke_ujitoko:20170604151849p:plain 全体の半分はぼやけていて、半分は鮮明に生成できている。
画像の質としてはWGANより向上しているかどうかは分からない…

いつも思うが、うまく行かない時に,
「実装が間違っているのか」、「パラメータチューニング不足なのか」、 「そもそもGANの能力が低いのか」不明..

WGAN-gpとの比較

f:id:yusuke_ujitoko:20170604155904g:plain

画像の質にはそこまで明確に差はない. 質的な観点で言うと,いらすとや画像の生成ではDRAGANがいまのところ一番うまく行ってるかな.

(追記)
このサイズのいらすとや画像で主観評価するのは限界が見えてきたし,そろそろこのテーマも締めようかなと思っています.
もしくはどなたか定量評価する方法を教えて下さい.
論文のタイトルを教えていただくだけでも構いませんのでお知恵を拝借したいです.

この論文では,Cramér GANの特徴として,

  • Increased diversity
  • More stable learning

について記述されているので,少なくとも多様性の方は比較してみて追記したい.

1000epochまでのloss変化

f:id:yusuke_ujitoko:20170604152034p:plain

おまけ:Cramér GANによるMNIST画像生成

f:id:yusuke_ujitoko:20170604153240g:plain

redditCramér GANのスレッドでは,
MNISTではCramér GANはWGAN-gpより僅かに良いという報告もあった.
これはきっと質的な意味での言及だと思う.
f:id:yusuke_ujitoko:20170604174538p:plain

(追記)

Cramer GANについて議論が活発に交わされている.

https://medium.com/towards-data-science/notes-on-the-cramer-gan-752abd505c00 https://medium.com/@marcgbellemare/dear-arthur-38288bae43f5