Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DLfromScratch4

 DLfromScratch4

the Summary for DLfromScratch4.

Avatar for Minemichi

Minemichi

May 22, 2018

More Decks by Minemichi

Other Decks in Programming

Transcript

  1. NN は、 パー セプトロンのパラメー タをデー タから 自動的に決定できる デー タ駆動 デー

    タから自動的に答えを求めたい! 特微量 入力から本質を抽出する変換器 特微量は基本的にベクトル SHIFT、SURF、HOG などなど デー タを特微量によってベクトルに変換し、 機械 学習の識別機(SVM、KNN) で学習させたらよさげ 結局、 特微量は人が作らないといけないじゃん…… @2018 minemichi 3
  2. 2 乗和誤差 E = (y − t ) 出力 y

    = [0.1, 0.5, 0.4] 正解 t = [0, 1, 0] 実際のデー タと教師デー タの差 絶対値で計測するために2 乗している は、 微分した時に登場する係数を相殺するため 2 1 k ∑ k k 2 k k 2 1 @2018 minemichi 8
  3. 交差エントロピー 誤差 E = − t log y 正解ラベルに対して出した判定( 確率)

    そのlog をとっている delta=le-7 #log0 でマイナス無限大になるのを防ぐ微小な値 return -np.sum(t*np.log(y+delta)) k ∑ k k @2018 minemichi 9
  4. ミニバッチ学習 すべての訓練デー タに対する損失関数を求め 総和が小さくなるようにしたい 例えば交差エントロピー 誤差の場合 E = − t

    log y 損失関数の平均を出したいから をかける 損失関数をすべて求める時間はない バッチの一部分( ミニバッチ) で全体の近似を取ろう np.random.choice(num1,num2) 0~num1 までの間から num2 個の数字をランダムに取り出し、 配列とする N 1 n ∑ k ∑ nk nk N 1 @2018 minemichi 10
  5. [ バッチ対応版] 交差エントロピー 誤差の実装 デー タがひとつの場合と、 バッチの場合 分けて考える def cross_entropy_error(y,t):

    if y.ndim == 1: t = t.reshape(1,t.size) y = y.reshape(1,y.size) batch_size = y.shape[0] return -np.sum(t*np.log(y))/batch_size one-hot 表現でない場合 return -np.sum(np.log(y[np.arange(batch_size), t])) / batch_size @2018 minemichi 11
  6. NN のパラメー タ自動決定には勾配法が用いられる 勾配法の理解には微分の理解が不可欠 微分 = 要素が微小な変化をした時の、 全体の瞬間変化量 極限の代わりに実数値を代入 数値微分

    数値微分では、 前方差分(x + h) − x の代わりに 中心差分(x + h) − (x − h) を求めるとよい 実数値は丸め誤差との折衷案で10 程度が適当 dx df(x) h→0 lim h f(x + h) − f(x) −4 @2018 minemichi 14
  7. 勾配法 x = x − η 微分で求めた傾きに従い 損失関数が小さくなる方向に動かす η は学習率と呼ばれるもの

    勾配法一回につき変化させるパラメー タの大きさ η は大きすぎても小さすぎてもいけない ニュー ラルネットワー クに対する勾配 f = lambda w: net.loss(x, t) 引数w の関数f を定義 0 0 ∂x0 ∂f @2018 minemichi 18