DNN – nibuiroフラグメント β

2018 深層学習系deポイント高い寄せ集め

2018年終わりですね~.
 一年通してDNNによる音声合成開発の成果が多く発表された年ではないですか?音楽系で言えば, UNetによる音源分離でしたり, Transformerによるピアノソロ生成でしたり, 精度上がりましたよね~.
 分野開拓?的にはGraphConvの研究が進んでいます. そして, 応用による化学分野への適用. 世界は加速しイイ感じに加速していますね♪
 あとはー, 情報, チュートリアルが随分と豊富になっていますねー. んでんで, ソフトウェアへの組み込み, エッジコンピューティングへの適用なども進んでいますよねー. TensorFlow Lite for Microcontrollersとか(極端).

 読者層はCVPRとかACLとか完全読破する実力も気力も時間もないけどそれとなく最新研究とか良い資料とか知っておきたいな. という中間層.というか私がそんなモンかなー, なんて.

 それではいってみよー.


NLP

 いやー, 「同時に6紙がSOTAを報告!?!?」 – @_Ryobot とか. 荒れていた?ようですね.にしても, りょぼっとさんの絵は可愛い.
 というかpiqcyさんの記事が高品質.


GAN

まとめのまとめになっていますね…^^;
下記の他にもオモロイのありますんけど.

  • テキストから画像を生成するGANまとめ
  • GoodfellowさんのGANのオススメ論文10選まとめ (2018/02)
  • InfoGAN
    GANの生成べクトルに任意の特徴を表現する隠れ符号を埋め込み生成される画像に任意の特徴が含まれるように制御するというもの.
  • Photo Wake-Up
    たった1枚の写真から3Dモデルを生成する。ヒト型であればある程度崩れていても可。ワシントン大学の研究チームが開発。

  • Twitter

    • BigGANがImageNetの画像生成に成功〜!!チャネル数とバッチサイズを上げるのが重要で,直交正則化をジェネレータに適用し,zのサンプリング範囲を決めて範囲外を切り捨てるTruncation Trickによって多様性と高品質を実現
      Inception Score: 前SOTA 52.52 → 166.3 – [@_Ryobot]

      異なる分野でも正直に効果出そうだなーなんて.

RL

  • A (Long) Peek into Reinforcement Learning
    初心者が強化学習分野に入門しやすいよう書かれた解説記事です.

  • Twitter

    • DQNやA3C等の論文の筆頭著者として知られるMnih氏や,AlphaGoの開発者David Silver氏,分散深層強化学習で革新的な論文を出し続けているHado van Hasselt氏など,正真正銘の超一流研究者による講義動画 – [@learn_learning3]
      https://www.youtube.com/playlist?list=PLqYmG7hTraZDNJre23vqCGIVpfZ_K2RZs

    • Rainbowの亜種であるAPE-Xに, RNNを組み込むことでパフォーマンスを劇的に改善した研究. 任意の状態から学習を行う場合RNNの初期値をどうするかという問題があるが, RNNの状態もとっておく, RNNの状態を作るための初期ステップ(burn-in)を取っておくという対策を行っている
      https://openreview.net/forum?id=r1lyTjAqYX


GraphConv

  • Deep Graph Library (DGL)
    グラフニューラルネットを容易に構築することができるライブラリ.
    GraphConv, TreeLSTMなどの実装が提供されている. バックエンドはPyTorch(+MXNet/Gluon).

Clustering

ちょっと違うですけど, まぁ, まぁ.

  • Deep Clustering
    未学習のCNNに画像突っ込んで下層の出力をkmeansしたら分類できた. という話. おもしろい.

  • UMAP
    tSNEよりムチャ速い上に精度高い. PCA-UMAPなんてのも開発された.


つ か れ た.
マルチモーダル系とかFM系は別記事で書くと思います. よ?

深層学習のちょっとした疑問を解決する

Q. パラメータ(ノード)数って多いほうがいいの?どうなの?

A.
NNはパラメータ数が多い方が汎化性能が高い現象がみられる。reluを使った多層のNNで重みに弱い正則化を適用しクロスエントロピー損失を使った時の解は正規化マージン最大化に対応し、少なくとも2層の時は隠れ層の幅が大きいほどマージンが大きくなり汎化することが示せる。https://arxiv.org/pdf/1810.05369
@hillbig

Q. BatchNormalizationってどういう効果?

A.
・BatchNormで共変量シフトを抑えるよ派(Ioffe派)
・BatchNormは勾配の曲率を滑らかにするよ派(Santurkar派)
・BatchNormは曲率を単純化するよ派(Kohler派)
・BatchNormなんてなくても収束するよ派(原理主義・過激派)
・BatchNormを使いたくても商用利用できないよ派(営利企業派)
@HITStales

Q. Dropoutってどうなの?(多義的)

A.
ResNetにおいて、ノードは一つだけで十分ではないかという研究。実験により全結合より単一ノードの方が決定境界を上手く学習することを確認。Dropoutがなぜ有効なのか?の証左にもなっているというhttps://arxiv.org/pdf/1806.10909
@icoxfog417
正則化の手法としてよく使われるDropoutとBatch Normalizationは、併用するとパフォーマンスの悪化が起こることがあるが、その原因について検証した研究。悪化の理由として、Dropoutを行うことで学習時と評価時で分散が変わってしまう一方、Batch Normalizationは学習で得られた分散を評価時もキープしてしまうため齟齬が生じることが原因と指摘された。https://arxiv.org/pdf/1801.05134
@icoxfog417

後者につきましては、Kaggleにおいても実際にそうであることを報告しているDiscussionがありましたね。

DenseNet

DenseNet

Point

 すべてのレイヤを直接接続することによって、

  • 勾配消失の削減
  • 特徴伝達の強化
  • 特徴の効率的な利用
  • パラメータ数の削減
  • 正則化効果の期待

を実現している。すなわち、各レイヤへの入力は以前のすべてのレイヤから与えられ、直接接続数は$\frac{L(L+1)}{2}$となる。

What’s different from Resnet ?

$$x_l=H_l(x_{l-1})+x_{l-1}$$
 Resnetにおいてレイヤlの出力はレイヤl-1の出力にレイヤl-1の非線形変換を加えたものでチャンネル数(depth)は一定だが、
$$x_l = H_l([x_0,x_1,\cdots,x_{l-1}])$$
DenseNetにおいてはレイヤlの出力はレイヤ$0,\cdots,l-1$の出力をチャンネル方向に連結したものとなる。こうしてみると全くもって異なることが明白になる。

What’s Dense block

 難しいことはなく…実装しようとするとPadding祭りになったりするのだが、BN-ReLU-Conv(1 x 1)-BN-ReLU-Conv(3 x 3)から成るレイヤをトップ画像の様に密結合させたもの。このレイヤ毎のチャンネル(depth)増加数を$k$をgrowth rateと呼んでいる。

DenseNet Families

 で、「DenseNet-B」?「DenseNet-C」?「DenseNet-BC」? 何よソレ。という話なんだがね?

Bottleneck layers.
Although each layer only produces k output feature-maps, it typically has many more inputs. It has been noted in [37, 11] that a I x I convolution can be introduced as bottleneck layer before each 3×3 convolution to reduce Lhe number Of input feature-maps, and Lhus 10 improve computational efficiency. We find this design especially effective for DenseNet and we refer to our network with such a bottleneck layer, i.e., to the BN-ReLU-Conv(l x 1)-BN-ReLU-Conv(3 x 3) version of H_l, as DenseNet-B. In our experiments, we let each 1 x 1 convolution produce 4k feature-maps.
Compression.
To further improve model compactness, we can reduce lhe number Of feature-maps al transition layers. If a dense block contains m feature-maps, we let the following transition layer generate 19m] output feature-maps, where O < 9 1 is referred to as the compression factor. When 0 — 1, the number of feature-maps across transition layers remains unchanged. We refer the DenseNet with 0 < 1 as DenseNet-C, and we set 0 = 0.5 in our experiment. When both the bottleneck and transition layers with O < 1 are used, we refer to our model as DenseNet-BC.

(θがOやら0やらになっていたり、他にもいろいろと間違いあるので気を付けて)

  • DenseNet-B
     特徴マップ数の削減、計算の効率化のためConv(3 x 3)レイヤの前にBottleneck layerとして、Conv(1 x 1)レイヤを導入した。これはチャンネル方向での圧縮操作(和)となる。
  • DenseNet-C
      DenseBlockがm個の要素を持つ特徴マップを出力する場合、より簡潔に表現するために$0 < θ\leq 1$のもと、$\lfloor θm \rfloor$に要素数を削減するためTransition layerとして、BN-ReLU-Conv(1 x 1)-AvgPool(2 x 2, stride 2)から成るレイヤをを導入した。
  • DenseNet-BC
     上記二つの工夫を取り入れた版。

Performance


よさげ。


実装:
https://github.com/sheep02/2D_DenseNet_Keras.git
 これ自体の動作確認はしていないのですが、これをもとに別のモデルを組みましたので恐らく動作します。


Reference: