{"id":653,"date":"2026-10-09T16:25:29","date_gmt":"2026-10-09T14:25:29","guid":{"rendered":"https:\/\/www.ranksignal.fr\/blog\/?p=653"},"modified":"2026-10-14T17:28:47","modified_gmt":"2026-10-14T15:28:47","slug":"qu-est-ce-qu-un-modele-d-apprentissage-profond","status":"publish","type":"post","link":"https:\/\/www.ranksignal.fr\/blog\/deep-learning\/qu-est-ce-qu-un-modele-d-apprentissage-profond\/","title":{"rendered":"Mod\u00e8le d&rsquo;apprentissage profond : des couches qui apprennent"},"content":{"rendered":"<p><\/p>\n<p>Montre \u00e0 une machine 50 000 avis de films, chacun \u00e9tiquet\u00e9 \u00ab positif \u00bb ou \u00ab n\u00e9gatif \u00bb, et elle finit par deviner le ton d&rsquo;un avis qu&rsquo;elle n&rsquo;a jamais lu. Personne ne lui a dict\u00e9 la liste des mots \u00e0 surveiller : elle a r\u00e9gl\u00e9 elle-m\u00eame ses param\u00e8tres, essai apr\u00e8s essai. C&rsquo;est l&rsquo;id\u00e9e d&rsquo;un mod\u00e8le d&rsquo;apprentissage profond. Ici, tu vas voir de quoi il est fait, comment il calcule, comment il apprend, et dans quels usages tu le croises d\u00e9j\u00e0.<\/p>\n<p><strong>Sommaire<\/strong><\/p>\n<ul>\n<li><a href=\"#l-essentiel-en-30-secondes\">L&rsquo;essentiel en 30 secondes<\/a><\/li>\n<li><a href=\"#un-empilement-de-couches-pas-un-programme-ecrit-a-la-main\">Un empilement de couches, pas un programme \u00e9crit \u00e0 la main<\/a><\/li>\n<li><a href=\"#dans-une-couche-chaque-neurone-ne-fait-que-deux-gestes\">Dans une couche, chaque neurone ne fait que deux gestes<\/a><\/li>\n<li><a href=\"#pourquoi-empiler-ne-suffit-pas-la-cassure-de-la-linearite\">Pourquoi empiler ne suffit pas : la cassure de la lin\u00e9arit\u00e9<\/a><\/li>\n<li><a href=\"#comment-les-poids-se-reglent-tout-seuls\">Comment les poids se r\u00e8glent tout seuls<\/a><\/li>\n<li><a href=\"#ce-que-les-couches-finissent-par-savoir-voir\">Ce que les couches finissent par savoir voir<\/a><\/li>\n<li><a href=\"#un-avis-de-film-du-texte-brut-au-verdict\">Un avis de film, du texte brut au verdict<\/a><\/li>\n<li><a href=\"#une-meme-famille-des-formes-differentes-selon-les-donnees\">Une m\u00eame famille, des formes diff\u00e9rentes selon les donn\u00e9es<\/a><\/li>\n<li><a href=\"#a-quoi-un-modele-profond-sert-concretement\">\u00c0 quoi un mod\u00e8le profond sert concr\u00e8tement<\/a><\/li>\n<li><a href=\"#d-ou-vient-son-succes-une-vieille-idee-devenue-praticable\">D&rsquo;o\u00f9 vient son succ\u00e8s : une vieille id\u00e9e devenue praticable<\/a><\/li>\n<li><a href=\"#trois-idees-recues-a-ranger\">Trois id\u00e9es re\u00e7ues \u00e0 ranger<\/a><\/li>\n<\/ul>\n<h2 id=\"l-essentiel-en-30-secondes\">L&rsquo;essentiel en 30 secondes<\/h2>\n<ul>\n<li>Un mod\u00e8le d&rsquo;apprentissage profond est un <strong><a href=\"\/blog\/deep-learning\/que-sont-les-reseaux-de-neurones\/\" title=\"r\u00e9seau de neurones\">r\u00e9seau de neurones<\/a> \u00e0 plusieurs couches cach\u00e9es<\/strong> : la sortie de chaque couche devient l&rsquo;entr\u00e9e de la suivante.<\/li>\n<li>Chaque neurone fait deux gestes : une <strong>somme pond\u00e9r\u00e9e de ses entr\u00e9es<\/strong>, puis le passage par une fonction d&rsquo;activation non lin\u00e9aire.<\/li>\n<li>Sans cette non-lin\u00e9arit\u00e9, les couches <strong>s&rsquo;effondrent en une seule<\/strong> : la profondeur n&rsquo;apporterait rien.<\/li>\n<li>Les poids se r\u00e8glent par <strong>descente de gradient et r\u00e9tropropagation<\/strong>, qui font remonter l&rsquo;erreur de la sortie vers l&rsquo;entr\u00e9e.<\/li>\n<li>Les couches successives b\u00e2tissent des <strong>repr\u00e9sentations de plus en plus abstraites<\/strong> : plus besoin de d\u00e9crire \u00e0 la main ce qu&rsquo;il faut regarder.<\/li>\n<\/ul>\n<h2 id=\"un-empilement-de-couches-pas-un-programme-ecrit-a-la-main\">Un empilement de couches, pas un programme \u00e9crit \u00e0 la main<\/h2>\n<p>Un r\u00e9seau de neurones organise ses neurones en couches. Une couche d&rsquo;entr\u00e9e re\u00e7oit les donn\u00e9es, une ou plusieurs couches cach\u00e9es les transforment, et une couche de sortie renvoie la r\u00e9ponse. L&rsquo;information circule d&rsquo;abord vers l&rsquo;avant, des entr\u00e9es vers la sortie : on parle de propagation avant.<\/p>\n<p>Le mot <strong>profond<\/strong> ne d\u00e9signe rien de plus myst\u00e9rieux que ceci : on empile plusieurs couches cach\u00e9es. La sortie d&rsquo;une couche devient l&rsquo;entr\u00e9e de la suivante.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef46846c88&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef46846c88\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2550\" height=\"1500\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches.png\" alt=\"Un r\u00e9seau profond : quatre neurones d'entr\u00e9e, deux couches cach\u00e9es de six neurones chacune, puis un seul neurone de sortie, chaque neurone \u00e9tant reli\u00e9 \u00e0 tous ceux de la couche suivante\" class=\"wp-image-645\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches.png 2550w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches-300x176.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches-1024x602.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches-768x452.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches-1536x904.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_multicouches-2048x1205.png 2048w\" sizes=\"auto, (max-width: 2550px) 100vw, 2550px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Suis les lignes de gauche \u00e0 droite : le signal traverse la premi\u00e8re couche cach\u00e9e, puis la seconde, avant d&rsquo;aboutir \u00e0 l&rsquo;unique neurone de sortie.<\/figcaption><\/figure>\n\n\n<p>Combien de couches faut-il pour m\u00e9riter le mot ? Il n&rsquo;y a pas de seuil officiel, mais les ordres de grandeur ont beaucoup boug\u00e9. Les premiers r\u00e9seaux n&rsquo;en avaient que quelques-unes ; dans les ann\u00e9es 2000, la recherche a vis\u00e9 <strong>plusieurs dizaines de couches<\/strong> ; les r\u00e9seaux des grands mod\u00e8les de langage comptent aujourd&rsquo;hui des dizaines \u00e0 des centaines de couches.<\/p>\n<p>Quant aux valeurs num\u00e9riques qui r\u00e8glent le comportement du r\u00e9seau, ses poids, elles ne sont pas \u00e9crites par un humain. Elles sont fix\u00e9es pendant l&rsquo;entra\u00eenement.<\/p>\n<h2 id=\"dans-une-couche-chaque-neurone-ne-fait-que-deux-gestes\">Dans une couche, chaque neurone ne fait que deux gestes<\/h2>\n<p>L&rsquo;unit\u00e9 de base est le neurone : un petit programme qui re\u00e7oit plusieurs entr\u00e9es, multiplie chacune par un poids, additionne le tout (c&rsquo;est un produit scalaire) et ajoute un biais. Le r\u00e9sultat traverse ensuite une fonction d&rsquo;activation. Un groupe de neurones ind\u00e9pendants forme une couche ; le \u00ab r\u00e9seau \u00bb se trouve entre les couches, l\u00e0 o\u00f9 chaque neurone re\u00e7oit les sorties de la couche pr\u00e9c\u00e9dente.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef468473b3&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef468473b3\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2250\" height=\"1500\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique.png\" alt=\"Un r\u00e9seau \u00e0 une seule couche cach\u00e9e : une couche d'entr\u00e9e de p variables reli\u00e9e \u00e0 cinq neurones cach\u00e9s \u00e0 activation ReLU, eux-m\u00eames reli\u00e9s \u00e0 un neurone de sortie Y\" class=\"wp-image-646\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique.png 2250w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique-300x200.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique-1024x683.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique-768x512.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique-1536x1024.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_reseau_neurones_couche_unique-2048x1365.png 2048w\" sizes=\"auto, (max-width: 2250px) 100vw, 2250px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Regarde les lignes grises, qui relient chaque entr\u00e9e \u00e0 chaque neurone cach\u00e9, puis les oranges, qui convergent vers la sortie : chaque trait porte un poids \u00e0 r\u00e9gler.<\/figcaption><\/figure>\n\n\n<p>Pour la version \u00e0 une couche cach\u00e9e, avec <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-3bf85f1087e9fbed3a319341134ac1a2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#112;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"10\" style=\"vertical-align: -4px;\"\/> entr\u00e9es <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-db3107c486a9e986d003cff8b3dce010_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#88;&#95;&#49;&#44;&#32;&#92;&#100;&#111;&#116;&#115;&#44;&#32;&#88;&#95;&#112;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"84\" style=\"vertical-align: -6px;\"\/> et <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-ea9c87a513e4a72624155d392fae86e2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#75;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"16\" style=\"vertical-align: 0px;\"\/> neurones cach\u00e9s, l&rsquo;activit\u00e9 du neurone <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-3422b6bb5c160593658b7c39425d9880_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#107;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: 0px;\"\/> s&rsquo;\u00e9crit :<\/p>\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 64px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-0cb949191ae4b86bfc94b4deab7c3ee4_l3.png\" height=\"64\" width=\"223\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#65;&#95;&#107;&#32;&#61;&#32;&#103;&#92;&#108;&#101;&#102;&#116;&#40;&#119;&#95;&#123;&#107;&#48;&#125;&#32;&#43;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#106;&#61;&#49;&#125;&#94;&#112;&#32;&#119;&#95;&#123;&#107;&#106;&#125;&#32;&#88;&#95;&#106;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#46;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n<p>Lis-la de l&rsquo;int\u00e9rieur vers l&rsquo;ext\u00e9rieur : chaque entr\u00e9e <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-7bf3b88c1697cfce46b4312aba73541a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#88;&#95;&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"21\" style=\"vertical-align: -6px;\"\/> est multipli\u00e9e par son poids <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-5f28ad003b0a620ce0af2d6fcf531588_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#119;&#95;&#123;&#107;&#106;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"14\" width=\"26\" style=\"vertical-align: -6px;\"\/>, on additionne le tout avec le biais <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-5bc2b9ceb6d218028c3eaa9c27017418_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#119;&#95;&#123;&#107;&#48;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"27\" style=\"vertical-align: -3px;\"\/>, puis la fonction d&rsquo;activation <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-d208fd391fa57c168dc0f151de829fee_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#103;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: -4px;\"\/> transforme ce total en <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-997dd0945420c88c8e3c38e3fd916bd1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#65;&#95;&#107;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"20\" style=\"vertical-align: -3px;\"\/>.<\/p>\n<p>La sortie du r\u00e9seau est ensuite une combinaison lin\u00e9aire des <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-ea9c87a513e4a72624155d392fae86e2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#75;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"16\" style=\"vertical-align: 0px;\"\/> neurones cach\u00e9s :<\/p>\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 53px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-2a603471fa97ca870ddfb88a61101fb2_l3.png\" height=\"53\" width=\"176\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#102;&#40;&#88;&#41;&#32;&#61;&#32;&#92;&#98;&#101;&#116;&#97;&#95;&#48;&#32;&#43;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#107;&#61;&#49;&#125;&#94;&#123;&#75;&#125;&#32;&#92;&#98;&#101;&#116;&#97;&#95;&#107;&#32;&#65;&#95;&#107;&#46;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n<p>Le biais n&rsquo;est qu&rsquo;un neurone suppl\u00e9mentaire de valeur constante 1, dont le poids <strong>d\u00e9cale la fonction d&rsquo;activation<\/strong>, un peu comme l&rsquo;ordonn\u00e9e \u00e0 l&rsquo;origine d\u00e9cale une droite. Pour une couche enti\u00e8re, on trouve aussi l&rsquo;\u00e9criture matricielle <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-e3a21a9999ddd513ba16731db1610cb0_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#87;&#120;&#32;&#43;&#32;&#98;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"92\" style=\"vertical-align: -4px;\"\/> : m\u00eame calcul, rang\u00e9 dans une grille de poids <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-4caed22919a1780df1b6310b338b904e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#87;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"19\" style=\"vertical-align: 0px;\"\/>.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Intuition<\/strong> Imagine un jury : chaque entr\u00e9e est un indice, son poids dit combien il compte, et l&rsquo;activation d\u00e9cide si le total suffit pour \u00ab s&rsquo;allumer \u00bb. Entra\u00eener le r\u00e9seau, c&rsquo;est apprendre \u00e0 pond\u00e9rer les indices.<\/p>\n<\/blockquote>\n<h2 id=\"pourquoi-empiler-ne-suffit-pas-la-cassure-de-la-linearite\">Pourquoi empiler ne suffit pas : la cassure de la lin\u00e9arit\u00e9<\/h2>\n<p>On pourrait croire qu&rsquo;il suffit d&rsquo;ajouter des couches pour gagner en puissance. Or multiplier un vecteur par deux matrices revient \u00e0 le multiplier par leur produit. Une suite de couches purement lin\u00e9aires <strong>s&rsquo;effondre donc en une seule couche<\/strong> dont la matrice est le produit de toutes les autres.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef468478ac&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef468478ac\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-scaled.png\" alt=\"Deux graphiques c\u00f4te \u00e0 c\u00f4te : \u00e0 gauche, sans activation, deux couches successives se confondent avec une seule droite ; \u00e0 droite, avec ReLU, la courbe est nulle pour les entr\u00e9es n\u00e9gatives puis cro\u00eet lin\u00e9airement\" class=\"wp-image-647\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-300x120.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-1024x410.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-768x307.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-1536x614.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b5_ch03_activation_relu-2048x819.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">\u00c0 gauche, la courbe de la couche 1 puis de la couche 2 se superpose exactement \u00e0 celle d&rsquo;une couche unique. \u00c0 droite, le coude de la ReLU casse cette \u00e9quivalence.<\/figcaption><\/figure>\n\n\n<blockquote>\n<p><strong>\u26a0\ufe0f Pi\u00e8ge<\/strong> Sans fonction d&rsquo;activation non lin\u00e9aire, un r\u00e9seau, aussi profond soit-il, se r\u00e9duit math\u00e9matiquement \u00e0 un simple mod\u00e8le lin\u00e9aire en les entr\u00e9es d&rsquo;origine.<\/p>\n<\/blockquote>\n<p>La fonction d&rsquo;activation doit donc \u00eatre non lin\u00e9aire, et (presque partout) d\u00e9rivable pour permettre la r\u00e9tropropagation. La plus courante aujourd&rsquo;hui est la <strong>ReLU<\/strong> : <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-638f7f2ae99951f6fc3f1d9e5b77908b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#103;&#40;&#122;&#41;&#32;&#61;&#32;&#122;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"65\" style=\"vertical-align: -5px;\"\/> si <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-e821a57035635710f5d6c56b4505a314_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#122;&#32;&#62;&#32;&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"14\" width=\"42\" style=\"vertical-align: -2px;\"\/>, et <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-a5e437be25f29374d30f66cd46adf81c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: 0px;\"\/> sinon. Elle est bien moins co\u00fbteuse \u00e0 calculer que l&rsquo;ancienne favorite, la <a href=\"\/blog\/maths\/qu-est-ce-qu-une-sigmoide\/\" title=\"sigmo\u00efde\">sigmo\u00efde<\/a>.<\/p>\n<p>Elle a aussi d\u00e9bloqu\u00e9 la profondeur. La sigmo\u00efde et la tangente hyperbolique saturent pour de grandes valeurs d&rsquo;entr\u00e9e : leur courbe s&rsquo;aplatit et leur d\u00e9riv\u00e9e devient quasi nulle. Propag\u00e9e \u00e0 travers de nombreuses couches, cette d\u00e9riv\u00e9e <strong>\u00e9teint le signal d&rsquo;erreur<\/strong> : c&rsquo;est le probl\u00e8me du gradient qui s&rsquo;\u00e9vanouit. La ReLU garde un gradient \u00e9gal \u00e0 0 ou \u00e0 1 et transmet un signal utile m\u00eame \u00e0 travers beaucoup de couches.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef4684838d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef4684838d\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"838\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-scaled.png\" alt=\"Trois courbes d'activation juxtapos\u00e9es : la fonction lin\u00e9aire, la sigmo\u00efde logistique en forme de S born\u00e9e entre 0 et 1, et la ReLU nulle pour les valeurs n\u00e9gatives\" class=\"wp-image-648\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-300x98.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-1024x335.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-768x251.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-1536x503.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_comparaison_activations-2048x670.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Compare les extr\u00e9mit\u00e9s de la sigmo\u00efde, qui se couchent \u00e0 l&rsquo;horizontale, avec la ReLU, qui continue de monter c\u00f4t\u00e9 positif : c&rsquo;est cette pente conserv\u00e9e qui laisse passer l&rsquo;erreur.<\/figcaption><\/figure>\n\n\n<h2 id=\"comment-les-poids-se-reglent-tout-seuls\">Comment les poids se r\u00e8glent tout seuls<\/h2>\n<p>Reste la vraie question : d&rsquo;o\u00f9 viennent les poids ? On part de poids quelconques, on mesure l&rsquo;\u00e9cart entre la sortie du r\u00e9seau et la valeur attendue avec une <strong>fonction de perte<\/strong> (l&rsquo;erreur quadratique pour pr\u00e9dire un nombre, l&rsquo;entropie crois\u00e9e pour classer), puis on corrige les poids dans la direction qui fait baisser cette perte le plus vite. C&rsquo;est la descente de gradient.<\/p>\n<p>Le gradient de la perte par rapport \u00e0 chaque poids se calcule avec la <strong>r\u00e9tropropagation<\/strong>, couche apr\u00e8s couche, en partant de la sortie. En pratique, on met les poids \u00e0 jour \u00e0 partir de petits sous-\u00e9chantillons des donn\u00e9es, des lots, plut\u00f4t que de l&rsquo;ensemble complet \u00e0 chaque \u00e9tape. Cela acc\u00e9l\u00e8re consid\u00e9rablement l&rsquo;entra\u00eenement de tr\u00e8s grands r\u00e9seaux.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef46848822&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef46848822\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1173\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-scaled.png\" alt=\"Un r\u00e9seau \u00e0 une couche cach\u00e9e en deux panneaux : \u00e0 gauche, fl\u00e8ches bleues de propagation avant des entr\u00e9es vers la sortie ; \u00e0 droite, fl\u00e8ches orange de r\u00e9tropropagation de l'erreur delta de la sortie vers les entr\u00e9es\" class=\"wp-image-649\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-300x138.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-1024x469.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-768x352.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-1536x704.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b4_ch09_deux_couches_retropropagation-2048x939.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Les fl\u00e8ches bleues montrent le calcul qui produit la r\u00e9ponse, les orange le chemin inverse que suit l&rsquo;erreur pour atteindre chaque poids.<\/figcaption><\/figure>\n\n\n<p>Au c\u0153ur de ce chemin inverse se trouve la r\u00e8gle delta. Notons <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-02c416d77f6650e9c7849397bf6e11bf_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#100;&#101;&#108;&#116;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"8\" style=\"vertical-align: 0px;\"\/> l&rsquo;erreur locale attribu\u00e9e \u00e0 un neurone, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-5c53d6ebabdbcfa4e107550ea60b1b19_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\" style=\"vertical-align: 0px;\"\/> son entr\u00e9e pond\u00e9r\u00e9e et <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-be3ed58d7e3074bdc0c43ea98f58bed3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#103;&#39;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"13\" style=\"vertical-align: -4px;\"\/> la d\u00e9riv\u00e9e de l&rsquo;activation :<\/p>\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 41px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-05d85a8ae32ae7ff967078950d635f7c_l3.png\" height=\"41\" width=\"227\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#91; &#92;&#100;&#101;&#108;&#116;&#97;&#94;&#123;&#40;&#108;&#45;&#49;&#41;&#125;&#95;&#106;&#32;&#61;&#32;&#103;&#39;&#40;&#97;&#94;&#123;&#40;&#108;&#45;&#49;&#41;&#125;&#95;&#106;&#41;&#32;&#92;&#115;&#117;&#109;&#95;&#107;&#32;&#119;&#94;&#123;&#40;&#108;&#41;&#125;&#95;&#123;&#107;&#106;&#125;&#92;&#44;&#92;&#100;&#101;&#108;&#116;&#97;&#94;&#123;&#40;&#108;&#41;&#125;&#95;&#107;&#46;&#92;&#93;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n<p>Elle se lit ainsi : l&rsquo;erreur d&rsquo;un neurone de la couche <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-05b8cbb57bc600d4dd24d4def94d9097_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#108;&#45;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"35\" style=\"vertical-align: 0px;\"\/> est la combinaison pond\u00e9r\u00e9e des erreurs de la couche suivante, multipli\u00e9e par la pente de l&rsquo;activation. Appliqu\u00e9e couche apr\u00e8s couche depuis la sortie, elle <strong>redistribue l&rsquo;erreur vers l&rsquo;arri\u00e8re<\/strong> jusqu&rsquo;aux poids de la premi\u00e8re couche.<\/p>\n<p>Un tour d&rsquo;entra\u00eenement se r\u00e9sume donc en trois temps : propager les entr\u00e9es vers l&rsquo;avant pour obtenir sorties et erreur, calculer les <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/ql-cache\/quicklatex.com-02c416d77f6650e9c7849397bf6e11bf_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#100;&#101;&#108;&#116;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"8\" style=\"vertical-align: 0px;\"\/> de la sortie puis les faire remonter, enfin mettre \u00e0 jour tous les poids. Une seule it\u00e9ration r\u00e9duit d\u00e9j\u00e0 sensiblement l&rsquo;erreur d&rsquo;un petit r\u00e9seau, mais un entra\u00eenement r\u00e9aliste en demande typiquement des milliers.<\/p>\n<h3>Ce que \u00e7a donne en code<\/h3>\n<p>Comment dire tout cela \u00e0 une biblioth\u00e8que ? Voici un petit r\u00e9seau qui pr\u00e9dit une valeur num\u00e9rique, \u00e9crit avec Keras. Les mentions <code>In [n]:<\/code> sont les num\u00e9ros des cellules d&rsquo;un notebook : ce qui suit est la commande saisie.<\/p>\n<pre><code>In [24]: model = keras.Sequential([\n             layers.Dense(64, activation='relu'),\n             layers.Dropout(0.4),\n             layers.Dense(1)])\n<\/code><\/pre>\n<p><code>layers.Dense(64, activation='relu')<\/code> cr\u00e9e une couche pleinement connect\u00e9e de 64 neurones \u00e0 activation ReLU. <code>layers.Dropout(0.4)<\/code> d\u00e9sactive 40 % des neurones de cette couche, au hasard, \u00e0 chaque \u00e9tape d&rsquo;entra\u00eenement. La derni\u00e8re couche n&rsquo;a qu&rsquo;un neurone, sans activation : elle produit la pr\u00e9diction finale.<\/p>\n<p>Il reste \u00e0 choisir la fa\u00e7on d&rsquo;apprendre, puis \u00e0 lancer l&rsquo;entra\u00eenement sur des donn\u00e9es d&rsquo;entra\u00eenement (<code>X_train<\/code>, <code>Y_train<\/code>) et de validation (<code>X_valid<\/code>, <code>Y_valid<\/code>) :<\/p>\n<pre><code>In [25]: model.compile(optimizer=RMSprop(),\n                         loss='mse',\n                         metrics=[metrics.RootMeanSquaredError()])\n\nIn [26]: history = model.fit(X_train,\n                               Y_train,\n                               epochs=1500,\n                               batch_size=32,\n                               validation_data=(X_valid, Y_valid))\n<\/code><\/pre>\n<p><code>compile<\/code> fixe la variante de descente de gradient (<code>RMSprop<\/code>, adaptative), la perte (l&rsquo;erreur quadratique moyenne) et les m\u00e9triques \u00e0 suivre. <code>fit<\/code> lance l&rsquo;entra\u00eenement : lots de 32 exemples, 1500 passes sur les donn\u00e9es, avec un jeu de validation qui permet de <strong>surveiller le surajustement<\/strong> au fil de la descente.<\/p>\n<h2 id=\"ce-que-les-couches-finissent-par-savoir-voir\">Ce que les couches finissent par savoir voir<\/h2>\n<p>Pourquoi un tel empilement marche-t-il si bien ? Parce que chaque couche travaille sur ce que la pr\u00e9c\u00e9dente a produit. Prends un r\u00e9seau qui doit identifier ce que montre une photo : ses toutes premi\u00e8res couches rep\u00e8rent le plus souvent des contours et des textures \u00e9l\u00e9mentaires, tandis que les couches situ\u00e9es plus loin assemblent ces indices en formes, puis en objets complets.<\/p>\n<p>Ces sorties interm\u00e9diaires s&rsquo;appellent des \u00e9tats cach\u00e9s : une repr\u00e9sentation interne des donn\u00e9es, dont une caract\u00e9ristique cl\u00e9 est la dimensionnalit\u00e9, c&rsquo;est-\u00e0-dire la taille des vecteurs employ\u00e9s.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Intuition<\/strong> Du contour \u00e0 la forme, de la forme \u00e0 l&rsquo;objet : chaque couche reformule l&rsquo;image dans un langage un peu plus abstrait que la pr\u00e9c\u00e9dente. Le r\u00e9seau invente lui-m\u00eame ce vocabulaire interm\u00e9diaire pendant l&rsquo;entra\u00eenement.<\/p>\n<\/blockquote>\n<p>C&rsquo;est ce qui le distingue des m\u00e9thodes plus anciennes. Pour classer un texte, on fabriquait d&rsquo;abord une repr\u00e9sentation, puis on la donnait \u00e0 un classifieur bay\u00e9sien na\u00eff ou \u00e0 une <a href=\"\/blog\/machine-learning\/qu-est-ce-qu-une-regression-logistique\/\" title=\"r\u00e9gression logistique\">r\u00e9gression logistique<\/a>. Le succ\u00e8s des r\u00e9seaux de neurones a rendu ces algorithmes <strong>largement obsol\u00e8tes<\/strong> sur ce terrain. L\u00e0 o\u00f9 les m\u00e9thodes pr\u00e9c\u00e9dentes peinaient \u00e0 extraire, seules, une structure assez riche des donn\u00e9es brutes, un r\u00e9seau profond la construit couche apr\u00e8s couche.<\/p>\n<h2 id=\"un-avis-de-film-du-texte-brut-au-verdict\">Un avis de film, du texte brut au verdict<\/h2>\n<p>Revenons \u00e0 nos avis de films. Sous sa forme naturelle, le langage est incompr\u00e9hensible pour une machine, qui ne manipule que des nombres. Le texte devient donc num\u00e9rique par paliers : one-hot, sac de mots, TF-IDF, puis <a href=\"\/blog\/rag\/que-sont-les-embeddings\/\" title=\"embeddings denses\">embeddings denses<\/a> qui encodent la proximit\u00e9 de sens.<\/p>\n<p>Le jeu de donn\u00e9es compte 50 000 avis, positifs et n\u00e9gatifs, de longueurs tr\u00e8s h\u00e9t\u00e9rog\u00e8nes, avec en moyenne 230 mots. Sans surprise, les mots les plus fr\u00e9quents sont <em>movie<\/em> et <em>film<\/em>.<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00c9tape<\/th>\n<th>Ce qui se passe<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Entr\u00e9e<\/td>\n<td>un avis en texte brut, transform\u00e9 en vecteurs num\u00e9riques<\/td>\n<\/tr>\n<tr>\n<td>Couche d&#8217;embedding<\/td>\n<td>chaque mot devient un vecteur de dimension 300<\/td>\n<\/tr>\n<tr>\n<td>Trois couches r\u00e9currentes (GRU)<\/td>\n<td>l&rsquo;avis est lu mot apr\u00e8s mot, avec un \u00e9tat cach\u00e9 de 256 unit\u00e9s<\/td>\n<\/tr>\n<tr>\n<td>Sortie<\/td>\n<td>un verdict \u00e0 deux issues, positif ou n\u00e9gatif<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Deux cat\u00e9gories seulement : on choisit donc l&rsquo;<a href=\"\/blog\/deep-learning\/l-entropie-croisee-binaire-bceloss\/\" title=\"entropie crois\u00e9e binaire\">entropie crois\u00e9e binaire<\/a>, l&rsquo;optimiseur Adam, et un entra\u00eenement par lots puisque l&rsquo;on dispose de milliers d&rsquo;avis.<\/p>\n<p>On suit l&rsquo;apprentissage sur des courbes d&rsquo;exactitude et de perte, trac\u00e9es pour l&rsquo;entra\u00eenement et pour la validation. Le mod\u00e8le atteint une bonne exactitude, que la matrice de confusion confirme sur le jeu de test. Mieux : en comparant la carte des avis dessin\u00e9e avant et apr\u00e8s l&rsquo;apprentissage, on constate que <strong>la repr\u00e9sentation s&rsquo;est rang\u00e9e par sentiment<\/strong>, les avis favorables d&rsquo;un c\u00f4t\u00e9 et les d\u00e9favorables de l&rsquo;autre. La d\u00e9marche se transpose \u00e0 n&rsquo;importe quel autre jeu de donn\u00e9es.<\/p>\n<h2 id=\"une-meme-famille-des-formes-differentes-selon-les-donnees\">Une m\u00eame famille, des formes diff\u00e9rentes selon les donn\u00e9es<\/h2>\n<p>Le r\u00e9seau \u00ab tout connect\u00e9 \u00bb vu jusqu&rsquo;ici n&rsquo;est qu&rsquo;une forme parmi d&rsquo;autres. L&rsquo;architecture s&rsquo;adapte \u00e0 la structure des donn\u00e9es.<\/p>\n<p><strong>Les images : r\u00e9seaux convolutifs.<\/strong> Ici, on ne relie pas chaque pixel \u00e0 chaque neurone : une couche de convolution prom\u00e8ne un petit filtre sur toute l&rsquo;image. En chaque point, elle note si le motif qu&rsquo;elle cherche s&rsquo;y trouve, et l&rsquo;ensemble de ces notes forme une carte d&rsquo;activation. Vient ensuite le pooling, qui r\u00e9sume chaque petite zone par sa valeur maximale : le r\u00e9seau tol\u00e8re mieux qu&rsquo;un motif se d\u00e9cale un peu, et les couches suivantes co\u00fbtent moins cher.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef46848c83&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef46848c83\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"614\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-scaled.png\" alt=\"Un r\u00e9seau convolutif en cha\u00eene : image d'entr\u00e9e, convolution et ReLU, max-pooling, nouvelle convolution et ReLU, puis couche dense\" class=\"wp-image-650\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-300x72.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-1024x246.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-768x184.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-1536x369.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_cnn_convolution_pooling-2048x492.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Lis la cha\u00eene comme une ligne de montage : les blocs convolution-pooling extraient des caract\u00e9ristiques, et la couche dense finale s&rsquo;en sert pour classer.<\/figcaption><\/figure>\n\n\n<p><strong>Les s\u00e9quences : <a href=\"\/blog\/deep-learning\/que-sont-les-reseaux-recurrents\/\" title=\"r\u00e9seaux r\u00e9currents\">r\u00e9seaux r\u00e9currents<\/a>.<\/strong> Dans un texte, une s\u00e9rie temporelle ou un signal audio, l&rsquo;ordre compte et la longueur varie. \u00c0 chaque pas de temps, le r\u00e9seau re\u00e7oit la nouvelle entr\u00e9e <em>et<\/em> un \u00e9tat cach\u00e9, une m\u00e9moire qui r\u00e9sume ce qu&rsquo;il a vu jusque-l\u00e0. Comme les m\u00eames poids sont r\u00e9utilis\u00e9s \u00e0 chaque pas, le nombre de param\u00e8tres reste fixe, que la s\u00e9quence compte dix \u00e9l\u00e9ments ou dix mille.<\/p>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6adef468490e6&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6adef468490e6\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"853\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-scaled.png\" alt=\"Un r\u00e9seau r\u00e9current sur une s\u00e9quence : quatre \u00e9tats cach\u00e9s successifs, chacun reli\u00e9 au suivant par une fl\u00e8che m\u00e9moire et produisant une sortie Yt\" class=\"wp-image-651\" srcset=\"https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-scaled.png 2560w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-300x100.png 300w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-1024x341.png 1024w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-768x256.png 768w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-1536x512.png 1536w, https:\/\/www.ranksignal.fr\/wp-content\/uploads\/2026\/10\/b1_ch09_architecture_rnn_sequence-2048x683.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Suis les fl\u00e8ches \u00ab m\u00e9moire \u00bb d&rsquo;un \u00e9tat \u00e0 l&rsquo;autre : c&rsquo;est par elles que l&rsquo;historique de la s\u00e9quence voyage.<\/figcaption><\/figure>\n\n\n<p><strong>Les s\u00e9quences encore, avec l&rsquo;attention : le <a href=\"\/blog\/deep-learning\/qu-est-ce-qu-un-transformer\/\" title=\"Transformer\">Transformer<\/a>.<\/strong> Les r\u00e9seaux r\u00e9currents sont lents, s\u00e9quentiels, et ils oublient. Un travail publi\u00e9 en 2017 sous le titre \u00ab Attention Is All You Need \u00bb y r\u00e9pond avec le transformeur : au lieu de transmettre une m\u00e9moire pas \u00e0 pas, son m\u00e9canisme d&rsquo;attention apprend directement comment les parties d&rsquo;une s\u00e9quence se r\u00e9pondent. Il sert de socle \u00e0 l&rsquo;IA g\u00e9n\u00e9rative, du texte jusqu&rsquo;\u00e0 la voix et \u00e0 la g\u00e9n\u00e9ration d&rsquo;images.<\/p>\n<h2 id=\"a-quoi-un-modele-profond-sert-concretement\">\u00c0 quoi un mod\u00e8le profond sert concr\u00e8tement<\/h2>\n<p>Les r\u00e9seaux de neurones ont largement r\u00e9volutionn\u00e9 la reconnaissance d&rsquo;image et la traduction automatique, deux domaines o\u00f9 les m\u00e9thodes ant\u00e9rieures peinaient \u00e0 extraire une structure assez riche des donn\u00e9es brutes.<\/p>\n<p>Les r\u00e9seaux r\u00e9currents <strong>classent des documents<\/strong> (pr\u00e9dire le sentiment d&rsquo;une critique, par exemple), et on les retrouve en traduction, en reconnaissance vocale ou en pr\u00e9vision de s\u00e9ries temporelles financi\u00e8res ou climatiques.<\/p>\n<p>Les grands mod\u00e8les de langage, eux, r\u00e9sument de longs documents, manipulent des donn\u00e9es non structur\u00e9es comme des courriels ou des journaux, \u00e9crivent du code et des tests unitaires, et analysent des images, des sons ou des vid\u00e9os. Un mod\u00e8le pr\u00e9entra\u00een\u00e9 de haute qualit\u00e9 est aujourd&rsquo;hui accessible par un simple appel \u00e0 un service h\u00e9berg\u00e9, sans entra\u00eenement ni h\u00e9bergement de ta part.<\/p>\n<h2 id=\"d-ou-vient-son-succes-une-vieille-idee-devenue-praticable\">D&rsquo;o\u00f9 vient son succ\u00e8s : une vieille id\u00e9e devenue praticable<\/h2>\n<p>L&rsquo;histoire commence dans les ann\u00e9es 1950, avec des perceptrons r\u00e9alis\u00e9s en mat\u00e9riel pour classer en deux cat\u00e9gories. Les d\u00e9cennies suivantes les ont d&rsquo;abord abandonn\u00e9s, puis r\u00e9invent\u00e9s gr\u00e2ce \u00e0 la r\u00e9tropropagation, qui a permis le perceptron multicouche.<\/p>\n<p>Le premier engouement date des ann\u00e9es 1980. La popularit\u00e9 a explos\u00e9 r\u00e9cemment gr\u00e2ce \u00e0 deux moteurs : <strong>le calcul massivement parall\u00e8le<\/strong> des processeurs graphiques (GPU) et la disponibilit\u00e9 de tr\u00e8s grands jeux de donn\u00e9es. Le tournant se situe en 2012 : AlexNet est le premier r\u00e9seau \u00e0 tenir ses promesses hors du laboratoire, et il r\u00e9v\u00e8le au passage ce que valent les GPU pour l&rsquo;apprentissage profond.<\/p>\n<p>C\u00f4t\u00e9 outils, les biblioth\u00e8ques d&rsquo;apprentissage profond servent aussi bien \u00e0 l&rsquo;entra\u00eenement qu&rsquo;\u00e0 l&rsquo;inf\u00e9rence. PyTorch s&rsquo;est impos\u00e9 comme leader clair ; TensorFlow, soutenu par Google, \u00e9tait tr\u00e8s pr\u00e9sent dans les ann\u00e9es 2010 mais est pass\u00e9 de mode, et JAX est un projet de recherche \u00e0 l&rsquo;interface plus simple. PyTorch calcule automatiquement les gradients de toute fonction d\u00e9rivable gr\u00e2ce \u00e0 son module <code>autograd<\/code> : on d\u00e9crit le calcul, et l&rsquo;on obtient le gradient n\u00e9cessaire \u00e0 l&rsquo;entra\u00eenement.<\/p>\n<h2 id=\"trois-idees-recues-a-ranger\">Trois id\u00e9es re\u00e7ues \u00e0 ranger<\/h2>\n<h3>\u00ab Avec autant de param\u00e8tres, il surajuste forc\u00e9ment \u00bb<\/h3>\n<p>Un r\u00e9seau profond compte des milliers, parfois des millions de param\u00e8tres : il semble condamn\u00e9 au surajustement total. Deux m\u00e9canismes de r\u00e9gularisation y rem\u00e9dient. Les p\u00e9nalit\u00e9s ridge ou <a href=\"\/blog\/maths\/la-methode-lasso\/\" title=\"lasso\">lasso<\/a> s&rsquo;appliquent telles quelles aux poids du r\u00e9seau. Le <strong>dropout<\/strong>, plus sp\u00e9cifique, d\u00e9sactive al\u00e9atoirement une fraction des neurones cach\u00e9s \u00e0 chaque \u00e9tape : le r\u00e9seau ne peut plus d\u00e9pendre excessivement d&rsquo;un neurone particulier. C&rsquo;est exactement ce que fait la ligne <code>Dropout(0.4)<\/code> de l&rsquo;exemple Keras.<\/p>\n<h3>\u00ab C&rsquo;est une bo\u00eete noire que personne ne comprend \u00bb<\/h3>\n<p>Un r\u00e9seau profond est bien nettement plus difficile \u00e0 interpr\u00e9ter qu&rsquo;un mod\u00e8le plus simple, comme une <a href=\"\/blog\/machine-learning\/quand-utiliser-une-regression-lineaire\/\" title=\"r\u00e9gression lin\u00e9aire\">r\u00e9gression lin\u00e9aire<\/a>. Mais la recherche ne baisse pas les bras : on distingue l&rsquo;interpr\u00e9tabilit\u00e9 comportementale (relier entr\u00e9es et sorties), attributionnelle (suivre, gr\u00e2ce au gradient, la contribution de chaque composante de l&rsquo;entr\u00e9e), par concepts (des sondes lisent les repr\u00e9sentations apprises) et m\u00e9caniste (une analyse fine des composants et de leur organisation).<\/p>\n<p>Pour les tr\u00e8s grands mod\u00e8les, l&rsquo;enjeu est r\u00e9el : leurs capacit\u00e9s ne sont pas con\u00e7ues a priori, elles viennent de la mise \u00e0 l&rsquo;\u00e9chelle, et reconstituer comment elles apparaissent reste difficile.<\/p>\n<h3>\u00ab S&rsquo;il r\u00e9pond avec assurance, c&rsquo;est qu&rsquo;il sait \u00bb<\/h3>\n<p>Un grand mod\u00e8le de langage ne d\u00e9tient pas de faits comme un humain en d\u00e9tient : \u00e0 chaque \u00e9tape, il choisit le token le plus probable d&rsquo;apr\u00e8s son entra\u00eenement. R\u00e9sultat : une r\u00e9ponse invent\u00e9e, vraisemblable mais fausse, peut sortir sur le m\u00eame ton assur\u00e9 qu&rsquo;une r\u00e9ponse exacte. Ses donn\u00e9es d&rsquo;entra\u00eenement refl\u00e8tent aussi les biais des textes humains dont elles sont extraites, et son savoir s&rsquo;arr\u00eate \u00e0 la date o\u00f9 elles ont \u00e9t\u00e9 fig\u00e9es.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc \u00c0 retenir<\/strong> Un mod\u00e8le profond, c&rsquo;est des couches de neurones s\u00e9par\u00e9es par des activations non lin\u00e9aires, dont une proc\u00e9dure d&rsquo;optimisation r\u00e8gle les poids jusqu&rsquo;\u00e0 ce que les repr\u00e9sentations interm\u00e9diaires servent la t\u00e2che vis\u00e9e.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Neurones, couches, activation, r\u00e9tropropagation : comprends ce qu&rsquo;est un mod\u00e8le d&rsquo;apprentissage profond et comment il apprend seul \u00e0 lire images et textes.<\/p>\n","protected":false},"author":1,"featured_media":652,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deep-learning"],"_links":{"self":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/comments?post=653"}],"version-history":[{"count":3,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/653\/revisions"}],"predecessor-version":[{"id":795,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/posts\/653\/revisions\/795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/media\/652"}],"wp:attachment":[{"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/media?parent=653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/categories?post=653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ranksignal.fr\/blog\/wp-json\/wp\/v2\/tags?post=653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}