nokoのブログ

こちらは暫定のメモ置き場ですので悪しからず

TSUKUBA-OCW_機械学習_10_ニューラルネットワーク2RNNとGANを視聴したときのメモ

はじめに

視聴メモ

(前回の復習)CNN

  • 畳み込みNN
  • 入力の次元が大きいのが特徴(20 * 20 でも400)
    • 画像理解に役立つネットワークの構造を考える
      • 実際の画像認識には局所的な理解で足るはず
      • 全結合は不要
      • -> 畳み込み
  • 最後は多クラス分類で、softmax回帰、が多い
    • 入力はベクトル
    • 出力は確率(softmaxならクラスごと)
  • 画像はPG的に表すと
  • RGBの3層に分けて表現する
  • 畳み込み層
    • フィルタが表すパターンが、入力特徴マップのどこにあるかを検出し出力特徴マップに表す
    • 畳み込み後、特徴マップは縮小する
    • 例えば、28×28の入力 -> 6×6のフィルタ -> 23×23の特徴マップに。そのフィルタが32あると、特徴マップが32できる。(1枚の入力が32の特徴マップになる)
    • フィルタ自身が学習対象。どういうフィルタを使うのか。これまでのw。
  • conv + pool
    • conv: 各フィルタに特徴付けられた特徴を検出
    • pool: 位置の微小変化に左右されない普遍性
    • conv + pool: 局所的な変異に依存しない安定した特徴抽出
  • 過学習緩和のDropout
    • 学習時
      • 入力、中間ノードを確率pでランダムに選択
      • 選択されたノードだけで重みを更新
    • 予測時
      • 各重みをp倍して順伝播し、dropoutで割引かれた分を補償する
    • アンサンブル学習とdropoutの関係
      • dropoutでの学習は、アンサンブル学習に類似し、過学習を防ぎ、汎化誤差が改善すると思われる。
        • 予測時は、複数のモデルを統合して一気に予測するイメージ。だから、予測時にp倍する。

時系列データ

  • 時間に連れて変化する観測値
    • テキストも。文書における特徴ベクトルの要素は文書中の単語。
    • 音声も。音声データを特徴ベクトルに変換する。時間x軸と周波数y軸。画像みたいな。それをニューラルネットワークに通して、文字発生確率を出して、言語モデルを通してテキストに。
    • -> ラベルが複雑がち。

RNN

  • RNNとかLSTMとか
  • 時刻tの中間層出力が時刻t+1の中間層入力に追加される
  • 順伝播は通常のNNと同様
  • 逆誤差伝播は閉路のないNNに変換して行う
    • RNNにおける勾配消失。CNNではbatch-normarizationで回避。多くの層を通っていくと勾配管理が難しくなる。
    • -> LSTM。忘れた方がいいものと忘れたくないものとタイミング。主語が複数かは、文が終わったら忘れていい。
  • 目標値の系列長と予測出力の系列長が一致するなら、通常の損失関数を使う。一致しないなら、CTCを使う。(CTCというロス関数)
  • Bidirectional RNN
    • 未来のことから逆に予測。リアルタイム予測は無理だが。

GAN

  • 教師なし学習は、データの分布を考えるものだった。
  • データが基礎的な分布(e.g., 正規分布)に従う場合は、その観測値から分布が推定できる(e.g.,最尤推定
  • GANも。分布の推定ではなく、サンプリングを目指す。
  • 高次元で複雑な分布の生成モデルを実現するNN(画像とかはコレ)
  • 生成モデル(G): 低次元の単純な分布に従う乱数を、高次元の複雑な分布に従うサンプルに変換するNN(単純なものを複雑に)
    • 画像サイズを増加させ、空白を周囲の値で埋めてからフィルターを畳み込み入力サイズより大きいサイズの特徴マップを生成(転移畳み込み)
  • 識別モデル(D): 本物のデータ(real)と、生成モデルによる生成データ(fake)を識別するNN
  • 最適化はmin-maxゲームとして定式化。
    • 生成モデルはfakeがrealと識別されるように学習
    • 識別モデルはfakeとrealが正しく識別されるように学習
    • 交互に最適化。片っぽを止めてやる。