{"notes":[{"id":"classic-cnns/highway-networks","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Highway Networks","subtitle":"À la veille des réseaux résiduels","author":"Z. Yuan","paperDate":"2015-05-03","publishedOn":"2025-11-03","world":"external/highway-networks","paperTitle":"Highway Networks","paperUrl":"https://arxiv.org/abs/1505.00387","bibliography":{"title":"Highway Networks","authors":["Rupesh Kumar Srivastava","Klaus Greff","Jürgen Schmidhuber"],"url":"https://arxiv.org/abs/1505.00387","pdfUrl":"https://arxiv.org/pdf/1505.00387v2","codeUrl":null,"preprint":{"id":"1505.00387","submittedOn":"2015-05-03","url":"https://arxiv.org/abs/1505.00387"},"publication":null,"citation":"@misc{classiccnnshighwaynetworks2015,\n  title = {{Highway Networks}},\n  author = {Rupesh Kumar Srivastava and Klaus Greff and Jürgen Schmidhuber},\n  year = {2015},\n  eprint = {1505.00387},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1505.00387}\n}\n","citationPath":"/content/papers/citations/classic-cnns/highway-networks.f7d3ef9547ef.bib"},"thumbnail":{"src":"/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png","width":1344,"height":360},"locale":"fr","path":"/content/papers/fr/classic-cnns/highway-networks.a558a3a30685.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"ajouter-deux-portes","text":"Ajouter deux portes","depth":3},{"id":"pencher-dabord-vers-le-passage-direct","text":"Pencher d'abord vers le « passage direct »","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"plus-profond-plus-facile-à-entraîner","text":"Plus profond, plus facile à entraîner ?","depth":3},{"id":"facile-à-entraîner-soit-et-la-précision","text":"Facile à entraîner, soit ; et la précision ?","depth":3},{"id":"quont-appris-les-portes","text":"Qu'ont appris les portes ?","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/resnet","relation":"referenced","topic":""}]},{"id":"classic-cnns/resnet","category":"classic-cnns","legacyPath":"classic-cnns/1512-resnet","legacySlug":"1512-resnet","legacyPaths":[],"title":"ResNet","subtitle":"Un réseau convolutif de 100 couches","author":"Z. Yuan","paperDate":"2015-12-10","publishedOn":"2024-08-08","paperTitle":"Deep Residual Learning for Image Recognition","paperUrl":"https://arxiv.org/abs/1512.03385","bibliography":{"title":"Deep Residual Learning for Image Recognition","authors":["Kaiming He","Xiangyu Zhang","Shaoqing Ren","Jian Sun"],"url":"https://arxiv.org/abs/1512.03385","pdfUrl":"https://arxiv.org/pdf/1512.03385","codeUrl":null,"preprint":{"id":"1512.03385","submittedOn":"2015-12-10","url":"https://arxiv.org/abs/1512.03385"},"publication":{"venue":"CVPR","year":2016,"kind":"conference","url":"https://doi.org/10.1109/cvpr.2016.90"},"citation":"@misc{classiccnnsresnet2015,\n  title = {{Deep Residual Learning for Image Recognition}},\n  author = {Kaiming He and Xiangyu Zhang and Shaoqing Ren and Jian Sun},\n  year = {2015},\n  eprint = {1512.03385},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1512.03385}\n}\n","citationPath":"/content/papers/citations/classic-cnns/resnet.cf4014e8baae.bib"},"thumbnail":{"src":"/content/papers/assets/b8fe87fe757249ea6d7bb667fef3196754b9f80e28bf842a69b540ca94585d08.jpg","width":1224,"height":408},"locale":"fr","path":"/content/papers/fr/classic-cnns/resnet.2cc70ebed590.md","headings":[{"id":"définition-du-problème","text":"Définition du problème","depth":2},{"id":"résolution-du-problème","text":"Résolution du problème","depth":2},{"id":"quest-ce-quun-résidu-","text":"Qu'est-ce qu'un résidu ?","depth":3},{"id":"apprentissage-résiduel","text":"Apprentissage résiduel","depth":3},{"id":"blocs-résiduels","text":"Blocs résiduels","depth":3},{"id":"architecture-du-réseau","text":"Architecture du réseau","depth":3},{"id":"configuration-des-paramètres","text":"Configuration des paramètres","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"resnet-18-contre-resnet-34","text":"ResNet-18 contre ResNet-34","depth":3},{"id":"blocs-goulots-pour-les-réseaux-plus-profonds","text":"Blocs goulots pour les réseaux plus profonds","depth":3},{"id":"résultats-sur-imagenet","text":"Résultats sur ImageNet","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/vgg","relation":"background","topic":"Entraîner des réseaux convolutifs plus profonds"},{"id":"classic-cnns/densenet","relation":"next","topic":"Entraîner des réseaux convolutifs plus profonds"}]}],"text":"En 2015, tout le monde a bien compris l'intérêt de la profondeur. Dans leur introduction, les auteurs prennent l'exemple d'ImageNet : grâce à des réseaux plus profonds et à des champs réceptifs plus petits, la précision top-5 est passée en quelques années d'environ 84 % avec AlexNet à environ 95 %.\n\nL'ennui, c'est qu'un réseau profond devient vite difficile à entraîner.\n\nPour y parvenir, on avait imaginé à l'époque plusieurs solutions : des initialisations conçues pour garder stable la variance du signal ; entraîner d'abord un réseau peu profond, puis l'approfondir étape par étape ; ou accrocher des fonctions de perte auxiliaires aux couches intermédiaires. Toutes ces approches fonctionnent, mais toutes contournent la profondeur.\n\nEn mai 2015, Rupesh Kumar Srivastava, Klaus Greff et Jürgen Schmidhuber, de l'IDSIA en Suisse, publient ce court article, qui change d'angle : plutôt que de chercher à faire traverser chaque couche au signal sans dommage, autant lui offrir un chemin qui évite cette couche.\n\n\n> [!NOTE]\n> \n> Cet article est un résumé étendu présenté au Deep Learning Workshop de l'ICML 2015 ; il ne fait que quelques pages. Les mêmes auteurs ont ensuite développé ces travaux dans [Training Very Deep Networks](https://arxiv.org/abs/1507.06228), publié à NIPS 2015, avec davantage d'expériences et d'analyses ; cette note suit la version courte, antérieure.\n\n\n## Définir le problème\n\nDans un réseau feed-forward ordinaire, chaque couche applique une transformation non linéaire à son entrée :\n\n$$\ny = H(x, W_H)\n$$\n\n$H$ est généralement une transformation affine suivie d'une fonction d'activation. Quand le réseau est très profond, l'entraînement par SGD se bloque souvent dès le départ, à moins que les poids ne soient initialisés juste comme il faut pour que le signal ne soit ni amplifié ni atténué pendant la propagation avant et la rétropropagation (comme avec l'initialisation de Glorot ou celle de He).\n\nCe type d'initialisation a deux limites. D'abord, il dépend de la forme exacte de $H$ : changer de fonction d'activation peut obliger à dériver une nouvelle initialisation. Ensuite, les auteurs constatent que, même avec l'initialisation de He, les réseaux ordinaires très profonds restent difficiles à optimiser, comme le montreront les expériences.\n\nExiste-t-il alors une architecture qui s'entraîne directement par SGD, quelle que soit la forme de $H$ et quel que soit le nombre de couches empilées ?\n\n## Résoudre le problème\n\n### Ajouter deux portes\n\nLes auteurs s'inspirent du LSTM. Le LSTM utilise des portes pour décider quelle part de la mémoire conserver et quelle part mettre à jour ; ici, la même idée est transposée à chaque couche d'un réseau feed-forward.\n\nIls définissent deux transformations non linéaires supplémentaires, une porte de transformation (*transform gate*) $T(x, W_T)$ et une porte de transport (*carry gate*) $C(x, W_C)$ :\n\n$$\ny = H(x, W_H)\\cdot T(x, W_T) + x\\cdot C(x, W_C)\n$$\n\n$T$ détermine quelle part de la sortie vient de « transformer l'entrée », $C$ quelle part vient de « transporter l'entrée telle quelle ». Par simplicité, l'article pose $C = 1 - T$ :\n\n$$\ny = H(x, W_H)\\cdot T(x, W_T) + x\\cdot\\big(1 - T(x, W_T)\\big)\n$$\n\nRegardons les deux extrêmes :\n\n$$\ny=\\begin{cases}x, & T=0\\\\ H(x, W_H), & T=1\\end{cases}\n\\qquad\\qquad\n\\frac{dy}{dx}=\\begin{cases}I, & T=0\\\\ H'(x, W_H), & T=1\\end{cases}\n$$\n\nPour $T=0$, la couche transmet directement son entrée ; sa dérivée par rapport à l'entrée est la matrice identité, et le gradient repasse lui aussi intact. Pour $T=1$, c'est une couche ordinaire. En pratique, $T$ se situe entre les deux, et chaque couche peut glisser en douceur entre « couche ordinaire » et « passage direct ».\n\nIci, $T$ est un vecteur de même longueur que $x$, et chaque unité a sa propre porte : la sortie de la $i$-ième unité est $y_i = H_i(x)\\,T_i(x) + x_i\\,\\big(1 - T_i(x)\\big)$. Les dimensions de $x$, $y$, $H(x)$ et $T(x)$ doivent donc être identiques.\n\nEt quand il faut changer de dimension ? Les auteurs proposent deux méthodes : sous-échantillonner $x$ ou le compléter par des zéros de manière appropriée, ou bien utiliser une couche ordinaire pour changer la dimension, suivie de couches highway. L'article utilise la seconde.\n\nLa version convolutive de la couche highway fonctionne de la même manière : $H$ et $T$ sont tous deux calculés par convolution, chacun avec ses poids partagés, et un remplissage par des zéros donne à leurs cartes de caractéristiques la même taille que l'entrée.\n\n### Pencher d'abord vers le « passage direct »\n\nLa porte de transformation a la forme suivante :\n\n$$\nT(x) = \\sigma(W_T^T x + b_T)\n$$\n\nLes auteurs proposent une initialisation indépendante de $H$ : donner au biais $b_T$ une valeur négative, par exemple $-1$ ou $-3$, pour que le réseau penche d'emblée vers le transport, c'est-à-dire vers le passage direct. Cette idée vient elle aussi du LSTM : en 1999, Gers et al. recommandaient d'orienter dans un sens précis les biais des portes du LSTM, afin que le modèle capte les dépendances à longue distance dès le début de l'apprentissage.\n\nAvec un biais négatif, à quel point $T$ devient-il petit ?\n\n```python\nimport torch\n\nfor b_T in (0.0, -1.0, -3.0):\n    print(f\"b_T = {b_T:4} : T vaut environ {torch.sigmoid(torch.tensor(b_T)).item():.3f}\")\n```\n\n```text\nb_T =  0.0 : T vaut environ 0.500\nb_T = -1.0 : T vaut environ 0.269\nb_T = -3.0 : T vaut environ 0.047\n```\n\nPour $b_T=-3$, chaque couche ne doit qu'environ 5 % de sa sortie à la transformation, et 95 % à l'entrée transportée telle quelle. Comme la sortie de la sigmoïde reste toujours strictement entre 0 et 1, les deux cas extrêmes ne sont jamais exactement atteints, seulement approchés.\n\nEt après de nombreuses couches ? Prenons des vecteurs de 50 dimensions et comparons un réseau ordinaire de 50 couches à un réseau highway de 50 couches, juste après l'initialisation : à quel point la sortie ressemble-t-elle encore à l'entrée ?\n\n```python\nimport torch\nimport torch.nn.functional as F\n\ntorch.manual_seed(0)\nD, depth = 50, 50\nx = torch.randn(D)\n\ndef run(highway, b_T=-3.0):\n    h = x\n    for _ in range(depth):\n        W_H = torch.randn(D, D) * (2 / D) ** 0.5     # initialisation de He\n        H = F.relu(W_H @ h)\n        if highway:\n            W_T = torch.randn(D, D) * (1 / D) ** 0.5\n            T = torch.sigmoid(W_T @ h + b_T)\n            h = H * T + h * (1 - T)\n        else:\n            h = H\n    return F.cosine_similarity(h, x, dim=0).item()\n\nprint(f\"Réseau ordinaire, après {depth} couches, similarité cosinus entre sortie et entrée : {run(False):.2f}\")\nprint(f\"Réseau highway,   après {depth} couches, similarité cosinus entre sortie et entrée : {run(True):.2f}\")\n```\n\n```text\nRéseau ordinaire, après 50 couches, similarité cosinus entre sortie et entrée : 0.01\nRéseau highway,   après 50 couches, similarité cosinus entre sortie et entrée : 0.44\n```\n\nAprès 50 couches, la sortie du réseau ordinaire n'a presque plus aucun rapport avec l'entrée ; celle du réseau highway garde encore une bonne part de la direction de l'entrée. Avec quelques autres graines aléatoires, le réseau ordinaire se situe entre $-0.13$ et $0.20$, le réseau highway entre $0.26$ et $0.51$.\n\nCe n'est qu'une illustration à l'initialisation, et non une expérience de l'article. Elle montre que, dès le début de l'entraînement, l'information et le gradient disposent d'un chemin presque exempt de transformation ; à partir de là, le réseau peut apprendre peu à peu quand transformer, et de combien. Dans leurs expériences, les auteurs constatent que, dès lors que le biais est négatif, des réseaux très profonds commencent à apprendre, quelle que soit la distribution initiale à moyenne nulle de $W_H$ et quelle que soit la fonction d'activation de $H$.\n\n## Discussion\n\n### Plus profond, plus facile à entraîner ?\n\nPour étudier l'optimisation sans y mêler la généralisation, les auteurs mesurent sur MNIST l'entropie croisée de **l'ensemble d'entraînement**.\n\nLa première couche du réseau est toujours une couche entièrement connectée ordinaire, suivie de 9, 19, 49 ou 99 couches, puis d'un softmax. Le réseau ordinaire a 71 unités par couche, le réseau highway 50, de sorte que les deux aient à peu près le même nombre de paramètres. Par équité, chaque type de réseau bénéficie de 40 essais de recherche aléatoire pour régler le taux d'apprentissage, le momentum, la décroissance du taux d'apprentissage et la fonction d'activation de $H$ (ReLU ou tanh) ; le réseau highway règle en plus le biais de la porte de transformation (de $-1$ à $-10$). Tous les autres poids utilisent l'initialisation de He.\n\n[![Quatre courbes d'entraînement côte à côte, intitulées profondeur 10, 20, 50 et 100. L'axe vertical est l'entropie croisée moyenne (échelle logarithmique), l'axe horizontal les époques. La ligne bleue correspond au réseau ordinaire, la verte au réseau highway. À la profondeur 10, la ligne bleue finit la plus basse ; quand la profondeur augmente, elle reste de plus en plus haut et, à la profondeur 100, ne descend presque plus ; dans les quatre graphiques, la ligne verte descend très bas](/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png)](/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png)\n\n*Figure 1 de l'article, extraite de la [**page 4 du PDF v2**](https://arxiv.org/pdf/1505.00387v2#page=4), CC BY 4.0. Chaque courbe est le meilleur résultat obtenu par recherche aléatoire pour cette configuration ; en bleu, le réseau ordinaire, en vert, le réseau highway.*\n\nL'axe vertical est logarithmique : chaque graduation vers le bas correspond à une valeur dix fois plus petite.\n\nÀ la profondeur 10, le réseau ordinaire s'en sort très bien et finit même plus bas que le réseau highway. Dès que la profondeur augmente, il descend de plus en plus difficilement ; à la profondeur 100, la ligne bleue reste presque bloquée en haut.\n\nLa ligne verte, elle, ne montre aucun effet de la profondeur. Les auteurs notent que l'erreur finale du réseau highway de 100 couches est plus faible d'environ un ordre de grandeur que celle du réseau highway de 10 couches, et comparable à celle du réseau ordinaire de 10 couches ; de plus, les réseaux highway convergent toujours plus vite que les réseaux ordinaires. Ils ont aussi lancé sur CIFAR-100 l'entraînement d'un réseau highway de 900 couches ; au moment de la rédaction, il n'en était qu'à la 80e époque, sans aucun signe de difficulté d'optimisation jusque-là.\n\n### Facile à entraîner, soit ; et la précision ?\n\nBien s'entraîner est une chose, bien se comporter sur l'ensemble de test en est une autre. Les auteurs se comparent à FitNets. FitNets, proposés par Romero et al. en 2014, sont des réseaux minces et profonds construits avec maxout ; ces auteurs avaient constaté qu'en limitant les paramètres à environ 250 000 et les multiplications à environ 30 millions, la rétropropagation directe ne permettait d'entraîner que des réseaux d'environ 5 couches. Au-delà, il fallait d'abord entraîner un réseau enseignant peu profond, puis entraîner l'élève en deux étapes, en utilisant les couches intermédiaires de l'enseignant comme indices, avec ses étiquettes souples.\n\nLes réseaux highway, eux, sont tous entraînés directement par rétropropagation ; la comparaison porte sur CIFAR-10 avec des translations aléatoires :\n\n| Réseau | Couches | Paramètres | Précision en test |\n| --- | ---: | ---: | ---: |\n| Teacher (l'enseignant de FitNets) | 5 | environ 9 millions | 90,18 % |\n| Fitnet 1 | 11 | environ 250 000 | 89,01 % |\n| Fitnet 4 | 19 | environ 2,5 millions | 91,61 % |\n| Highway 1 (correspond à Fitnet 1) | 11 | environ 236 000 | 89,18 % |\n| Highway 2 (correspond à Fitnet 4) | 19 | environ 2,3 millions | **92,24 %** |\n| Highway 3* | 19 | environ 1,4 million | 90,68 % |\n| Highway 4* | 32 | environ 1,25 million | 90,34 % |\n\n*Tableau : extrait de la Table 1 de l'article. Les réseaux marqués * n'ont utilisé que 40 000 des 50 000 images d'entraînement. Le texte de l'article appelle Highway 4 le réseau qui correspond à Fitnet 4, alors que le tableau l'étiquette Highway 2 ; nous suivons ici le tableau.*\n\nÀ nombre de paramètres comparable, les réseaux highway entraînés directement atteignent une précision égale ou supérieure à celle des FitNets entraînés en deux étapes. Plus minces et plus profonds, Highway 3 et 4 n'ont qu'un peu plus d'un million de paramètres et font à peu près jeu égal avec le réseau enseignant et ses 9 millions de paramètres.\n\n### Qu'ont appris les portes ?\n\nEnfin, les auteurs ouvrent un réseau highway entièrement connecté de 50 couches, une fois entraîné, pour observer le comportement réel des portes :\n\n[![Cartes de chaleur sur deux lignes et quatre colonnes. La ligne du haut correspond à MNIST, celle du bas à CIFAR-100 ; dans chaque carte, l'axe vertical est la profondeur et l'axe horizontal les 50 unités. La première colonne montre les biais des portes de transformation, la deuxième la sortie moyenne des portes de transformation sur 10 000 exemples, la troisième la sortie des portes de transformation pour un seul exemple, surtout des valeurs basses en bleu avec quelques points lumineux épars ; la quatrième montre la sortie des blocs pour un seul exemple, sous forme de rayures verticales](/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png)](/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png)\n\n*Figure 2 de l'article, extraite de la [**page 5 du PDF v2**](https://arxiv.org/pdf/1505.00387v2#page=5), CC BY 4.0. En haut MNIST, en bas CIFAR-100. Les quatre colonnes montrent, dans l'ordre, les biais des portes de transformation, la sortie moyenne des portes sur 10 000 exemples, la sortie des portes pour un seul exemple, et la sortie des blocs pour ce même exemple.*\n\nPlusieurs éléments de cette figure gagnent à être lus ensemble.\n\n**Les biais sont plus négatifs que prévu.** Les biais des deux réseaux sont initialisés respectivement à $-2$ et $-4$. Les auteurs s'attendaient à ce que l'entraînement les fasse remonter ; la plupart sont au contraire devenus plus négatifs. Sur CIFAR-100, les biais augmentent avec la profondeur et forment un gradient, qui va justement à l'inverse de la sortie moyenne des portes dans la deuxième colonne. L'interprétation des auteurs : dans les couches basses, ces biais très négatifs rendent les portes plus sélectives, de sorte qu'elles ne s'ouvrent que pour certaines entrées. La sortie des portes pour un seul exemple, dans la troisième colonne, est très clairsemée, ce qui appuie cette interprétation.\n\n**La plupart des unités laissent tout passer.** La sortie des blocs, dans la quatrième colonne, forme des rayures : la sortie de nombreuses unités ne change presque pas sur plusieurs dizaines de couches ; ce sont les fameuses autoroutes de l'information. Les changements de sortie se concentrent pour l'essentiel dans les premières couches, environ les 10 premières pour MNIST et les 30 premières pour CIFAR-100 ; les auteurs supposent que cela tient à la plus grande complexité de CIFAR-100.\n\nLes auteurs en concluent que les portes ne servent pas seulement à faciliter l'entraînement : le réseau entraîné s'en sert réellement pour choisir le chemin de l'information, et ce choix varie fortement selon l'entrée.\n\n## Conclusion\n\nHighway Networks apprend à chaque couche « quelle part transformer et quelle part transmettre directement » ; avec une initialisation qui penche vers le passage direct, même un réseau de 100 couches s'entraîne par simple SGD. Sur CIFAR-10, il atteint le niveau de FitNets sans réseau enseignant.\n\nSept mois plus tard, ResNet, de Microsoft Research, pousse le réseau à 152 couches avec des raccourcis identité sans porte et remporte l'ILSVRC 2015. Dans ses travaux connexes, l'article de ResNet cite les réseaux highway et explique ce qui les distingue : les portes highway dépendent de l'entrée et ont des paramètres, et quand une porte se ferme, la couche cesse d'apprendre un résidu ; les raccourcis identité de ResNet n'ont pas de paramètres et ne se ferment jamais, si bien que toute l'information passe ; de plus, les réseaux highway n'avaient pas encore montré de gain de précision à très grande profondeur (par exemple au-delà de 100 couches).\n\n\n> [!TIP]\n> \n> Pour l'approche de ResNet, vous pouvez consulter notre note :\n> \n> - **[[15.12] ResNet : Un réseau convolutif de 100 couches](/blog/papers/classic-cnns/resnet)**\n\n\nCette filiation a ensuite été racontée autrement. Dans son rapport technique de 2025, [Who invented deep residual learning?](https://arxiv.org/abs/2509.24732), Schmidhuber décrit ResNet comme « un Highway Net dont les portes seraient grandes ouvertes », et fait remonter l'origine des connexions résiduelles aux travaux de son laboratoire depuis 1991.\n\nAujourd'hui, pour entraîner un réseau très profond, on ne choisirait sans doute pas Highway : les raccourcis identité de ResNet n'ont ni porte ni paramètres supplémentaires, et l'on n'a pas à se demander à quelle valeur initialiser le biais d'une porte.\n\nReste que « offrir au signal un chemin sans transformation », c'est Highway qui l'a réalisé le premier sur un réseau de cent couches. Voyons maintenant comment ResNet démonte cette porte.\n","imageSizes":{"/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png":{"width":1344,"height":360},"/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png":{"width":1352,"height":724}}}
