【画像処理 & 機械学習】論文LT会! #5 @ LPIXEl に参加しました。
めっちゃ今更ですが(イベントから気付けば二週間経過)、LPIXElさんで 2019/7/22 に行われた論文LT会で参加 & LT発表をしてきた感想を残しときます。
既に #6 が開催された後なのですが、そのまとめを id:mocobt さんが書いてくれると聞いたので #5 もついでに公開しようかなと。お蔵入りしかけてましたが。
しかも #6 のまとめの方が先に公開されてしまった、何てこったい...
今回は何故かはわからないですが kaggler の侵略に遭ったため、発表者9人中4人が Kaggler Master という異例な事態でした。(某🐸さんに目を付けられたのが始まりだったのかも。)
当日は以下のような感じだったので、
この会、僕以外の kaggler が 「kaggle ちょっとやってます(Master)」「一応 kaggle やってます(Master)」 なの辛すぎでは..?
— 俵 (@tawatawara) July 22, 2019
しがない Expert にとっては肩身が狭かったです笑
既にまとめや感想を上げてる方がいらっしゃるのでそちらもご覧ください。kaggle tokyo meetup #6 のときと同様にえじさん( id:ejinote )が詳細なメモを残してくれているので、この記事は軽めの感想で済ませようと思います。
因みに前回(#4) の発表内容のメモも書いているので、興味があればどうぞ。
- LT 一覧
- When Does Label Smoothing Help?
- Unreproducible Research is Reproducible (ICML2019)
- Efficient Sub-Pixel Convolutional Neural Network を巡るあれこれ
- Move Evaluation in Go Using Deep Convolutional Neural Networks
- Gait Recognition via Disentangled Representation Learning (CVPR2019)
- Interpretation of Neural Networks is Fragile (AAAI2019)
- Mask Scoring R-CNN (CVPR2019)
- Learning to Generate Synthetic Data via Compositing (CVPR2019)
- Distilling the Knowledge in a Neural Network (Deep Learning and Representation Learning Workshop at NIPS2014)
- おわりに
- 余談
LT 一覧
When Does Label Smoothing Help?
Label Smoothing は有効な手段としてコンペなどでもよく使われるものの、実際何が起こっているのかよくわかっていない。この論文ではそこを調査すると共に、蒸留と同時に使った場合にうまく行かないことを実験的に示している。
penultimate layer(dense layerの1つ前)の出力を可視化することで、hard label で学習を行うよりも同じクラスのものが良い感じにまとまっているのを確認。
- これに関して素人質問しちゃったんですが、Label Smoothing を行った方が極端な予測値を取りづらくなる(同じクラスの中でのスコアのブレが少し小さくなる) ので、その影響が penultimate layer にも現れるのではということでした。なるほど。
仮説レベルだが、蒸留との組み合わせがうまく行かないのは上述したように hard label よりも同じクラス内でのブレが小さくなることで表現力が下がっているためではとのこと。
その他 Q&A:
Q : 次元削減(t-SNE など)を行った2次元 mapping を見て情報量が失われているというのは微妙では?
A : 読み取れた範囲で述べるが、理論的に示されているわけでは無さそう。
Q : どういうデータで有効なのか?
A : 論文中ではない。個人的には label が noisy な場合に有効だと考えている。
- 数々のコンペに出ている方なので説得力があります。この場には壺コンペの 7th と 9th (発表者) がいらっしゃったわけですが、このコンペも label が noisy (というか不完全) だったので Label Smoothing を使う方が上位に見られました。(発表者は蒸留を使っていた。)
Unreproducible Research is Reproducible (ICML2019)
論文、特に昨今の深層学習系の論文の再現性について問題提起し"再現性"を細かく定義。 (Methods Reproducibility, Results Reproducibility, Inferential Reproducibility)
画像認識の複数の有名モデルで検証を行い、乱数 seed 等を変えるだけで性能が大きく変わることを示した。
- 昨今の "SOTA争い" は本当に微妙な差だったりして「神の一回を出しているだけでは?」ってなるときもあるし、改めて比較するとシンプルなモデルの方が勝りました的な話もちらほらあります。
現在は探索的・実践的な研究(exploratory research) が多いが、実証的研究(empirical research) が増えるべきと言うのが結び。
この話かなり面白かったです。資料は整えたら上げるとおっしゃっていたので期待。
個人的に面白かった質問は「この論文にネガティブに引用されている論文はあるか?」でした笑。いわゆる "SOTA争い" してる方々って本当に大変そう。コンペとかなら性能だけ追い求めるの問題ないんだけど、研究は中々難しい...。
Efficient Sub-Pixel Convolutional Neural Network を巡るあれこれ
NN で画像を拡大したいときに取り得る選択肢と、発生する問題 (checkerboard artifact など) についての発表。
Transposed Conv では checkerboard artifact が発生・Upsample + Conv は計算量が勿体ない
↓
Sub-Pixel Conv を工夫して行う (Conv + Pixel Shuffle) ことで低コストで実現できる(ESPCN)
↓
それでも artifact が発生してしまうので初期化を工夫する (ICNR)
というのが発表の流れ。checkerboard artifact は名前だけ知ってたんですが、それを防ぐ取り組みを色々知れて勉強になりました。こんな丁寧に説明してくれるのは本当にありがたい。
紹介されていた ICNR について更に解説ブログを書いて下さっているので、興味があればこちらもご覧下さい。LT のときは「実用上よさそう => 実装したら artifact 出るやんけ、何でや!」って言ってたんですけどブログでは綺麗な画像が出てるので解決したっぽい?
Move Evaluation in Go Using Deep Convolutional Neural Networks
Google DeepMind メンバーの囲碁研究の初期の方の論文。「KGS Go Server」のデータを使用し、現在の盤面や打ち手の情報から次に打つ手を予測。
現在の状態を 36(C) × 19(W) × 19(H) を表現して CNN に入力するのが特徴。19 × 19 は盤面の広さと同じで、盤面の石の状態以外にも段位やら周辺のマスとの関係性やらが表現されている。
既存手法を上回る性能を示した。数字(55.2%) は一見低く見えるがかなり優秀とのこと。
対応する段位のチャネルを全て1埋めする点など質問でツッコミがありましたが、特徴量を一緒に入れるのはアリだと思っています。段位は盤面の位置に依らないから別個で 1hot vecor を embedding して fusion するとかでも良い気がしますが、扱いがちょいめんどくさくなる + 構造も複雑になっちゃうのが困りどころ。
盤面の位置等で作り込む特徴の方はタスク特化なモデルを作る分には有効だと思いました。
Gait Recognition via Disentangled Representation Learning (CVPR2019)
僕が発表したやつです。
歩様認識(人の歩き方から誰なのか識別する)タスクにおいて、歩様(歩き方)と外観(服装や手荷物など)を Representation Disentanglement の枠組みで分離することで性能を向上させた論文。
特に今まで困難だった正面(0°)や背後(180°) からとった動画で圧倒的性能を示しているのが特徴。また、解像度が低いものの分離した特徴をくっつけて decode する実験ではかなり綺麗に復元が出来ている。
- もっとこの復元の部分 LT でちゃんと説明出来たら良かったのですが... 発表下手ですみません。資料をかなり拡充したので許して下さい。
資料に関しては一番見所だったのにさらっと流してしまったデコード画像の部分に注釈を入れてから上げます #LPIXEL
— 俵 (@tawatawara) July 22, 2019
まとめでも書いたように、Representation Disentanglement は GAN や VAE でやるイメージがあったのですがタスクによっては AE でやれる場合もあるんだなあと。
Disentangled Representation Learning は画像に限った話ではないと感じているので、これからも勉強していきたいです。
Interpretation of Neural Networks is Fragile (AAAI2019)
NN の予測結果ではなく予測の解釈に対する adversarial attack を行う論文。あくまで解釈性への attack なので、予測結果は変えずに confidence や feature importance map を歪めるのを試みる。
実験では提案手法の有効性を示し(feature importance map がわかりやすい)、既存手法での判断根拠の脆弱性を指摘。脆弱性の本質はモデルの非線形性・高次元性にある(らしい)。
発表者が強調していましたが、実は random noise でも説明性が結構揺らぐことが実験で示されており、このような不安定さを理解したうえで慎重に使うべきとのことでした。
復習してる際に別の方がまとめた記事も発見したのでご参考まで。
Mask Scoring R-CNN (CVPR2019)
既存の segmentation モデルでは予測スコアの高さと mask の質が相関しない場合があることを指摘し、mask の質を一緒に予測するようなモデルを提案した論文。
MaskIoU head (mask の pixel level IoU を予測する sub-network) を既存の segmentation モデルに追加することで mask の質を改善。なお、元々の instance segmentation task の性能も向上する。
えっ、 head を追加するだけで性能が!?
— 俵 (@tawatawara) July 22, 2019
発表者が述べていたようにシンプルで効果があるところと、追加する目的がはっきりしているところが良いなと思いました。
Learning to Generate Synthetic Data via Compositing (CVPR2019)
前景画像(e.g. 人) と背景画像(e.g. 風景、室内) から自然な合成画像を作る手法を提案する論文。(かなり大雑把に言うと、人の画像を風景画像にそのまま張り付けるような雑コラをできるだけ自然にするというと伝わるかも)
特徴は Synthesizer Network (前景と背景を合成) 以外に Target Network (画像から前景を検出 or 識別)と Discriminator (画像が自然画像(Real)か合成画像(Fale)かを識別)が存在すること。学習の際には Synthesizer と Target & Discriminator を交互に学習させる。(スライドP.9 を参照)
- 「何で雑コラみたいなことするんだろう?」と思っていたのですが、Target Network の性能向上に寄与するような訓練画像を合成するのが目的らしいです。
実験 (背景: MSCOCO、前景: Pascal VOC で画像を合成) では既存手法を上回る性能を示した。少し意外なのは Discriminator が大きくは性能向上に寄与していないこと。
発表者曰く雑な所が多い論文で(特に質的評価の所は同意)、よくCVPR通ったなというコメントでした。
Distilling the Knowledge in a Neural Network (Deep Learning and Representation Learning Workshop at NIPS2014)
蒸留(Knowledge Distillation) の原著論文。(モデルの圧縮という意味では別の論文があるが、"蒸留"の初出は多分これ。)
教師モデル(重いモデルや複数のモデル)の出力を(軽量な)生徒モデルの学習に用いる。ポイントとなるのは softmax の出力の極端さを和らげる温度パラメータで、これによって「どのクラスとどのクラスが似ているか?」という情報を使えるようにしている。
- "蒸留"という言葉は温度パラメータを高くすることが由来らしい。以下は元論文より引用。
Our more general solution, called “distillation”, is to raise the temperature of the final softmax until the cumbersome model produces a suitably soft set of targets.
何と、発表者が少し前に出て金メダルを獲得したコンペ(Freesound 2019) のデータで検証を行ってくれて結果を共有してくれました。ありがたや。以下は記事から引用です。
教師モデルのスコア 0.74435 に対して、生徒モデルのスコアは 0.60895 と効果は限定的なのではないかと感じます。このことについて私は、教師モデルの精度に近づくように生徒モデルが学習しているというより、生徒モデル本来の伸び代の限界までしか精度が伸びないといった側面があるのではないかと考えました。
モデルの蒸留を実装し freesound2019 コンペで検証してみた。 - かえるのプログラミングブログ
生徒モデルと教師モデルの Capacity がかけ離れていると教師モデルほどの性能が出ないというのは妥当な気がします。なので、発表者の元々の意図であった「BERT の予測性能を軽量なモデルに移したい」は難しいかもとのこと。
ただちょっと前に以下のような Tweet を見かけました。タスクによってはBERT がデカすぎるから蒸留しても性能がそんなに落ちないというケースももしかしたらあるのかも?
BERTからLSTM/CNNへのmodel distillationがわりとうまくいくという噂を聞いて調べてみた。BiLSTMをスクラッチから学習するよりBERTからBiLSTMにdistillationするほうがややよいようだ。推論は当然BERTより速くなるが、ベンチマークによっては性能も激しく落ちる(Table 1)https://t.co/onRb3agPpm
— Kosuke Tsujino (@kosuke_tsujino) July 16, 2019
おわりに
今回も面白かったし、#6 でも面白い論文が沢山紹介されたようです。(個人的には以下の Graph のやつがとても興味深かった。)
今回(#5)の競争率が過去最高(応募者50人 over) だったらしいですが #6 も 45人なので結構高い。これからもこの会の競争率はそれなりに高い状態を維持しそうですが、うまく紛れ込めたら #7 以降も発表者として参加したいと思います。つぎの論文を読まねば...
今回と同様に Disentangled Representation 系か、最近読みたくなった Deep Infomax にする予定。
余談
実はこの日は業務でもパワポの作成・発表をしており(諸事情により kaggle を絡めて機械学習の話をした)、普段と比べてしゃべり過ぎたせいで次の日に喉の調子を心配されました。
この時の資料を作る際にえじさんの以下の資料に大変お世話になったので、kaggle って何ぞいという方はどうぞ。