【論文紹介】Introspective Classification with Convolutional Nets(NIPS2017) - 11月 21, 2018 こんにちは、ぐぐりら(@guglilac)です。 NIPS2017にでてたこの論文を読んだので、サクッとまとめようと思います。 Introspective Classification with Convolutional Nets ブログに読んだ論文をメモするのは初なので変なところがあればご指摘お願いします。 ## 概要 識別モデル自体にデータを生成させて学習データに混ぜることで識別性能を向上させる手法をCNNに組み込んだIntrospective Convolutional Net(ICN)を提案した。 ## なんで選んだのか * 画像系でdeep learningする感じのっていまどんなのがあるのか知りたいなとおもって 実際には画像に適用する必然性があんまりないような手法だったのであれでしたが、まあ勉強になったのでよし。 ## 気持ち より学習に用いたら精度が上がりそうなデータを使って学習したいよね、という気持ちから作られたモデルはいくつかあって、 * active learning * boosting * data augmentation などあるけど、これらは自分で生成はしない。 識別モデル自体にhard exampleを生成させて学習を進めようというのがこの論文でやりたいことです。 Introspectiveは「内省的」とかそんなかんじの意味で、自分が分類した結果が間違ってると疑いながら反省しつつ学習を進めていく感じが表現されていますね。 ## 関連研究 1. GDL(http://pages.ucsd.edu/~ztu/publication/cvpr07_gdl.pdf) 2. GAN 3. Self supervised boosting(https://papers.nips.cc/paper/2275-self-supervised-boosting.pdf) 1.に最も影響を受けている。 introspectiveなモデルの研究はいくつかあるらしいが、今回考えるモデルとは考えている問題のスコープが違うのだそう。どうちがうん。 僕はこの論文で初めてintrospectiveな考え方に出会ったので、詳しくないのでここはスルーです。ごめんなさい。 ## 手法 基本的に、学習する部分は一緒です。 異なる点は、各学習ステップで現段階(学習途中)の分類モデルを用いてデータセットを生成する点です。 生成したデータセットは既存の与えられたトレーニングデータセットに追加されます。 データ生成は、reference distribution($p_r^{-}(x)$)と学習途中のモデル表す確率分布を用いて表される分布からのサンプリングで行われます。(論文中では各ステップで$l$個のデータが追加されます。) ここでreference distributionは多次元正規分布を仮定します。 生成するデータが従って欲しいtarget distributionは以下の$p_t^{-}(x)$。 $p_t^{-}(x)=\frac{1}{Z_t}\frac{p(y=+1|x)}{p(y=-1|x)}p_r^{-}(x)$ (tは各学習ステップを表すと思ってください。) $Z_t$は正規化項です。 これはベイズの定理から得られる以下の式からきています。 $p(x|y=+1)\propto\frac{1}{Z_t}\frac{p(y=+1|x)}{p(y=-1|x)}p(x|y=-1)$ このtarget distributionから得られたデータ点を、ラベル-1(すなわち負例)としてデータセットに追加します。 上の式からわかる通り、 データの生成は現在モデルが正例だと考えるデータがサンプリングされてくるイメージです。 現在モデルが正例だと考えるデータに負例ラベルをつけて学習し直す、というわけです。 生成する分布の作り方から直感的にそうだろうという感じですが、 データを生成する分布は学習が進むごとに真の正例分布($p(x|y=+1)$)に収束することが示されています。 分類器が各ステップで精度向上するという仮定のもとで、データを生成する分布p_t^{-}(x)と正例分布$p(x|y=+1)$ のKLダイバージェンスが0に収束することを示せばいいわけです。 追加資料に証明は載ってました。 サンプリングはSGD,SGLDを使っています。 先行研究のGDLはギブスサンプリングをつかってて遅い、とか言っています。 この論文で用いられているサンプリングは以下のようになっています。 $\frac{p(y=+1|x)}{p(y=-1|x)}$の部分を大きくする方向にデータ点を更新するようにサンプリングしていくと、最終的な定常分布が目標分布である$p_t^{-}(x)$になる(はず)。 なので、十分更新した後のサンプリングを新しく生成したデータとして採用し、トレーニングセットに追加します。 サンプリングはちょっと授業で勉強したぐらいで、詳しいことがわからないのでもう少し勉強したいです。 ## 考えたこととか * 無限に学習を続けると生成されるデータが正例そっくりに近づいていって、それを負例として学習するのでやばくね、って思ったけど普通にいつ終わらせるとちょうどいいかはcross validationでみればいいね(validation loss が下がらなくなったら終了) * 学習初期は分類器の精度が低いので、負例のうち正例と判定しているものがあるから、そういうのを学習データに入れれば性能が向上するよねっていう(もちろん初期でも本当に正例のものをただしく分類はできているものもあるだろうけど。そういうのもまとめて負例に入れてるっぽいなあ) * 最初にもらったデータセットの正例以外の正例が存在しない、すなわちもらった正例は母集団の正例を満遍なく網羅している、みたいな仮定が入ってそうでなんか違和感 最後のとか、論文中で示されている図みたいに分類曲線が更新されていくわけだけど、もらった正例以外をもらしてしまいそうな分類の仕方になりそう。正例が少ない場合もうまくいくんだろうか。 こんな感じ。(論文から引用) ## まとめ 初論文紹介記事でした。 ちなみにこれ100記事目の記事です。祝。 こつこつ更新していければいいなと思います。 ありがとうございました。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿