糞糞糞ネット弁慶

読んだ論文についてメモを書きます.趣味の話は http://repose.hatenablog.com

deep learningわからん & An Analysis of Single-Layer Networks in Unsupervised Feature Learning (NIPS2010)読んだメモ

Deep learning

2009年半ばぐらいからdeliciousのエントリーにDeep Learningの名前を良く見るので気になっていた.
http://www.quora.com/Why-does-deep-learning-require-the-construction-of-generative-data-models
Deep Learning via Hessian-free Optimization (slide)
このquoraとスライドなどを読んでもまだわからない.イメージとしてはこんな感じ.

  • 隠れ層が深すぎるbelief network(deep net)は学習に時間がかかる
  • しかも上手くいかない
  • 隠れ層が多くなりすぎるとバックプロパゲーション時に伝播するアレが浅い層になるにつれどんどん値が小さくなる(vanishing gradient problemと呼ばれる問題らしい)
  • これに対応すべくHintonやらBengioが「非常に浅い(1層のみ)RBM(restricted boltzmann machine)をいくつも用意して学習し,それを連結していく」というのを思いつく
    • その過程で次元数を落としていくのがautoencoder?

でこんな感じで深いNNがうまい事学習できるようになりましたという話らしい.どれぐらい違うかというと,生データ(raw pixel) + logistic regressionの精度が37.3%ぐらいのところをConvolutional RBMでunsupervised feature learning(pre-training) + RBMで78.9%とか.これはすごい.

And to be fair, deep learning isn't always a great idea. It makes the most sense when you have a lot of structure in your inputs (e.g., if your inputs are pixels, there's a lot of correlation between neighboring inputs) and when it is easy to get lots of unlabeled data (e.g., random images off the internet) but harder to get labeled data (e.g., images labeled by what objects are in them).

http://www.quora.com/Why-does-deep-learning-require-the-construction-of-generative-data-models

とか言われてるので画像の判別などがメインっぽい.
しかしここまで書いて分からなくなったのは,deep learningの定義.話が「深いbelief networkを用いた学習」から「データに対しpre-trainingと呼ばれるunsupervised feature learningを行う事による特徴抽出とそれを用いた判別」に話がずれている気がする…….しかしpre-training + 判別を積み重なったRBMの塊として捉えてそれをひとつのRBMと考えればある意味深いbelief networkなのか.
というより問題はHintonのA fast learning algorithm for deep belief nets (pdf)だったりBengioのGreedy Layer-Wise Training of Deep Networksを読んでない事だと思う.開いて5秒で諦めた.やはり数式を読む能力が根本的に欠如しているので駄目だ.

An Analysis of Single-Layer Networks in Unsupervised Feature Learning

An Analysis of Single-Layer Networks in Unsupervised Feature Learning (pdf)

要約

  • 特徴抽出で複雑なモデル(deep learning?)を使わずにK-meansの亜種を使うことによりstate-of-the-artな性能を発揮
  • 他のRBMやNNなどと違ってハイパーパラメータの調整が要らないわ速度が出るわ実装簡単だわで良い事尽くし

方法

入力が(pixel)でdチャンネルを持つ画像だとする(チャンネルというのは例えば画像だったら(R,G,B)なのでd=3となる).
この画像に次の処理を行う.

  • Feature learning
    • まず画像から(pixel)の領域(patch)をランダムにm個切り出し,とする.
    • xごとに平均で引いて標準偏差で割って正規化しておく(whitened).
    • そのデータでとなるunsupervised learning algorithmであるfを学習する.この関数によって次元削減が行われる.
  • Feature Extraction and Classification
    • 画像から(pixel)の領域を間隔sで切り出す(これをsub-patchと呼ぶ).
    • sub-patchひとつずつにFeature learningで学習したfを用いてに次元削減する.
    • あとはそれを足しあわせて4つごとに足しあわせて最終的に4K次元のベクトルを得る.
    • その4K次元のベクトルを用いてSVMを学習
  • 未知データに対する予測
    • Feature Extraction and Classificationとほぼ同じ事をやって最後のSVMで予測

なので学習は特徴抽出とSVM,二度行われる.
足し合わせる部分は言葉では説明し辛いので図を引用する.
https://img.skitch.com/20110112-cnk6fcm2xnpi1q3da8f734dq69.jpg

unsupervised feature learning

unsupervised feature learningではpatchであるxに対して,となるunsupervised learning algorithmであるfを学習する.論文で提案されているのは以下の4手法である.

  1. Sparse auto-encoder : K個の隠れ層を持つバックプロパゲーション(auto-encoder).ハイパーパラメータはクロスバリデーション.
  2. Sparse restricted boltzmann machine : Sparse auto-encoderと得られるモデルの形は同じ.学習法が違うだけだとか.これもハイパーパラメータはクロスバリデーション.
  3. K-means clustering (hard and triangle) : まずK-meansクラスタリングでK個のセントロイドを学習しておく.その後次のようにアレする.
    1. hard : .一番近いところにハードに割り振る.
    2. triangle : とする.添字無しzが何を指してるのか判らない.
  4. Gaussian mixtures : Kの混合ガウス分布に当てはめ(これは計算量の問題で後半では出てこない).

結果

K-means(triangle)で特徴抽出してSVM使うとstate-of-the-artであるConvolutional RBMの78.9%を超えて79.6%の精度を出した.
K-means(triangle)が最も優れているというのは,ハイパーパラメータの推定要らないわ速いわ実装楽だわで良い事尽くしである.

この結果に興奮してる人がいるらしくPeekaboo: NIPS 2010 - Single Layer Networks in Unsupervised Feature Learning: The Deep Learning Killer [Edit: now available online!]とかGoogle サイトを読むと伝わってくる.