C'est le contenu du cours 1, semaine 3 (C1W3) de Spécialisation en apprentissage profond.
(C1W3L01) Newral Network Overview
(C1W3L02) Neural Network Representation
--Explication d'une seule couche cachée (= réseau de neurones à 2 couches, lors du comptage des couches, la couche d'entrée n'est pas comptée, la couche cachée et la couche de sortie sont comptées)
(C1W3L03) Computing a Neural Network Output
--Explication de la façon de calculer le réseau neuronal
z^{[1]} = W^{[1]} x + b^{[1]} \\
a^{[1]} = \sigma(z^{[1]}) \\
z^{[2]} = W^{[2]} a^{[1]} + b^{[2]} \\
a^{[2]} = \sigma(z^{[2]}) \\
(C1W3L04) Vectorizing Across Multiple Examples
--Comment calculer plusieurs exemples de formation
Z^{[1]} = W^{[1]} X + b^{[1]} \\
A^{[1]} = \sigma\left(Z^{[1]}\right) \\
Z^{[2]} = W^{[2]} Z^{[1]} + b^{[2]} \\
A^{[2]} = \sigma\left(Z^{[2]}\right)
Z^{[1]} = \left[ z^{[1](1)}\,z^{[1](2)}\,\cdotsz^{[1](m)} \right] \\
A^{[1]} = \left[ a^{[1](1)}\,a^{[1](2)}\,\cdotsa^{[1](m)} \right]
(C1W3L05) Explanation For Vectorized Implementation
X = \left[x^{(1)} \, x^{(2)} \, \cdots x^{(m)}\right] \\
Z^{[1]} = \left[z^{[1](1)}\,z^{[1](2)}\,\cdotsz^{[1](m)}\right] \\
Z^{[1]} = W^{[1]} X + b^{[1]}
(C1W3L06) Activation functions
--fonction sigmoïde
-
fonction --tanh
-
Mieux que la fonction sigmoïde. Parce que la valeur moyenne sera zéro. --Cependant, l'inconvénient commun de la fonction sigmoïde et de la fonction tanh est que la pente s'approche de 0 où $ z $ est grand, ce qui ralentit la convergence de la méthode de descente la plus raide.
Fonction ReLU
Leaky ReLU
La fonction d'activation peut changer en fonction de la couche (la couche cachée est tanh, la couche de sortie est sigmoïde, etc.)
Il existe de nombreux choix pour le réseau neuronal (type de fonction d'activation, méthode d'initialisation des paramètres, etc.), mais il est difficile de fournir des directives.
(C1W3L07) Why do you need non-linear activation function
――Pourquoi utiliser une fonction non linéaire pour la fonction d'activation? → Si vous en faites une fonction linéaire, même si vous augmentez le calque caché, ce ne sera finalement qu'une fonction linéaire, donc c'est inutile.
(C1W3L08) Derivatives of activation functions
g(z) = \frac{1}{1+e^{-z}} \\
g^\prime(z) = g(z) \left( 1-g(z) \right)
g(z) = \tanh (z) \\
g^\prime(z) = 1-\left( \tanh(z) \right)^2
g(z) = \max\left(0, z\right) \\
g^\prime(z) = 0 \ (\text{if}\ z \lt 0) \\
g^\prime(z) = 1 \ (\text{if}\ z \ge 0)
g(z) = \max\left(0.01z, z\right) \\
g^\prime(z) = 0.01 \ (\textrm{if}\ z \lt 0) \\
g^\prime(z) = 1 \ (\textrm{if}\ z \ge 0)
(C1W3L09) Gradient descent for neural network
Z^{[1]} = W^{[1]} X + b^{[1]} \\
A^{[1]} = g^{[1]}\left( Z^{[1]} \right) \\
Z^{[2]} = W^{[2]} A^{[1]} + b^{[2]} \\
A^{[2]} = g^{[2]}\left( Z^{[2]} \right) = \sigma \left( Z^{[2]} \right)
-backpropagation
dZ^{[2]} = A^{[2]} - Y \ \ \left( Y = \left[ y^{(1)} \, y^{(2)} \, \cdots y^{(m)} \right] \right) \\
dW^{[2]} = \frac{1}{m} dZ^{[2]} A^{[1]\textrm{T}}\\
db^{[2]} = \frac{1}{m} \textrm{np.sum} \left( dZ^{[2]} \textrm{, axis=1, keepdims=True} \right)\\
dZ^{[1]} = W^{[2]\textrm{T}}dZ^{[2]} \ast g^{[1]\prime} \left(Z^{[1]}\right) \\
dW^{[1]} = \frac{1}{m}dZ^{[1]} X^{\text{T}} \\
db^{[1]} = \frac{1}{m} \textrm{np.sum} \left( dZ^{[1]} \textrm{, axis=1, keepdims=True} \right)\\
--Si vous n'ajoutez pas keepdims = True``` à
np.sum```, ce sera un vecteur $ (n ^ {[i]},) $. Avec
keepdims = True```, il devient un vecteur $ (n ^ {[i]}, 1) $. --Si vous n'ajoutez pas
keepdims = True```, faites
remodeler```
--Les pointes de `` np.sum '' sont entrelacées avec désinvolture (il est important d'être conscient de la dimension)
(C1W3L10) Backpropagation Intuition (optional)
(C1W3L11) Random Initialization
W^{[1]} = \textrm{np.random.randn(2, 2)} \ast 0.01 \\
b^{[1]} = \textrm{np.zero((2, 1))}
Recommended Posts