LoginSignup
0
0

More than 3 years have passed since last update.

Deep Learning Specialization (Coursera) 自習記録 (C2W3)

Last updated at Posted at 2020-05-25

はじめに

Deep Learning Specialization の Course 2, Week 3 (C2W3) の内容です。

(C2W3L01) Tuning process

内容

  • Hyperparameter のチューニング方法の説明
  • Hyperparameter の重要度は,下記の通り

    • 1 番大事
      • $\alpha$
    • 2 番目に大事
      • $\beta$ ($\sim 0.9$)
      • #hidden_units
      • mini-batch size
    • 3 番目に大事
      • #layers
      • learning rate decay
    • チューニングしない
      • Adam optimization algorithm の $\beta_1$,$\beta_2$,$\epsilon$
  • Hyperparameter を試すときは,try random values, don't use a grid

  • Coarse to Fine ; 良さそうな値が見つかったら,その近傍で細かく (fine) 調べる

(C2W3L02) Using an appropriate scale to pich hyperparameter

内容

  • リニアスケールでランダムに値を選択できる hyperparameter
    • $n^{[l]}$
    • #layers $L$
  • ログスケールでランダムに値を選択すべき hyperparameter
    • $\alpha$ ; 0.0001 ~ 1
    • $\beta$ ; 0.9 ~ 0.999
r = -4 \ast \textrm{np.random.rand()} \\
\alpha = 10^r \\
r = -2 \ast \textrm{np.random.rand()} - 1 \\
1-\beta = 10^r\\
\beta = 1-10^r

(C2W3L03) Hyperparameter Tuning in Practice : Panda vs. Caviar

内容

  • Re-test hyperparameters occasionally
  • Intuitions do get stale. Re-evaluate occasionally

  • 1 つのモデルに集中してチューニングする ; babysitting one model (Panda)

  • たくさんのモデルで並行してチューニングする ; Training many model in parallel (Caviar)

  • 十分なリソースがあるとき ; Caviar

  • データがたくさん,モデルが大きい ; Panda

(C2W3L04) Normalizing Activations in a Network

内容

  • input data に適用していた normalizing を,hidden layer にも適用することで,$W$ や $b$ の学習速度を高める
  • hidden layer $l$ の $z^{(i)}$ に対して,
\mu = \frac{1}{m}\sum_{i} z^{(i)} \\
\sigma^2 = \frac{1}{m} \sum_{i} \left( z^{(i)} - \mu \right)^2 \\
z^{(i)}_{norm} = \frac{z^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}} \\
\tilde{z}^{(i)} = \gamma z^{(i)}_{norm} + \beta
  • $\gamma$ と $\beta$ は learnable parameters
  • $z^{(i)}$ の平均と分散を,$\gamma$ と $\beta$ で望ましい値にセットする

(C2W3L05) Fitting Batch Norm into a Neural Network

内容

  • Batch Norm を使った計算方法の説明
  • 通常 ; $z^{[l]} \rightarrow a^{[l]}$
  • Batch Norm ; $z^{[l]} \rightarrow \tilde{z}^{[l]} \rightarrow a^{[l]}$
  • パラメタは $W^{[l]}$, $b^{[l]}$, $\beta^{[l]}$, $\gamma^{[l]}$ だが,$z^{[l]}$ の平均を計算すると,定数項の $b^{[l]}$ の影響がなくなるので,$b^{[l]}$ は不要になる
  • $z^{[l]}$, $\beta^{[l]}$, $\gamma^{[l]}$ の次元は $\left( n^{[l]}, 1 \right)$
  • Implementing gradient descent
    • for t=1 … numMiniBatches
      • Compute forward prop on $X^{\{t\}}$
        • In each hidden layer, use BN (Batch Norm) to replace $z^{[l]}$ with $\tilde{z}^{[l]}$
      • Use backprop to compute $dW^{[l]}$, $d\beta^{[l]}$, $d\gamma^{[l]}$
  • Works w/ momentum, RMSProp, Adam
  • TensorFlow なら tf.nn.batch_normalization でできるけどね

感想

  • いろんな計算方法が出てきたので,正直,消化しきれてない (内容は難しくないが,ボリュームが多い)

(C2W3L06) Why Does Batch Norm Work?

内容

  • なぜ batch norm を使うのか? の直感的な説明
  • 着目している mini-batch に対して batch norm を適用すると,多少のノイズを混ぜる効果がある (dropout のように)

感想

  • 正直,よく分からなかった

(C2W3L07) Batch Norm at Test Time

内容

  • $\mu$ と $\sigma^2$ は mini-batch 毎に計算する。
  • しかしテストのときにデータ数が少ない場合,$\mu$ と $\sigma^2$ は exponentially weighted average (across mini-batch) を利用する

(C2W3L08) Softmax regression

内容

  • multi-class classification の問題
  • $C$ ; #classes
  • Neural network の最終層 (第 $L$ 層) を softmax layer とする
z^{[L]} = W^{[L]} a^{[L-1]} + b^{[L]} \\
t = e^{z^{[L]}} \ \textrm{(element-wise)}\\
a^{[L]} = \frac{e^{z^{[L]}}}{\sum^C_{j=1}t_i}
  • hidden layer が無い場合は,領域を直線で分けるイメージ
  • 複雑な neural network なら,複雑な境界になる

(C2W3L09) Training a softmax classification

内容

  • Softmax regressoin generalizes logistic regression to $C$ classes.
  • If $C=2$, softmax reduces to logistic regression.
L\left( \hat{y}, y \right) = - \sum^{C}_{j=1} y_j \log \hat{y}_j\\
J = \frac{1}{m} \sum^m_{i=1} L\left( \hat{y}^{(i)}, y^{(i)} \right)

(C2W3L10) Deep Learning Frameworks

内容

  • Deep Learning Frameworks
    • Caffe / Caffe2
    • CNTK
    • DL4J
    • Keras
    • Lasagne
    • mxnet
    • PaddlePaddle
    • TensorFlow
    • Theano
    • Torch
  • Deep Learning Framework を選択する際には
    • Ease of programming (development and deployment)
    • Running speed
    • Truly open (open source with good governance)

(C2W3L11) Tensorflow

内容

  • $J(w) = w^2 -10w + 25$ を最小化する $w$ を求めることを題材に,TensorFlow の使い方を説明
  • コスト関数を設定すれば,back prop は自動で実装してくれる

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0