• Projets00
  • AI Academy13
  • Veille07 entrées ces 7 derniers jours
  • Outils00
Profil
Déposer un projet
ProjetsAI AcademyVeilleOutilsProfilDéposer
Le cours
19/59
Démonstration8 min

Empiler ne suffit pas

Empiler une couche de plus n'achète rien tant qu'il manque une pièce entre les deux.

Le plafond du modèle précédent tient à sa famille de fonctions, pas à son réglage. Le réflexe naturel est donc d'agrandir cette famille, et le premier moyen qui vient à l'esprit est d'empiler une couche de calcul de plus. Reste à savoir si ce réflexe achète quoi que ce soit.

Un graphique. En abscisse, six pas d'apprentissage, de zéro virgule cinquante à gauche à zéro virgule zéro un à droite. En ordonnée, la précision de test après quinze époques. Cinq points ronds sont posés, tous à peu près à la même hauteur ; celui du pas zéro virgule dix est en brique, plus gros, porte la valeur la plus haute et l'étiquette retenu. Le pas de gauche n'a pas de point : une croix en brique le surmonte, légendée divergence entre parenthèses NaN. Un trait tireté horizontal traverse toute la figure un peu au-dessous des cinq points ; il porte à son extrémité droite le nombre de paramètres du modèle de la page précédente et sa précision. Sous un filet, une ligne chiffre ce que la couche supplémentaire achète, en points de précision et en erreurs.
Cinq pas convergent au même endroit, un diverge : le réglage n'est pas ce qui manque.

On intercale une couche de h=128h=128h=128 neurones entre l'entrée et la sortie, hhh étant un entier qu'on choisit. Une telle couche est dite cachée, parce que rien n'entre ni ne sort du réseau chez elle.

Le calcul se fait alors en deux temps : on pose z[1]=W[1]x+b[1]\mathbf{z}^{[1]}=W^{[1]}\mathbf{x}+\mathbf{b}^{[1]}z[1]=W[1]x+b[1], puis on donne ce résultat au second temps, z[2]=W[2]z[1]+b[2]\mathbf{z}^{[2]}=W^{[2]}\mathbf{z}^{[1]}+\mathbf{b}^{[2]}z[2]=W[2]z[1]+b[2], et rien n'est posé entre les deux. Le crochet en exposant numérote l'étape de calcul, comme la page 2 l'avait annoncé.

H1={ x↦Wx+b : W∈M10,784(R), b∈R10 }H2={ x↦W[2](W[1]x+b[1])+b[2] : W[1]∈Mh,784(R), b[1]∈Rh, W[2]∈M10,h(R), b[2]∈R10 }\begin{aligned}\mathcal{H}_{1}&=\big\{\ \mathbf{x}\mapsto W\mathbf{x}+\mathbf{b}\ :\ W\in\mathcal{M}_{10,784}(\mathbb{R}),\ \mathbf{b}\in\mathbb{R}^{10}\ \big\}\\[2mm] \mathcal{H}_{2}&=\big\{\ \mathbf{x}\mapsto W^{[2]}\big(W^{[1]}\mathbf{x}+\mathbf{b}^{[1]}\big)+\mathbf{b}^{[2]}\ :\ W^{[1]}\in\mathcal{M}_{h,784}(\mathbb{R}),\ \mathbf{b}^{[1]}\in\mathbb{R}^{h},\ W^{[2]}\in\mathcal{M}_{10,h}(\mathbb{R}),\ \mathbf{b}^{[2]}\in\mathbb{R}^{10}\ \big\}\end{aligned}H1​H2​​={ x↦Wx+b : W∈M10,784​(R), b∈R10 }={ x↦W[2](W[1]x+b[1])+b[2] : W[1]∈Mh,784​(R), b[1]∈Rh, W[2]∈M10,h​(R), b[2]∈R10 }​
(8.1)
H\mathcal{H}H désigne une famille de fonctions, et son indice compte les étapes de calcul, non des coordonnées : H1\mathcal{H}_{1}H1​ est la famille de la page 6, H2\mathcal{H}_{2}H2​ celle qu'on vient de poser. Dans H2\mathcal{H}_{2}H2​, ce qui parcourt tout son ensemble est le quadruplet W[1]∈M128,784(R)W^{[1]}\in\mathcal{M}_{128,784}(\mathbb{R})W[1]∈M128,784​(R), b[1]∈R128\mathbf{b}^{[1]}\in\mathbb{R}^{128}b[1]∈R128, W[2]∈M10,128(R)W^{[2]}\in\mathcal{M}_{10,128}(\mathbb{R})W[2]∈M10,128​(R), b[2]∈R10\mathbf{b}^{[2]}\in\mathbb{R}^{10}b[2]∈R10, soit 128×784+128+10×128+10=101 770128\times 784+128+10\times 128+10=101\,770128×784+128+10×128+10=101770 paramètres contre 7 8507\,8507850. Les deux familles rendent dix scores, et le softmax\mathrm{softmax}softmax de la page 6 se pose après, identique dans les deux cas : le comparer ne changerait rien, et il est laissé de côté ici comme il l'était page 7.
DérivationDeux couches sans rien entre elles forment exactement la même famille de fonctions qu'une seule (proposition 3)
1

Hypothèses

  • ·

    H1\mathcal{H}_{1}H1​ et H2\mathcal{H}_{2}H2​ sont définies par (8.1)(8.1)(8.1).

  • ·

    I10∈M10(R)I_{10}\in\mathcal{M}_{10}(\mathbb{R})I10​∈M10​(R) est la matrice identité.

2

Propriétés utilisées

  • ·

    Associativité du produit matriciel

  • ·

    Distributivité du produit sur la somme

  • ·

    Règle des dimensions : M10,128×M128,784→M10,784\mathcal{M}_{10,128}\times\mathcal{M}_{128,784}\rightarrow\mathcal{M}_{10,784}M10,128​×M128,784​→M10,784​

3

Étapes

  1. Première inclusion, H2⊆H1\mathcal{H}_{2}\subseteq\mathcal{H}_{1}H2​⊆H1​. On développe l'expression de H2\mathcal{H}_{2}H2​ :

  2. W[2](W[1]x+b[1])+b[2]=(W[2]W[1])⏟Wx+(W[2]b[1]+b[2])⏟bW^{[2]}\big(W^{[1]}\mathbf{x}+\mathbf{b}^{[1]}\big)+\mathbf{b}^{[2]}=\underbrace{\big(W^{[2]}W^{[1]}\big)}_{W}\mathbf{x}+\underbrace{\big(W^{[2]}\mathbf{b}^{[1]}+\mathbf{b}^{[2]}\big)}_{\mathbf{b}}W[2](W[1]x+b[1])+b[2]=W(W[2]W[1])​​x+b(W[2]b[1]+b[2])​​

    Distributivité, puis associativité.

  3. Les dimensions donnent (10×128)(128×784)=10×784(10\times 128)(128\times 784)=10\times 784(10×128)(128×784)=10×784, donc W[2]W[1]∈M10,784(R)W^{[2]}W^{[1]}\in\mathcal{M}_{10,784}(\mathbb{R})W[2]W[1]∈M10,784​(R) ; et (10×128)(128×1)+(10×1)=10×1(10\times 128)(128\times 1)+(10\times 1)=10\times 1(10×128)(128×1)+(10×1)=10×1, donc W[2]b[1]+b[2]∈R10W^{[2]}\mathbf{b}^{[1]}+\mathbf{b}^{[2]}\in\mathbb{R}^{10}W[2]b[1]+b[2]∈R10. La fonction obtenue est donc bien un élément de H1\mathcal{H}_{1}H1​.

  4. Seconde inclusion, H1⊆H2\mathcal{H}_{1}\subseteq\mathcal{H}_{2}H1​⊆H2​. C'est celle qui donne l'égalité, et elle demande une construction. Soient W∈M10,784(R)W\in\mathcal{M}_{10,784}(\mathbb{R})W∈M10,784​(R) et b∈R10\mathbf{b}\in\mathbb{R}^{10}b∈R10 quelconques. On pose :

  5. W[1]=(W0)∈M128,784(R),b[1]=0∈R128,W[2]=( I10 ∣ 0 )∈M10,128(R),b[2]=bW^{[1]}=\begin{pmatrix}W\\ 0\end{pmatrix}\in\mathcal{M}_{128,784}(\mathbb{R}),\qquad \mathbf{b}^{[1]}=\mathbf{0}\in\mathbb{R}^{128},\qquad W^{[2]}=\big(\,I_{10}\ \big|\ 0\,\big)\in\mathcal{M}_{10,128}(\mathbb{R}),\qquad \mathbf{b}^{[2]}=\mathbf{b}W[1]=(W0​)∈M128,784​(R),b[1]=0∈R128,W[2]=(I10​ ​ 0)∈M10,128​(R),b[2]=b

    W[1]W^{[1]}W[1] empile WWW et 118118118 lignes nulles ; W[2]W^{[2]}W[2] sélectionne les dix premières coordonnées et jette les 118118118 autres.

  6. W[2]W[1]=( I10 ∣ 0 )(W0)=I10W+0⋅0=W,W[2]b[1]+b[2]=W[2]0+b=bW^{[2]}W^{[1]}=\big(\,I_{10}\ \big|\ 0\,\big)\begin{pmatrix}W\\ 0\end{pmatrix}=I_{10}W+0\cdot 0=W,\qquad W^{[2]}\mathbf{b}^{[1]}+\mathbf{b}^{[2]}=W^{[2]}\mathbf{0}+\mathbf{b}=\mathbf{b}W[2]W[1]=(I10​ ​ 0)(W0​)=I10​W+0⋅0=W,W[2]b[1]+b[2]=W[2]0+b=b

    Produit par blocs.

  7. La fonction de H1\mathcal{H}_{1}H1​ de paramètres (W,b)(W,\mathbf{b})(W,b) est donc atteinte dans H2\mathcal{H}_{2}H2​. Les deux inclusions donnent l'égalité.

4

Résultat

H2=H1\mathcal{H}_{2}=\mathcal{H}_{1}H2​=H1​
5

Interprétation

Les 101 770101\,770101770 paramètres ne décrivent pas une famille plus large : ils décrivent exactement la même, avec un paramétrage redondant. Chaque fonction de H2\mathcal{H}_{2}H2​ y est atteinte par une infinité de valeurs de (W[1],b[1],W[2],b[2])(W^{[1]},\mathbf{b}^{[1]},W^{[2]},\mathbf{b}^{[2]})(W[1],b[1],W[2],b[2]). La proposition 2 s'applique donc encore, mot pour mot, et le plafond de la page 7 tient : les régions de décision restent convexes, et le corollaire reste vrai.

Ce que ce résultat ne dit pas

  • ·

    L'égalité vaut pour toute taille de couche intermédiaire h≥10h\geq 10h≥10, y compris h=10 000h=10\,000h=10000 : la démonstration ne s'est servie de la valeur 128128128 nulle part, seulement de 128≥10128\geq 10128≥10. En dessous de 101010, la construction de la seconde inclusion ne se fait plus.

  • ·

    Elle vaut aussi pour trois couches, et pour LLL couches, par la même récurrence.

  • ·

    Elle cesse de valoir dès qu'une fonction non affine s'insère entre deux couches : c'est le sujet de la page 9.

Un argument tentant, et faux

On lit parfois que W[2]W[1]W^{[2]}W^{[1]}W[2]W[1] serait « de rang au plus 101010 », et que ce serait là la restriction. C'est faux comme argument, et la mesure le confirme : le rang du produit vaut bien 101010, mais toute matrice de M10,784(R)\mathcal{M}_{10,784}(\mathbb{R})M10,784​(R) est de rang au plus 101010, y compris celles de H1\mathcal{H}_{1}H1​.

Le rang ne restreint donc rien par rapport à la famille de départ, et au mieux il donnerait l'inclusion facile, celle de H2\mathcal{H}_{2}H2​ dans H1\mathcal{H}_{1}H1​. C'est la seconde inclusion, la construction explicite ci-dessus, qui fait la démonstration.

Les dix scores ne bougent pas quand la couche du milieu disparaît. C'est la proposition 3, sur une image : tant que rien ne s'interpose entre les deux étapes, 128128128 neurones de plus ne calculent rien qu'une seule matrice ne calculait déjà.

À gauche de l'écran, un sept manuscrit est dessiné case par case dans un carré quadrillé. À sa droite, trois colonnes de petits ronds sont reliées par deux nappes de traits très fins ; entre la colonne du milieu et la dernière, une case carrée vide, bordée de pointillés, marque un emplacement laissé libre. Les cases encrées du sept s'envolent une à une vers la première colonne, qui se remplit ; les traits s'illuminent en une vague qui va de la gauche vers la droite, la colonne du milieu s'assombrit, puis la dernière, et un cadre se referme sur le huitième de ses dix ronds. Dix nombres s'inscrivent alors dans la bande libre de droite, un par ligne, chacun en face du rond auquel il répond : un virgule zéro quatre trois deux tout en haut, treize virgule zéro six sept deux en face du rond encadré, et huit autres entre eux, dont trois négatifs. Les mots « deux couches » les coiffent. La colonne du milieu disparaît alors en rétrécissant, la case vide avec elle, et les deux nappes de traits n'en font plus qu'une, qui va tout droit de la première colonne à la dernière. Les dix nombres, eux, ne bougent pas. Le sept repasse dans ce réseau raccourci : ses cases s'envolent de nouveau, la première colonne se remplit, la vague traverse, la dernière s'allume. Dix nombres s'écrivent à côté des premiers, coiffés des mots « une seule ». Chiffre pour chiffre, les deux colonnes sont identiques.

0:00 / 0:25

Ce que 93 92093\,92093920 paramètres de plus achètent

La démonstration ne dit pas qu'un modèle à deux couches fera moins bien : elle dit qu'il ne pourra rien calculer qu'une seule couche ne calculait déjà. Reste à voir ce que l'entraînement en tire, et cela demande de lui donner sa meilleure chance, puisque le juger avec le pas d'un autre modèle ne prouverait rien. On balaie donc six valeurs du pas η\etaη sur 151515 époques, et on retient la meilleure.

Un pas trop grand fait diverger l'entraînement : les paramètres grandissent d'une correction à l'autre au lieu de se stabiliser, jusqu'à dépasser ce qu'un nombre flottant peut représenter, et le calcul rend alors NaN\mathrm{NaN}NaN, la marque d'un résultat qui n'est plus un nombre.

Le balayage du pas, puis le résultat · cours/lecon2/mesures.py, section 6

         eta    acc_test   remarque
        0.50       ---     divergence (NaN)
        0.20    0.9237     converge
        0.10    0.9256     converge
        0.05    0.9244     converge
        0.02    0.9240     converge
        0.01    0.9212     converge

    RETENU : eta = 0.1

    p                                       101770 parametres
    PRECISION DE TEST                       0.9256
    ERREURS                                 744 sur 10 000

    rang de W2 @ W1                         10

Lecture

  • ·

    À η=0,5\eta=0{,}5η=0,5, le modèle diverge dès la première époque, alors que ce même pas conviendra au réseau de la page 10. Un pas ne se transporte donc pas d'un modèle à l'autre, et c'est bien pourquoi on le balaie.

  • ·

    Au meilleur réglage : 0,92560{,}92560,9256 et 744744744 erreurs, contre 0,91930{,}91930,9193 et 807807807 pour 7 8507\,8507850 paramètres. 93 92093\,92093920 paramètres de plus achètent 0,630{,}630,63 point, soit 636363 erreurs sur 10 00010\,00010000.

  • ·

    Les deux chiffres ne sortent pas du même protocole, celui de la page 6 étant pris à sa dernière époque et celui-ci au meilleur de six pas : l'écart est donc un majorant de ce que la couche achète, et il est déjà minuscule.

  • ·

    Cet écart ne réfute pas la proposition 3, qui dit ce que la famille peut atteindre et non ce qu'un entraînement atteint. Les deux modèles partent d'un point différent et se corrigent sur des nombres différents, si bien qu'ils ne s'arrêtent pas au même endroit de la même famille.

  • ·

    La dernière ligne note W2 @ W1\mathrm{W2}\ @\ \mathrm{W1}W2 @ W1 le produit W[2]W[1]W^{[2]}W^{[1]}W[2]W[1], et son rang vaut 101010 : le nombre annoncé par l'argument fautif est bien là, et il ne démontre toujours rien.

Vérification rapide n° 16

La proposition 3 se généralise, et l'argument fautif se réfute.

  1. a

    Écrire ce que devient la proposition 3 pour trois couches sans rien entre elles, 784→h1→h2→10784\rightarrow h_{1}\rightarrow h_{2}\rightarrow 10784→h1​→h2​→10, et donner les deux inclusions.

  2. b

    Dire précisément pourquoi l'argument du rang ne prouve rien.

  3. c

    La construction de la seconde inclusion demande-t-elle h≥10h\geq 10h≥10 ? Que se passerait-il pour h=5h=5h=5 ?

Aucune réponse à cliquer : il y a un calcul à faire.

Leçon suivante
PrécédenteLe plafond, et d'où il vientSuivanteCasser la ligne droite