Skip to content

Instantly share code, notes, and snippets.

@keisuke-umezawa
Last active November 15, 2016 00:45
Show Gist options
  • Save keisuke-umezawa/aa34634f7f332233a15a8f225310cf60 to your computer and use it in GitHub Desktop.
Save keisuke-umezawa/aa34634f7f332233a15a8f225310cf60 to your computer and use it in GitHub Desktop.

5.自己符号化器

アブストラクト

  • 入力だけの訓練データを使った教師学習により、データの特徴量を学習する。
  • NNの事前学習に使われる

概要

$$\hat{x} = \tilda{f} (\tilda{W}f(Wx+b)+\tilda{b}) y=f(Wx+b):符号化 \hat{x} = \tilda{f} (\tilda{W}y+\tilda{b}):復号化$$
  • 自己符号化器(autoencoder)
    • 入力を符号化し、続けて復号化した時、元のお入力がなるべく忠実に再現されるような符号化の方法を定めること。

ネットワークの設計

  • パラメータ
    • f:活性化関数
      • 非線形関数
    • $tilda{f}
      • xが実数:恒等写像
      • xがbinary:ロジスティック関数
    • E(w):誤差関数
      • xが実数:二乗誤差の総和
      • xがbinary:交差エントロピー

自己符号化器の働き

  • 多くのデータから自己を復元するために必要な情報を抽出したい。
  • Autoencoderの中間層には上記情報が抽出されることが期待される。
  • 上記情報は自己復元以外の汎用的な目的にも使用できることが期待されるので、NNの中間層の事前学習としても使用できる。

スパース正則化

  • 過完備な表現
    • 余分な自由度をもつ冗長な特徴でありながら入力データをうまく表現できるような特徴表現
    • $D_x<D_y$の時のことを言う
  • 過完備な表現は通常、trivialな解を導出してしまう可能性がある
  • 上記を克服するため、スパース自己符号化器を用いる
  • スパース自己符号化器
    • 基本となる考え
      • 個々の訓練サンプル$x_n$をできるだけ少数の中間層のユニットを用いて再現できるようにする
      • 少数のユニットのみが活性化するように制約を課す
    • 実際の制約
      • $\tilda{\rho_j}$:中間層jの平均活性度の推定値
      • $\rho$:上記の目標値
      \tilda{E}(w) = E(w) + \beta \sum_{j=1}^{D_y}KL(\rho||\tilda{\rho_j})
      

白色化

  • PCA白色化
  • ZCA白色化(共分散行列をコレスキー分解を対称行列に限る)
    • 名前の由来は、対称行列をかけるため伸縮のみで回転はない。つまりゼロ位相変化なので、zero phase component analysis。

DNの事前学習

  • 単層ずつAutoencoderで学習を行う
  • 学習した単層のNNから出力を計算し、それを用いて次の層の学習を行う
  • 最後の層は学習せずに追加
    • クラス分類:softmax関数
    • 実数回帰:恒等関数

5.再帰型ニューラルネット(RNN)

アブストラクト

  • 系列データを扱うNN
  • 系列データ
    • 系列長がサンプルによってまちまち
    • 系列内の要素の並び(文脈)に意味がある
  • 扱う内容
    • RNN
    • 長・短期記憶(LSTM)
    • コネクショニスト時系列分類法(CTC)

系列データの分類

  • 系列データ

    • 個々の要素が順序付の集まりとして与えられるデータのこと
    $$x^1, x^2, ..., x^T$$
    • 系列の長さTは可変
    • 例1:言語モデル
    • 例2:音素織別
      • x_t:Δt(~10ms)で離散化した時刻τ=tΔtごとの周波数分布
      • y_t:音素の種類 ex. sh,sh,sh,sh,ix,ix,ix,ix,ix,ix,hv,hv,hv,...

RNNの構造

  • RNN
    • 内部に有効閉路を持つNN
    • 情報を一時的に記憶し、また振る舞いを動的に変化させることができる

順伝播計算

逆伝播計算

  • 学習アルゴリズム:確率的勾配硬化法
  • 上記アルゴリズムには、各層の重みについての誤差の微分を計算する必要がある
    • RTRL法:メモリ効率が良い
    • BPTT法:高速・シンプル

BPTT法

  • RNNを時間法行為展開し、順伝播型ネットワークに書き換えて誤差逆伝播計算を行う(図7.5)
  • 手順は以下の通り
    1. 入力系列$x^1,...x^n$と目標出力系列$d^1,...d^n$を用意する
    2. t=1,...Tの順に、順伝播計算を行って出力系列$y^1,...y^n$を計算する
    3. 各時刻tのy^tとd^tの誤差から、出力層の各ユニットkのデルタ$\delta_k^{out,t}$を計算する
    4. 中間層の各ユニットjについて逆電波計算を実行し、中間層のデルタを計算する
    5. 重みの誤差勾配を計算して、勾配降下法で重み更新を行う
  • 式はノート

長・短期記憶(LSTM)

RNNの勾配消失問題

  • RNNではそれほど長期にわたる記憶を実現できない
    • RNNの出力に反映できるのは高々過去の10時刻分程度。
    • 原因:順伝播型ネットワークの勾配消失問題と同じ

LSTMの概要

  • RNNに対して、その中間層の各ユニットをメモリユニットと呼ぶ要素で置き換えた構造をもつ
  • 式はノート

順伝播計算

  • ゲート関数は、入力X^tと隠れ状態z^{t-1}とメモリセルの状態s^{t-1}を足し合わせて、シグモイド関数にぶっこむ。

逆伝播計算

  • 同様に可能。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment