Key Concepts
- Understand how to use a cache to pass information from forward propagation to back propagation.
- Build and train a deep L-layer Neural Network
- See deep neural networks as successive blocks put one after each other
- Analyze matrix and vector dimensions to check neural network implementations.
- Understand the role of hyperparameters in deep learning
[mathjax]
Neural Networks and Deep Learning (deeplearning.ai) の受講メモ
Week4: Deep Neural Networks
Deep L-layer neural network
- layer数
- 事前予測は難しい
- holdout
- cross validation
- dev set evaluation
- Deep neural network notation
Deep neural network notation
\[
\begin{align*}
L &: \text{#layers}\\
n^{[l]} &: \text{#units in layer }l\\
a^{[l]} &: \text{activations in layer }l\\
&: g^{[l]}(z^{[l]})\\
w^{[l]} &: \text{weights for }Z^{[l]}\\
X &: \text{input feature}\\
&: a^{[0]}=X\\
&: a^{[L]}=\hat y
\end{align*}
\]
Forward propagation in a deep network
- L=4の場合$$
\begin{align*}
x: z^{[1]}&=w^{[1]}\overbrace{X}^{a^{[0]}}+b^{[1]}\\
a^{[1]}&=g^{[1]}(z^{[1]})\\
z^{[2]}&=w^{[2]}a^{[1]}+b^{[2]}\\
a^{[2]}&=g^{[2]}(z^{[2]})\\
\dots\\
z^{[4]}&=w^{[4]}a^{[3]}+b^{[4]}\\
a^{[4]}&=g^{[4]}(z^{[4]})\\
&= \hat y
\end{align*}
$$ - 一般化$$
\begin{align*}
z^{[l]}&=w^{[l]}a^{[l-1]}+b^{[l]}\\
a^{[l]}&=g^{[l]}(z^{[l]})\\
\end{align*}
$$ - Vectorized$$
\begin{align*}
Z^{[l]}&=w^{[l]}A^{[l-1]}+b^{[l]}\\
A^{[l]}&=g^{[l]}(Z^{[l]})\\
\end{align*}
$$ - このl=1..L部分の実装はfor loop しかないと思われる
- バグのない実装のためには
- 行列のサイズについて、秩序正しく、慎重になる
- 紙に書く
Getting your matrix dimensions right
- Parameters \(w^{[l]}\) and \(b^{[l]}\)
- \( w^{[l]}: (n^{[l]}, n^{[l-1]})\)
- \( b^{[l]}: (n^{[l]}, 1)\)
- \( dw^{[l]}: (n^{[l]}, n^{[l-1]})\)
- \( db^{[l]}: (n^{[l]}, 1)\)
- \( z^{[l]},a^{[l]}: (n^{[l]}, 1)\)
- Vectorized implementation
- \( w^{[l]}: (n^{[l]}, n^{[l-1]})\)
- \( b^{[l]}: (n^{[l]}, m)\)
- python broadcasting をつかおう
- \( Z^{[l]}, A^{[l]} : (n^{[l]}, m)\)
- \( dZ^{[l]},dA^{[l]} : (n^{[l]}, m)\)
Why deep representations?
- Intuition about deep representation
- 簡単なものから複雑なものへ積み上げ組み立てる
- 畳み込みネットワーク
- 顔認識
- 境界を探すところからパーツ、全体へ
- 音声認識
- 音量上下、ホワイトノイズ、周波数
- 音の基本ユニット、言語学音素
- 音の中の単語
- センテンス、フレーズ
- 深層学習と脳が類似してると考えるのは危険
- Circuit theory and deep learning 回路理論とDL
- small L-layer deep neural network(狭くて深い・hidden unitが少ない)
- shallow network(浅い)と指数関数的に多くのhidden unitが必要
- n bit xのXOR回路
- #layer: O(log n), Node:small
- #layer:1, Node O(n^2)
- 深いネットのほうが計算が楽な数学的関数が存在する、ということ
- Branding: Deep Learning
- いままで Neural networks with a lot of hidden layers と呼ばれていた
Building blocks of deep neural networks
- Forward and backward functions
- \[
\begin{array}{ccc}
a^{[l-1]}\rightarrow & \boxed{w^{[l]},b^{[l]}} & \rightarrow a^{[l]}\\
\ & \downarrow \text{cache } z^{[l]}& \ \\
da^{[l-1]}\leftarrow & \boxed{w^{[l]},b^{[l]},dz^{[l]}} & \leftarrow da^{[l]}\\
\ & \downarrow & \ \\
\ & dw^{[l]}, db^{[l]} & \ \\
\end{array}
\]
\[
\require{enclose}
\begin{array}{ccccccccc}
\begin{array}{l} a^{[0]}\\ \color{green}x \end{array} \rightarrow & \boxed{w^{[1]},b^{[1]}} & \rightarrow a^{[1]} \rightarrow & \boxed{w^{[2]},b^{[2]}} & \rightarrow a^{[2]} \rightarrow & \boxed{\dots} & \rightarrow a^{[l-1]} \rightarrow & \boxed{w^{[l]},b^{[l]}} & \rightarrow a^{[l]},\hat y \\
\ & z^{[1]} \downarrow \text{cache } \lbrace \begin{array}{l}w^{[1]} \\b^{[1]}\end{array}& \ & z^{[2]} \downarrow \text{cache } \lbrace \begin{array}{l}w^{[2]} \\b^{[2]}\end{array} & \ & \dots \downarrow \dots & \ & z^{[l]} \downarrow \text{cache } \lbrace \begin{array}{l}w^{[l]} \\b^{[l]}\end{array} & \color{green}\downarrow \\
\enclose{horizontalstrike}{da^{[0]}}\leftarrow & \boxed{w^{[1]},b^{[1]},dz^{[1]}} & \color{red} \leftarrow da^{[1]} \color{red}\leftarrow & \boxed{w^{[2]},b^{[2]},dz^{[2]}} & \color{red} \leftarrow da^{[2]} \color{red}\leftarrow & \boxed{\dots} & \color{red}\leftarrow da^{[l-1]} \color{red}\leftarrow & \boxed{w^{[l]},b^{[l]},dz^{[l]}} & \color{red}\leftarrow da^{[l]} \\
\ & \downarrow \color{green}\downarrow & \ & \downarrow \color{green}\downarrow & \ & \ \color{green}\downarrow & \ & \downarrow \color{green}\downarrow & \ \\
\ & dw^{[1]}, db^{[1]} & \ & dw^{[2]}, db^{[2]} & \ & \dots & \ & dw^{[l]}, db^{[l]} & \ \\
\end{array}
\]
Forward and Backward Propagation
- Forward propagation for layer l
- Input \( a^{[l-1]}\)
- Output \(a^{[l]}\), cache (\(z^{[l]}\))
- Backward propagation for layer l
- Input \( da^{[l-1]}\)
- Output \(da^{[l]}, dW^{[l]}, db^{[l]}\)
- \[
\begin{align*}
dZ^{[l]}&=\overbrace{W^{[l+1]T} dZ^{[l+1]}}^{A^{[l]}} * g^{[l]’}(Z^{[l]})\\
dW^{[l]}&=\frac{1}{m} dZ^{[l]}X^T\\
db^{[l]}&=\frac{1}{m} np.sum(dZ^{[l]}, axis=1, keepdims=true) \\
dA^{[l-1]}&=W^{[l]T}\cdot dZ^{[l]}
\end{align*}
\]
Parameters vs Hyperparameters
- Parameters: \(W^{[1]}, b^{[1]}, W^{[2]}, b^{[2]}, W^{[3]}, b^{[3]}\dots \)
- Hyperparameters:
- Learning rate: \( \alpha \)
- #iterations
- #hidden layer: \( L \)
- #hidden units: \( n^{[1]}, n^{[2]}\dots \)
- choice of activation function
- Later course: Momentum, Minibatch, Regularization…
Applied deep learning is a very empirical process
- Repeat {
- Idea
- Code
- Experiment
- }
What does this have to do with the brain?
- 深層学習と脳はほとんど関係ない
- 理解困難なので、脳のようだと類推される
- 大衆の想像力を掻き立てるのに役立ってる
- 閾値計算をする脳細胞と似ている
- ロジスティック回帰と部分的には似てる
- 学習原理はわかっていない、back propagationやgradient descent なのかどうか