電通生のにこにこ調布日記

自然言語処理を学ぶ大学生のブログ

最近読んだCNN系論文ざっくりまとめ [ 画像編 ]

自分の研究室は自然言語処理を扱っている研究室で、自分自身も自然言語を扱った研究をしたいと考えているのですが、 「CNNの気持ちを理解できるかな?」と思いComputer Visionで有名そうな論文を何本か読んでみたので、 日記をつける程度の感覚でものすごく簡単にまとめてみようと思います。どんな論文を読んでみようか迷っている方のお役に立ったとしたら幸いです。 初学者につき間違い等ありましたら、コメントなどでご教授いただければ幸いです。


  1. ImageNet Classification with Deep Convolutional Neural Networks (link)
    おそらくこれはDeepLeaningが盛り上がり始めた頃の論文ですね。 これを読んでみた理由としては、学習に使用するデータの正規化等の方法が他の論文から多く引用されているのを発見したからです。 Local Response NormalizationやData Augmentationについてちゃんと書いてあるので、画像初心者の自分に知っておいたほうがいい情報がたくさんありました。ネットワークの構造等に関しては少し古いものなので割愛しようと思います。

  2. Very Deep Convolutional Networks for Large-Scale Image Recognition(link)
    VGGと呼ばれているネットワークを提案している論文です。次に紹介するResNetが登場するまではある画像認識コンペで最高精度を出していたネットワークで、19 weight layersまで層を深くしても学習が進んでいることを提唱しています。 これを読んだ際に興味深いなと感じたのは同構造のネットワークのハイパーパラメータや、層の深さが異なるモデルを使用してアンサンブル学習をするという実験がされているのですが、 複数の組み合わせを試した結果、それぞれに割と大きな精度の差が出てきており細かい違いしか持たないモデルであっても、その組み合わせがうまくはまると精度が大きく上がることがわかります。 Kaggle等のコンペでよく用いられる手法ですね。

  3. Deep Residual Learning for Image Recognition (link)
    これは言わずと知れたResNetです。 このResidual構造が提案されるまでのCNNを使用したネットワークでは、層をある程度まで深くしていくと精度がむしろ悪化してしまうという問題があったみたいなのですが、Residual (残差)関数を学習することによりその問題を解決したみたいです。

  4. Identity Mappings in Deep Residual Networks (link)
    さっきのResNetの論文で紹介された構造にいろいろ手を加えてみて検証をしてみようという論文です。 Residual機構では、Convolutional layer等での計算を飛ばすshortcut connectionがメインに存在しているのですが、 それらのshortcut connectionをデータが通過する際にいろいろな方法で加工したりしています。 現時点でResidual Networkというと、3番で紹介したshortcut connectionの手法ではなく、この論文で提案されている方を指すことが一般的なようにいろんな方の実装等を見ていると感じたりすることもあります。

  5. Network in Network (link)
    この論文はタイトルからはかなり謎感が出ているのですが実際にやられていることは、これまで一般的にCNNで画像の特徴量を抽出してきたけど、それをMLP (Multi Layer Perceptron) で置き換えてみようという内容です。 おそらく全体の大きなネットワークの中に、小さなMLPが入っていることを表現している「Network in Network」なのですね。

  6. Going deeper with convolutions(link)
    Google発のInceptionというネットワークを提案している論文です。 全然内容とは関係ないのですが、著者が全部で9人名前が載っていてその配置がなんかかっこいいな、と初見でまず感じました。 この論文を読んだ理由の一つに、画像系のネットワーク中にCNNのkernel sizeが 1 * 1 のものがたまに使用されているのですが、そのオペレーションが何のために選択されているのかを知りたくて、というものがありました。 読んでみた結果として 論文内に以下のような記述があったのと、

    1 * 1 conv have dual purpose. most critically, they are used mainly as dimension reduction modules to remove computational bottlenecks, that would otherwise limit the size of our networks. this allows for not just increasing the depth, but also the width of our networks without significant performance penalty.

What does 1x1 convolution mean in a neural network?を読んでみた感じからざっくりと 「計算資源節約のためにCNNのkernel数を減らしている」というのが、主な理由であるように考えました。 これに関して追加事項等ご存知の方おられましたら是非教えていただきたいです。

内容があまりないような気もしますが、論文紹介は以上になります。 初めてComputer Vision系の論文を読んでみて感じたのはやはり局所的な特徴を抽出するのにCNNはかなり適しており、ResNetの登場で層を深くできない問題もある程度解決されていて、想像していたよりもかなりいろいろな手法が試されてきた分野なんだなーということでした。 ただ精度が出ているとはいっても、ResNetの「残差を学習したらうまくいったよ!」というのは、入力時の情報を下層まで伝えることができているからなのかな?とは思いつつもしっかりと腹落ちはしていないので、実際に自分で実装したものを動かしてみるとこまでやってみたいなと感じています。