はじめに
- 筑波大学オープンコースウェアの機械学習を視聴させていただいたときのメモです。
視聴メモ
(前回の復習)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倍する。
- dropoutでの学習は、アンサンブル学習に類似し、過学習を防ぎ、汎化誤差が改善すると思われる。
- 学習時
時系列データ
- 時間に連れて変化する観測値
- テキストも。文書における特徴ベクトルの要素は文書中の単語。
- 音声も。音声データを特徴ベクトルに変換する。時間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が正しく識別されるように学習
- 交互に最適化。片っぽを止めてやる。