アドバンストビジョン

第2回: 人工ニューラルネットワークの学習

千葉工業大学 上田 隆一


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

アドバンストビジョン第2回

今日やること

  • 人工ニューラルネットワークをどのように学習させるか
アドバンストビジョン第2回

前回のまとめ前のスライド

  • 動物は生まれたときにある程度プログラミングされた状態だが・・・
    • そのあと成長しても神経細胞は基本的に増えない
    • 猫を識別するにはニューラルネットワークに変更を加えないといけない
    • 頭を開けて配線するわけにはいかない
どうやるの?
アドバンストビジョン第2回

学習の方法: パラメータを変える

  • 例題: ならを出力、そうでなければを出力する人工ニューロン
    • 最初、パラメータはあてずっぽ(右図上)
  • 基本的な方法
    1. 何か入力して出力と正解の「ずれ」を観測する
      • 例えば上のニューロンにを入れるとが出てくる(が出てきてほしいのに)
    2. ずれを小さくするようにパラメータを変える
      • この場合はたとえばとすると

これを全ニューロンに対してやる(以後はレイヤー表記)

アドバンストビジョン第2回

パラメータをどう変えるか?

  • 案1: 出力を間違えたらあてずっぽで変える
    たくさんパラメータがあると正解は無理
  • 案2: ずれが小さくなるようにパラメータを変える
    • ニューロンはたくさんある
    • どうやって??
どうすればいいか議論してみましょう
アドバンストビジョン第2回

誤差逆伝播法

  • 出力側の誤差(損失関数の値)をどんどん入力側に送っていく
    • 値の大きさは、そのニューロン(層)の影響を考えて加減する
      • 「影響を考えて」
        • 例: ある層が入力を2倍して出力
          その上流の値は結果に対して2倍の影響力
  • その後: 送られてきた誤差が一定の割合で小さくなる方向にパラメータを変更

アドバンストビジョン第2回

単純な例

  • 右図上: 1入力1出力の単純なレイヤー
    • が入力されてを出力
      の誤差が返ってきた
      (出力はもっと小さいべき)
      • なので倍して誤差を送信(を返す)
  • 理屈: 偏微分(が少し変化したときのの変化)

質問: じゃあアフィンレイヤーはどうなる?

アドバンストビジョン第2回

アフィン層の場合

  • 出力側の損失関数の増大率:
    • の増加に対してが与える影響度
  • 入力側の損失関数の誤差の拡大率:
      • 偏微分の連鎖律
      • 重みの分だけ影響力が増大
      • の値をの誤差に基づいて決定どの層でも具体的な値で誤差の大きさが決まる
アドバンストビジョン第2回

誤差逆伝播法のまとめ

  • (層の種類によらず)上流の層はどこでも連鎖律を利用して誤差を計算可能
    • ただし微分できることが必要
  • ある層の誤差は下流の層から伝わってきた誤差に基づいて計算可能
    • 各層は、自身の偏微分の式だけで誤差を計算可能
アドバンストビジョン第2回

個の入力のあるシグモイド層の場合

  • シグモイド関数を(偏)微分してみましょう

  • 各要素の具体的な値: に出力値を代入したものなので・・・
アドバンストビジョン第2回

パラメータの修正

  • 下流から伝わってきた誤差を小さくするように更新
  • ひとつのパラメータの更新式
      • は割引率(ひとつの結果で一気にパラメータを修正しないように)
  • 単純な例(右図。とする)
    • (減少)
    • (増加)
アドバンストビジョン第2回

アフィンレイヤーのパラメータ修正

  • 誤差に対するパラメータの影響
  • 更新式(どんなレイヤーでも共通)
アドバンストビジョン第2回

問題: p. 14のニューラルネットワークのパラメータ修正

  • ならを出力、そうでなければを出力させたい
    • 右図上の状態から右図下の状態にもっていきたい
  • 修正のための式(p. 11のもの):
    • 入力値誤差
    • 誤差
  • で(早く収束させるため大きめ)
  • を入力してパラメータを修正してみましょう
アドバンストビジョン第2回

答え

  • 計算(再掲)

    • 入力値誤差
    • 誤差
  • を入力出力、誤差

    • に近づく)
    • (そのまま)
    • に近づく)
  • 次にを入力すると?

アドバンストビジョン第2回

答え

  • 計算(再掲)

    • 入力値誤差
    • 誤差
  • を入力出力、誤差

    • はそのまま
    • に近づく)
      • から遠ざかる。そういう場合もある。
  • できる人は前方のニューロンに送る誤差も計算を

アドバンストビジョン第2回

補足: スキップ(残差)接続

  • あるレイヤーの出力を次の層だけでなく、
    別の層にも入力する接続方法
    • 入力に挟まれた層は入出力の差分を
      学習することに
  • スキップ接続の有無: 初期の学習の容易さに影響
    • スキップ接続なし: 最初はがランダム
    • スキップ接続あり: (途中の層の出力が最初ゼロだと)最初は
  • ResNet(2015年)
アドバンストビジョン第2回

まとめ

  • 人工ニューラルネットワーク
    • ニューロンの組み合わせでプログラムできる
    • 誤差逆伝播で学習ができる
  • 以後の講義で応用を見ていきましょう
アドバンストビジョン第2回