Idée
Quand on ajoute un petit vecteur à une grande matrice, on imagine que le petit vecteur est recopié autant de fois qu'il faut pour combler.
Pourquoi
Quand on ajoute un petit vecteur (une seule colonne) à une grande matrice (plein de colonnes), on imagine que le petit vecteur est recopié autant de fois qu'il faut pour combler. Comme un patron qui distribue la même fiche de paie de base à tous ses employés ; chacun reçoit la même chose ajoutée à sa colonne. Permet d'écrire $Z = WX + b$ même si $b$ n'a qu'une seule colonne pour $m$ exemples.
Outil
Comme un patron qui distribue la même fiche de paie à tous ses employés : chacun reçoit la même valeur ajoutée à sa colonne.
Formule
Pour $\partial L / \partial b^{[2]}$, le résultat doit être de dimension $(n_2, 1)$. On part de $dZ^{[2]}$ qui est $(n_2, m)$. Expliquez pourquoi sommer suivant l'axe 1 (les colonnes) est la bonne opération, et faites le lien avec le broadcasting utilisé en forward propagation.
Piège
On peut écrire for j in range(m): Z[:,j] += b.flatten(). Marche, mais lent. Le broadcasting Numpy Z + b (avec b shape (n,1) et Z shape (n,m)) fait la même chose en un appel C optimisé. Vidéo 8 insiste : 'le broadcasting nous permet d'étendre les dimensions du tableau y'.