Semi-Supervised Learning with Ladder Networks
 
参考
関連
  - 
    Deconstructing the Ladder Network Architecture (2016)
    
      - Ladder Network の各部品を除去したり交換したりして、どこが貢献しているのかを調べる
- 全部品良い
- ただし combinator の部分はMLPにしたほうがいい場合があった
 
- 
    A Semisupervised Approach for Language Identification based on Ladder Network
    
      - 音声を入力に何語であるかを推定するのに Ladder Network を使った
- 音声は i-vector (その筋の定番) に変換したものを入力にした
 
概要
  - 
    Ladder Networks (Valpola, 2015)
    
      - ノイズへの頑強を目指す (denoising)
- 
        もともと教師ナシ学習を想定
        
      
 
- 
    この論文では、組み合わせて半教師アリに適用させる
    
  
- たぶん先に普通の教師アリでパラメータを訓練すると書いてある
手法
  - 
    所謂普通のネットワーク ( :: x -> y) を Encoder と呼ぶ
      - 
        実際には制限は無いが、簡単のため、 \(N\) 層のMLPを想定する
        
          - 第 \(i\) 層での値を \(z_i\) 、活性化したあとのそれを \(h_i\) とする.
- ただし、 \(x = z_0 = h_0\) , \(z_n = h_n = y\)
 
- 
        各 \(z_i\) は正規化しませう
        
      
- 
        オプションとして、各層ではノイズを加えられることにする
        
          - \(z_i\) は (正規化した直後) 正規分布に乗ったノイズが乗る
 
 
- 
    Encoder をちょうど逆に辿るような Decoder を想定する
    
      - Decoder とは、 Encoder における各層にそれぞれ denoiser を並べたものである
- 
        第 \(i\) 層にある denoiser は、 \(z_i, u_{i+1}\) から \(u_i\) を求めるもの
        
          - \(z_i\) とは Encoder によって計算される (ノイズが加わった) 値
- \(u_i\) とは、 \(z_i\) (からノイズを除いたもの) を近似するものである
- ただし \(y = u_n\)
 
 
学習
  - 
    学習には2種類ある
    
      - すなわち、ラベルありの学習事例 \((x, y)\) を用いるものと、
- ラベルなしの学習事例 (ただの \(x\) ) だけを用いるものである
 
- 
    教師アリ
    
      - \((x, y)\) を用いる
- ノイズの入ったEncoder で \(y'\) を計算して \(y\) との差で訓練
 
- 
    教師ナシ
    
      - \(x\) を用いる
- ノイズの入った Encoder で \(y'\) を計算
- Decoder で \(y'\) から \(x'\) を計算
- Decoder における各層での \(u_i\) と、ノイズのない Encoder での \(z_i\) との差で訓練
 
実装
  - 
    mattya さんによる Python 2.x/chainer な実装がある
    
      - https://github.com/mattya/chainer-semi-supervised