{"notes":[{"id":"classic-cnns/regnet","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"RegNet","subtitle":"Les bonnes architectures se ressemblent-elles toutes ?","author":"Z. Yuan","paperDate":"2020-03-30","publishedOn":"2024-12-16","world":"external/regnet","paperTitle":"Designing Network Design Spaces","paperUrl":"https://arxiv.org/abs/2003.13678","bibliography":{"title":"Designing Network Design Spaces","authors":["Ilija Radosavovic","Raj Prateek Kosaraju","Ross Girshick","Kaiming He","Piotr Dollár"],"url":"https://arxiv.org/abs/2003.13678","pdfUrl":"https://arxiv.org/pdf/2003.13678v1","codeUrl":null,"preprint":{"id":"2003.13678","submittedOn":"2020-03-30","url":"https://arxiv.org/abs/2003.13678"},"publication":{"venue":"CVPR","year":2020,"kind":"conference","url":"https://openaccess.thecvf.com/content_CVPR_2020/html/Radosavovic_Designing_Network_Design_Spaces_CVPR_2020_paper.html"},"citation":"@misc{classiccnnsregnet2020,\n  title = {{Designing Network Design Spaces}},\n  author = {Ilija Radosavovic and Raj Prateek Kosaraju and Ross Girshick and Kaiming He and Piotr Dollár},\n  year = {2020},\n  eprint = {2003.13678},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2003.13678}\n}\n","citationPath":"/content/papers/citations/classic-cnns/regnet.51d4a967c43d.bib"},"thumbnail":{"src":"/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png","width":1013,"height":550},"locale":"fr","path":"/content/papers/fr/classic-cnns/regnet.b944af90d925.md","headings":[{"id":"définir-le-problème","text":"Définir le problème","depth":2},{"id":"ce-qui-manque-à-la-conception-manuelle-et-au-nas","text":"Ce qui manque à la conception manuelle et au NAS","depth":3},{"id":"comment-comparer-deux-espaces-de-conception","text":"Comment comparer deux espaces de conception","depth":3},{"id":"résoudre-le-problème","text":"Résoudre le problème","depth":2},{"id":"point-de-départ-anynet","text":"Point de départ : AnyNet","depth":3},{"id":"resserrer-pas-à-pas","text":"Resserrer pas à pas","depth":3},{"id":"la-largeur-suit-une-droite","text":"La largeur suit une droite","depth":3},{"id":"regnet","text":"RegNet","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"là-où-les-résultats-sécartent-des-pratiques-courantes","text":"Là où les résultats s'écartent des pratiques courantes","depth":3},{"id":"face-à-resnet-et-resnext","text":"Face à ResNet et ResNeXt","depth":3},{"id":"budgets-de-calcul-mobiles","text":"Budgets de calcul mobiles","depth":3},{"id":"face-à-efficientnet","text":"Face à EfficientNet","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/nasnet","relation":"referenced","topic":""},{"id":"classic-cnns/efficientnet","relation":"referenced","topic":""}]},{"id":"classic-cnns/nasnet","category":"classic-cnns","legacyPath":"classic-cnns/1707-nasnet","legacySlug":"1707-nasnet","legacyPaths":[],"title":"NASNet","subtitle":"Rechercher une architecture de réseau","author":"Z. Yuan","paperDate":"2017-07-21","publishedOn":"2024-06-26","paperTitle":"Learning Transferable Architectures for Scalable Image Recognition","paperUrl":"https://arxiv.org/abs/1707.07012","bibliography":{"title":"Learning Transferable Architectures for Scalable Image Recognition","authors":["Barret Zoph","Vijay Vasudevan","Jonathon Shlens","Quoc V. Le"],"url":"https://arxiv.org/abs/1707.07012","pdfUrl":"https://arxiv.org/pdf/1707.07012","codeUrl":null,"preprint":{"id":"1707.07012","submittedOn":"2017-07-21","url":"https://arxiv.org/abs/1707.07012"},"publication":{"venue":"CVPR","year":2018,"kind":"conference","url":"https://doi.org/10.1109/cvpr.2018.00907"},"citation":"@misc{classiccnnsnasnet2017,\n  title = {{Learning Transferable Architectures for Scalable Image Recognition}},\n  author = {Barret Zoph and Vijay Vasudevan and Jonathon Shlens and Quoc V. Le},\n  year = {2017},\n  eprint = {1707.07012},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1707.07012}\n}\n","citationPath":"/content/papers/citations/classic-cnns/nasnet.f6a561f13f90.bib"},"thumbnail":{"src":"/content/papers/assets/b2d2e9edd0aa83df25d43fcba9a942774de024dfa090f0771473452abb1ff417.jpg","width":930,"height":966},"locale":"fr","path":"/content/papers/fr/classic-cnns/nasnet.abbaa6a86bbc.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":"architecture-transférable","text":"Architecture transférable","depth":3},{"id":"structure-de-base","text":"Structure de base","depth":3},{"id":"processus-de-recherche","text":"Processus de recherche","depth":3},{"id":"module-droppath","text":"Module DropPath","depth":3},{"id":"résultat-de-la-recherche","text":"Résultat de la recherche","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"résultats-sur-cifar-10","text":"Résultats sur CIFAR-10","depth":3},{"id":"transférer-larchitecture-sur-imagenet","text":"Transférer l'architecture sur ImageNet","depth":3},{"id":"comparaison-sur-appareils-mobiles","text":"Comparaison sur appareils mobiles","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/efficientnet","relation":"next","topic":"Recherche d’architecture et mise à l’échelle efficace"}]},{"id":"classic-cnns/efficientnet","category":"classic-cnns","legacyPath":"classic-cnns/1905-efficientnet","legacySlug":"1905-efficientnet","legacyPaths":[],"title":"EfficientNet","subtitle":"Une architecture à mise à l'échelle composée","author":"Z. Yuan","paperDate":"2019-05-28","publishedOn":"2024-07-04","paperTitle":"EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks","paperUrl":"https://arxiv.org/abs/1905.11946","bibliography":{"title":"EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks","authors":["Mingxing Tan","Quoc V. Le"],"url":"https://arxiv.org/abs/1905.11946","pdfUrl":"https://arxiv.org/pdf/1905.11946","codeUrl":null,"preprint":{"id":"1905.11946","submittedOn":"2019-05-28","url":"https://arxiv.org/abs/1905.11946"},"publication":{"venue":"ICML","year":2019,"kind":"conference","url":"https://arxiv.org/abs/1905.11946"},"citation":"@misc{classiccnnsefficientnet2019,\n  title = {{EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks}},\n  author = {Mingxing Tan and Quoc V. Le},\n  year = {2019},\n  eprint = {1905.11946},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/1905.11946}\n}\n","citationPath":"/content/papers/citations/classic-cnns/efficientnet.ad7d6744b5d4.bib"},"thumbnail":{"src":"/content/papers/assets/f8202301fddceafac70e33ea34ffeb6b2255d2617c880baee08c51ce4c8a4c93.jpg","width":1596,"height":674},"locale":"fr","path":"/content/papers/fr/classic-cnns/efficientnet.90e015a470f2.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":"deux-observations","text":"Deux observations","depth":3},{"id":"mise-à-léchelle-composée","text":"Mise à l'échelle composée","depth":3},{"id":"architecture-du-modèle-de-base","text":"Architecture du modèle de base","depth":3},{"id":"architecture-des-modèles-plus-grands","text":"Architecture des modèles plus grands","depth":3},{"id":"discussion","text":"Discussion","depth":2},{"id":"importance-de-la-mise-à-léchelle-composée","text":"Importance de la mise à l'échelle composée","depth":3},{"id":"résultats-sur-imagenet","text":"Résultats sur ImageNet","depth":3},{"id":"vitesse-dinférence","text":"Vitesse d'inférence","depth":3},{"id":"courbes-paramètres-précision","text":"Courbes paramètres-précision","depth":3},{"id":"conclusion","text":"Conclusion","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/nasnet","relation":"background","topic":"Recherche d’architecture et mise à l’échelle efficace"},{"id":"classic-cnns/efficientnet-v2","relation":"next","topic":"Recherche d’architecture et mise à l’échelle efficace"}]}],"text":"Vers 2019, l'une des méthodes les plus en vogue pour concevoir un réseau convolutif est la recherche d'architecture neuronale (NAS). On définit d'abord un espace de recherche, puis on laisse un algorithme y trouver le meilleur réseau ; NASNet et EfficientNet sont nés ainsi.\n\n\n> [!TIP]\n> \n> Pour ces deux travaux, vous pouvez commencer par nos notes :\n> \n> - **[[17.07] NASNet : Rechercher une architecture de réseau](/blog/papers/classic-cnns/nasnet)**\n> - **[[19.05] EfficientNet : Une architecture à mise à l'échelle composée](/blog/papers/classic-cnns/efficientnet)**\n\n\nLes réseaux ainsi trouvés sont très performants, mais ce que nous obtenons n'est qu'un réseau, un jeu de chiffres réglé pour un budget de calcul et un matériel précis. Pourquoi a-t-il cette forme ? Comment le modifier pour un autre budget de calcul ? Le résultat de la recherche, à lui seul, ne répond pas à ces questions.\n\nIlija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He et Piotr Dollár, de Facebook AI Research, veulent procéder autrement. Au lieu de concevoir un réseau unique, ils conçoivent « l'espace de conception des réseaux », et cherchent des principes de conception dans les performances de toute une population de réseaux.\n\n## Définir le problème\n\n### Ce qui manque à la conception manuelle et au NAS\n\nSi l'on regarde LeNet, AlexNet, VGG et ResNet, ces réseaux conçus à la main n'ont pas seulement laissé des modèles, mais aussi des principes, comme utiliser la convolution, agrandir les données et le réseau, approfondir ou ajouter des résidus. Ces principes s'appliquent à de nombreuses situations nouvelles. Le problème, c'est qu'avec beaucoup d'options de conception, il devient difficile d'essayer à la main toutes les combinaisons pour trouver la meilleure.\n\nLe NAS règle la question des essais, mais il produit une instance de réseau réglée pour une configuration précise. Les auteurs veulent des réseaux simples, faciles à comprendre et généralisables à d'autres configurations, ainsi que les principes qui les sous-tendent.\n\nPour répondre à des budgets de calcul différents, l'approche courante consiste à prendre un réseau et à en mettre à l'échelle la profondeur, la largeur ou la résolution selon une règle donnée ; la mise à l'échelle composée d'EfficientNet en est un exemple. Mais on part toujours d'un seul réseau.\n\n### Comment comparer deux espaces de conception\n\nSi l'objet à concevoir est « une population de réseaux », il faut un moyen de juger de la qualité d'une population de réseaux. Les auteurs reprennent un outil proposé l'année précédente par Radosavovic et al., qui consiste à tirer au hasard $n$ modèles d'un espace de conception, à les entraîner tous, puis à regarder la distribution de leurs taux d'erreur.\n\nL'outil concret est la fonction de répartition empirique (EDF) des taux d'erreur :\n\n$$\nF(e)=\\frac{1}{n}\\sum_{i=1}^{n}\\mathbf{1}[e_i<e].\n$$\n\n$F(e)$ est simplement « la proportion de modèles dont le taux d'erreur est inférieur à $e$ ». Plus la courbe se rapproche du coin supérieur gauche, plus l'espace contient de bons modèles.\n\n[![À gauche, trois ellipses emboîtées : la plus extérieure, bleue, est A ; celle du milieu, orange, est B ; la plus intérieure, jaune, est C ; des flèches vont de A à B puis à C. À droite, trois courbes de probabilité cumulée, avec le taux d'erreur en abscisse (de 40 à 60) et la probabilité cumulée en ordonnée (de 0 à 1). La courbe bleue de A est la plus douce et la plus à droite ; la courbe orange de B est décalée vers la gauche ; la courbe jaune de C est la plus à gauche et la plus raide](/content/papers/assets/526c9907c4f475ec129b14c60e3189345920cb53e55b91dea16ee61a5c64c0b2.png)](/content/papers/assets/526c9907c4f475ec129b14c60e3189345920cb53e55b91dea16ee61a5c64c0b2.png)\n\n*Figure 1 de l'article, extraite de la [**page 1 du PDF v1**](https://arxiv.org/pdf/2003.13678v1#page=1). La conception d'espaces de conception, où chaque étape réduit l'espace A en un espace B plus simple ou meilleur, puis en C ; à droite, l'EDF des taux d'erreur des trois espaces.*\n\nLa figure de gauche montre la démarche des auteurs. On part d'un très grand espace A, et chaque nouvelle contrainte donne un espace plus petit, B, puis C. La figure de droite montre l'EDF obtenue en échantillonnant et en entraînant des modèles de chacun des trois espaces ; la courbe de C est la plus à gauche, signe que ses modèles sont, dans l'ensemble, les meilleurs.\n\nComparer des distributions entières est plus stable que de ne comparer que les meilleurs modèles trouvés dans chacun des deux espaces. Les auteurs espèrent aussi qu'un principe valable pour toute une population de modèles a plus de chances de se généraliser à d'autres configurations.\n\nÉchantillonner et entraîner des centaines de modèles pose un problème de coût. Les auteurs travaillent donc dans un régime « faible calcul, entraînement court », où chaque modèle fait environ 400 millions de multiplications-additions (400MF) et n'est entraîné que 10 époques sur ImageNet. Entraîner ainsi 100 modèles demande à peu près le même calcul qu'entraîner un seul ResNet-50 pendant 100 époques.\n\n## Résoudre le problème\n\n### Point de départ : AnyNet\n\nLes auteurs définissent d'abord un espace de conception très libre, appelé AnyNet. Un réseau s'y compose de trois parties. Le stem est une convolution $3\\times3$ de pas 2 à 32 canaux ; le head est un pooling moyen suivi d'une couche entièrement connectée ; c'est le body, au milieu, qui compte, avec 4 étages dont la résolution est divisée par deux de l'un à l'autre, chaque étage étant composé de plusieurs blocs identiques.\n\nLe bloc est le bloc résiduel en goulot d'étranglement avec convolution groupée de ResNeXt, que les auteurs appellent bloc X :\n\n[![Schéma du bloc X. (a) Version de pas 1 : l'entrée wi, ri, ri passe par une convolution 1x1 s=1 qui donne wi/bi canaux, puis par une convolution 3x3 de largeur de groupe gi, s=1, puis par une convolution 1x1 s=1 qui revient à wi canaux, avant l'addition avec le raccourci de droite. (b) Version de pas 2 : la convolution 3x3 du milieu a un pas de 2, et le raccourci porte en plus une convolution 1x1 s=2](/content/papers/assets/a529e6e4b1fdd3d828f2fabfc86390e33c5501faa9cca45a206d01dc23706bf0.png)](/content/papers/assets/a529e6e4b1fdd3d828f2fabfc86390e33c5501faa9cca45a206d01dc23706bf0.png)\n\n*Figure 4 de l'article, extraite de la [**page 4 du PDF v1**](https://arxiv.org/pdf/2003.13678v1#page=4). Le bloc X, formé d'une convolution $1\\times1$, d'une convolution groupée $3\\times3$ et d'une convolution $1\\times1$, chaque convolution étant suivie d'une BN et d'une ReLU.*\n\nChaque étage $i$ a quatre paramètres réglables :\n\n- **Nombre de blocs $d_i$**\n- **Largeur de bloc $w_i$** : le nombre de canaux de sortie\n- **Ratio de goulot d'étranglement $b_i$** : la couche du milieu a $w_i/b_i$ canaux\n- **Largeur de groupe $g_i$** : le nombre de canaux de chaque groupe de la convolution groupée $3\\times3$\n\nAvec 4 étages de 4 paramètres chacun, on obtient 16 degrés de liberté. L'échantillonnage se fait dans les plages $d_i\\le16$, $w_i\\le1024$ et multiple de 8, $b_i\\in\\{1,2,4\\}$, $g_i\\in\\{1,2,\\ldots,32\\}$, soit au total environ $10^{18}$ réseaux possibles. L'entrée est fixée à $224\\times224$.\n\nLes auteurs ne cherchent pas le meilleur réseau parmi ces $10^{18}$ ; ils ajoutent des contraintes une à une, chaque étape devant rendre l'espace plus simple et plus facile à comprendre, sans que les bons modèles se raréfient.\n\n### Resserrer pas à pas\n\nÀ chaque nouvelle contrainte, les auteurs tirent et entraînent à nouveau 500 modèles, et vérifient que l'EDF ne s'est pas dégradée :\n\n| Espace | Contrainte ajoutée | Degrés de liberté | Combinaisons | Erreur minimale / moyenne |\n| --- | --- | ---: | ---: | ---: |\n| AnyNetX$_A$ | Aucune | 16 | $\\sim1.8\\cdot10^{18}$ | 39,0 / 49,0 |\n| AnyNetX$_B$ | $b$ commun à tous les étages | 13 | $\\sim6.8\\cdot10^{16}$ | 39,0 / 49,2 |\n| AnyNetX$_C$ | $g$ commun à tous les étages | 10 | $\\sim3.2\\cdot10^{14}$ | 38,9 / 49,4 |\n| AnyNetX$_D$ | $w_{i+1}\\ge w_i$ | 10 | $\\sim1.3\\cdot10^{13}$ | 38,7 / 43,2 |\n| AnyNetX$_E$ | $d_{i+1}\\ge d_i$ | 10 | $\\sim5.5\\cdot10^{11}$ | 38,7 / 42,7 |\n| RegNetX | Linéaire quantifiée | 6 | $\\sim3.0\\cdot10^{8}$ | 38,2 / 41,0 |\n\n*Tableau : nombre de combinaisons d'après la Table 1 de l'article, taux d'erreur tirés des légendes des Figures 5, 7 et 9 ; erreur top-1 (%) sur ImageNet à 400MF, après 10 époques d'entraînement.*\n\nLes deux premières étapes imposent un même $b$ et un même $g$ à tous les étages ; on perd 6 degrés de liberté, et l'EDF ne change presque pas, ce qui montre que ces deux paramètres n'ont pas besoin d'être réglés étage par étage.\n\nLa troisième étape vient d'une observation. Les auteurs tracent quelques bons et quelques mauvais réseaux d'AnyNetX$_C$, et constatent que la largeur des bons réseaux augmente toujours au fil des étages. Avec la contrainte $w_{i+1}\\ge w_i$, l'erreur moyenne tombe d'un coup de 49,4 % à 43,2 %, sans que le meilleur modèle se dégrade. La quatrième étape, $d_{i+1}\\ge d_i$, améliore encore un peu les résultats.\n\nÀ ce stade, l'espace a été réduit d'un facteur de plus de trois millions, et les bons modèles y sont au contraire plus concentrés.\n\n### La largeur suit une droite\n\nLes auteurs tracent ensuite les 20 meilleurs modèles d'AnyNetX$_E$ sur un même graphique, avec l'indice du bloc en abscisse et la largeur du bloc en ordonnée :\n\n[![Rangée du haut, à gauche : 20 courbes grises en escalier, la largeur de chaque bloc des 20 meilleurs modèles (ordonnée en échelle logarithmique), traversées en leur milieu par une courbe noire lisse. Rangée du haut, au centre et à droite : chacune montre la largeur réelle d'un bon modèle (escalier bleu en trait plein), son ajustement linéaire (pointillés) et l'ajustement quantifié (escalier en tirets), les deux étant presque superposés. Rangée du bas, trois nuages de points : pour chaque modèle d'AnyNetXC, AnyNetXD et AnyNetXE, l'erreur d'ajustement efit face au taux d'erreur ; les bons modèles se concentrent là où efit est proche de 0, et de C à E, les points se resserrent de plus en plus vers la gauche](/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png)](/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png)\n\n*Figure 8 de l'article, extraite de la [**page 5 du PDF v1**](https://arxiv.org/pdf/2003.13678v1#page=5). La largeur des bons modèles peut être décrite par une fonction linéaire quantifiée ; les modèles dont l'erreur d'ajustement $e_\\text{fit}$ est grande ont aussi un taux d'erreur plus élevé.*\n\nSur le graphique en haut à gauche, chaque modèle a son propre escalier gris, mais la tendance générale peut se décrire par une droite très simple, $w_j=48\\cdot(j+1)$, la courbe noire (l'ordonnée étant logarithmique, elle paraît courbe).\n\nLa droite attribue à chaque bloc une largeur différente, alors que dans un vrai réseau, tous les blocs d'un même étage ont la même largeur, ce qui forme des marches d'escalier. Les auteurs transforment la droite en escalier en trois équations.\n\nOn attribue d'abord à chaque bloc une largeur continue, donnée par une droite :\n\n$$\nu_j=w_0+w_a\\cdot j,\\qquad 0\\le j<d.\n$$\n\n$w_0$ est la largeur initiale, $w_a$ la pente, et $d$ le nombre total de blocs. On introduit ensuite un paramètre $w_m$, et on écrit $u_j$ comme $w_0$ multiplié par une puissance de $w_m$ :\n\n$$\nu_j=w_0\\cdot w_m^{s_j}.\n$$\n\nEnfin, on arrondit l'exposant $s_j$ :\n\n$$\nw_j=w_0\\cdot w_m^{\\lfloor s_j\\rceil}.\n$$\n\nUne fois l'exposant arrondi à un entier, la largeur ne peut plus prendre que quelques valeurs, $w_0$, $w_0w_m$, $w_0w_m^2$, etc. ; les blocs de même largeur forment un étage, et $w_m$ est donc le rapport de largeur entre deux étages consécutifs.\n\nFaisons le calcul pour RegNetX-1.6GF. Dans torchvision, ses paramètres sont $d=18$, $w_0=80$, $w_a=34.01$, $w_m=2.25$, avec une largeur de groupe $g=24$ :\n\n```python\nimport math\n\nd, w0, wa, wm, g = 18, 80, 34.01, 2.25, 24        # RegNetX-1.6GF\n\nu = [w0 + wa * j for j in range(d)]                 # éq. (2) : une largeur continue par bloc\ns = [math.log(uj / w0) / math.log(wm) for uj in u]  # éq. (3) : conversion en exposant de w0 · wm^s\nw = [w0 * wm ** round(sj) for sj in s]              # éq. (4) : exposant arrondi, la largeur devient un escalier\nw = [round(wj / 8) * 8 for wj in w]                 # largeur arrondie à un multiple de 8\n\nfor j in (0, 1, 2, 5, 6, 15, 16, 17):\n    print(f\"bloc {j:>2} : u = {u[j]:6.1f}, s = {s[j]:4.2f} → arrondi {round(s[j])}, largeur {w[j]}\")\n\nstages = sorted(set(w))\ndepths = [w.count(x) for x in stages]\nwidths = [round(x / g) * g for x in stages]         # puis ajustement à un multiple de la largeur de groupe\nprint(\"nombre de blocs par étage :\", depths)\nprint(\"largeur de chaque étage :\", widths)\n```\n\n```text\nbloc  0 : u =   80.0, s = 0.00 → arrondi 0, largeur 80\nbloc  1 : u =  114.0, s = 0.44 → arrondi 0, largeur 80\nbloc  2 : u =  148.0, s = 0.76 → arrondi 1, largeur 176\nbloc  5 : u =  250.0, s = 1.41 → arrondi 1, largeur 176\nbloc  6 : u =  284.1, s = 1.56 → arrondi 2, largeur 408\nbloc 15 : u =  590.1, s = 2.46 → arrondi 2, largeur 408\nbloc 16 : u =  624.2, s = 2.53 → arrondi 3, largeur 912\nbloc 17 : u =  658.2, s = 2.60 → arrondi 3, largeur 912\nnombre de blocs par étage : [2, 4, 10, 2]\nlargeur de chaque étage : [72, 168, 408, 912]\n```\n\nLes largeurs des 18 blocs grimpent le long de la droite ; une fois les exposants arrondis, elles se répartissent en quatre segments, soit 2, 4, 10 et 2 blocs par étage, avec des largeurs de 72, 168, 408 et 912. Cela correspond au RegNetX-1.6GF listé dans l'article, ainsi qu'au modèle construit par torchvision. Le nombre de blocs de chaque étage n'a pas à être fixé à part, puisque la droite et l'arrondi le déterminent. Les `regnet_x_*` et `regnet_y_*` de torchvision, ainsi que les `regnetx_*` et `regnety_*` de timm, sont tous générés par ces formules ; il suffit de choisir selon le budget de calcul.\n\nLes auteurs vérifient aussi cette description en sens inverse. Ils ajustent cette droite quantifiée à chaque modèle d'AnyNetX$_C$ à AnyNetX$_E$, et calculent l'erreur d'ajustement $e_\\text{fit}$. Les nuages de points de la rangée inférieure de la Figure 8 montrent que, dans chaque espace, les meilleurs modèles ont une erreur d'ajustement proche de 0, et que de C à E, les modèles se rapprochent dans l'ensemble de plus en plus de cette structure.\n\n### RegNet\n\nPuisque les bons modèles ont tous cette forme, autant ne garder que les réseaux qui ont cette structure. Un réseau est alors déterminé par quatre paramètres, $d$, $w_0$, $w_a$ et $w_m$, auxquels s'ajoutent $b$ et $g$. L'échantillonnage se fait dans les plages $d<64$, $w_0,w_a<256$, $1.5\\le w_m\\le3$. Les auteurs appellent cet espace RegNet, parce qu'il ne contient que des réseaux réguliers (regular).\n\nLe nombre de degrés de liberté passe de 16 à 6, et la taille de l'espace diminue de près de 10 ordres de grandeur, alors que l'erreur moyenne baisse de 49,0 % à 41,0 %, et que le meilleur modèle s'améliore légèrement. Les bons modèles sont assez concentrés pour qu'en tirant environ 32 modèles au hasard, on ait de bonnes chances d'en trouver un bon.\n\nLes auteurs vérifient aussi que ces conclusions tiennent au-delà du régime faible calcul et entraînement court. Avec un budget de calcul plus élevé, un entraînement plus long, des réseaux à 5 étages ou d'autres types de blocs, le classement des trois espaces reste toujours RegNetX devant AnyNetX$_E$, lui-même devant AnyNetX$_A$.\n\n## Discussion\n\n### Là où les résultats s'écartent des pratiques courantes\n\nLes bons modèles de RegNetX étant très concentrés, les auteurs passent à 100 modèles tirés pour chaque budget de calcul, entraînés 25 époques, pour observer la tendance de chaque paramètre :\n\n[![Six graphiques en courbes, tous avec le budget de calcul en abscisse (de 0,2 à 12,8 GFLOPs) ; chacun montre en clair la plage all, en bleu la plage good, et en noir la courbe best. d : la profondeur optimale reste à peu près entre 16 et 23, le plus souvent 20 ; b : la valeur optimale est toujours 1 ; wm : la valeur optimale se situe à peu près entre 2,2 et 2,8 ; g, wa, w0 : les valeurs optimales augmentent toutes avec le budget de calcul](/content/papers/assets/88e61c9524447ce29968da46650f265df2c5f591a45aaf965adef78e49826d51.png)](/content/papers/assets/88e61c9524447ce29968da46650f265df2c5f591a45aaf965adef78e49826d51.png)\n\n*Figure 11 de l'article, extraite de la [**page 7 du PDF v1**](https://arxiv.org/pdf/2003.13678v1#page=7). Tendances des paramètres de RegNetX selon le budget de calcul ; la zone bleue est la plage qui contient le meilleur modèle avec une confiance de 95 %, et la courbe noire la valeur optimale la plus probable.*\n\nPlusieurs résultats vont à l'encontre des habitudes de l'époque :\n\n1. **La profondeur optimale est très stable.** Quel que soit le budget de calcul, les meilleurs modèles ont environ 20 blocs (environ 60 couches). L'usage courant veut qu'un budget de calcul plus grand s'accompagne d'un réseau plus profond.\n2. **Pas besoin de goulot d'étranglement.** Les meilleurs modèles ont $b=1$, et leur couche du milieu est aussi large que la sortie.\n3. **Un rapport de largeur d'environ 2,5 entre étages.** L'usage courant est de doubler la largeur à chaque étage.\n4. **Le goulot inversé et la convolution depthwise font moins bien.** Le $b<1$ courant dans les réseaux mobiles dégrade légèrement les résultats, et la convolution depthwise, avec $g=1$, fait pire encore. En annexe, les auteurs refont le test à 6,4 GFLOPs sur 100 époques, et l'écart du goulot inversé se creuse.\n5. **Une résolution fixe de $224\\times224$ est la meilleure.** C'est l'inverse de la conclusion d'EfficientNet, selon laquelle agrandir la résolution aide, et ce même à des budgets de calcul plus élevés.\n\n$g$, $w_a$ et $w_0$, eux, augmentent avec le budget de calcul. Par ailleurs, ajouter un module SE au bloc X donne l'espace RegNetY, globalement encore meilleur.\n\nLes auteurs ajoutent aussi une mesure rarement regardée, les **activations**, c'est-à-dire la taille totale des tenseurs de sortie de toutes les couches de convolution. Sur un GPU V100, le coefficient de corrélation entre le temps d'inférence et les activations est de 0,897, contre seulement 0,643 avec les FLOPs. Les GPU et les matériels de ce type sont souvent limités par la bande passante mémoire ; la taille des résultats intermédiaires prédit donc mieux la vitesse que le nombre de multiplications-additions. Chez les meilleurs modèles, les activations croissent à peu près comme la racine carrée du budget de calcul, et le nombre de paramètres linéairement.\n\nÀ partir de ces tendances, les auteurs ajoutent à RegNetX les contraintes $b=1$, $d\\le40$ et $w_m\\ge2$, et limitent le nombre de paramètres et les activations, ce qui donne un espace plus rapide et plus économe en mémoire ; c'est cette version qu'utilisent toutes les comparaisons qui suivent.\n\n### Face à ResNet et ResNeXt\n\nPour comparer les modèles finaux, les auteurs essaient au hasard 25 jeux de paramètres à chaque budget de calcul, retiennent le meilleur, puis l'entraînent 5 fois sur 100 époques. Tous les modèles, y compris les ResNet et ResNeXt comparés, utilisent les mêmes réglages d'entraînement de base, sans régularisation ni astuce d'entraînement supplémentaire en dehors du weight decay :\n\n| Modèle | GFLOPs | Paramètres | Inférence (ms) | Erreur top-1 |\n| --- | ---: | ---: | ---: | ---: |\n| ResNet-50 | 4,1 | 22,6 M | 53 | 23,2 % |\n| ResNeXt-50 | 4,2 | 25,0 M | 78 | 21,9 % |\n| **RegNetX-4.0GF** | 4,0 | 22,1 M | 69 | **21,4 %** |\n| ResNet-101 | 7,8 | 44,6 M | 90 | 21,4 % |\n| ResNeXt-101 | 8,0 | 44,2 M | 137 | 20,7 % |\n| **RegNetX-8.0GF** | 8,0 | 39,6 M | 94 | **20,7 %** |\n| ResNet-152 | 11,5 | 60,2 M | 130 | 20,9 % |\n| ResNeXt-152 | 11,7 | 60,0 M | 197 | 20,4 % |\n| **RegNetX-12GF** | 12,1 | 46,1 M | 137 | **20,3 %** |\n\n*Tableau : extrait de la Table 3(b) de l'article, les modèles de budget de calcul proche étant regroupés. Le temps d'inférence correspond au traitement de 64 images d'un coup sur un V100.*\n\nDans les trois groupes, RegNetX est le meilleur ou ex aequo avec le meilleur. Dans le groupe autour de 8 GFLOPs, RegNetX fait jeu égal avec ResNeXt-101, mais avec un temps d'inférence de 94 ms seulement, contre 137 ms pour ResNeXt-101. Ces réseaux utilisent les mêmes composants et les mêmes réglages d'entraînement, et ne diffèrent que par leur structure ; les auteurs considèrent donc que ces progrès viennent entièrement de l'espace de conception.\n\n### Budgets de calcul mobiles\n\nAutour de 600MF, RegNetX-600MF a une erreur top-1 de 25,9 %, et RegNetY-600MF de 24,5 %. Au même budget de calcul, MobileNet-V2 rapporte 25,3 %, ShuffleNet V2 25,1 %, et les réseaux trouvés par NAS, NASNet-A et AmoebaNet-C, 26,0 % et 24,3 %.\n\nLes chiffres de ces concurrents sont ceux de leurs articles respectifs, qui utilisent en général des entraînements plus longs et diverses techniques d'augmentation ; RegNet n'utilise que les réglages de base sur 100 époques, et ses résultats restent assez proches. Les auteurs espèrent que cette famille de modèles simples pourra servir de référence aux travaux futurs.\n\n### Face à EfficientNet\n\nReste EfficientNet, le plus fort de l'époque. Les auteurs reprennent l'architecture d'origine d'EfficientNet, mais la réentraînent avec les mêmes réglages que RegNet, en ne réglant spécifiquement pour elle que le taux d'apprentissage et le weight decay :\n\n| Modèle | GFLOPs | Paramètres | Activations | Inférence (ms) | Entraînement (heures) | Erreur top-1 |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: |\n| EfficientNet-B0 | 0,4 | 5,3 M | 6,7 M | 34 | 11,7 | **24,9 %** |\n| RegNetY-400MF | 0,4 | 4,3 M | 3,9 M | 19 | 5,1 | 25,9 % |\n| EfficientNet-B3 | 1,8 | 12,0 M | 23,8 M | 114 | 32,1 | 22,5 % |\n| RegNetY-1.6GF | 1,6 | 11,2 M | 8,0 M | 39 | 10,1 | **22,0 %** |\n| EfficientNet-B5 | 9,9 | 30,0 M | 98,9 M | 504 | 135,1 | 21,5 % |\n| RegNetY-8.0GF | 8,0 | 39,2 M | 18,0 M | 113 | 28,1 | **20,1 %** |\n\n*Tableau : trois groupes extraits de la Table 4 de l'article. Les deux familles utilisent les réglages d'entraînement de base, sur 100 époques et avec le seul weight decay ; le temps d'inférence est mesuré comme dans le tableau précédent.*\n\nÀ très faible budget de calcul, EfficientNet fait mieux ; quand le budget augmente, RegNetY prend la tête. L'écart de vitesse est encore plus net, puisque EfficientNet-B5 met 504 ms par lot en inférence, contre seulement 113 ms pour RegNetY-8.0GF (le temps que B5 vienne à bout d'un lot, RegNetY en a déjà bouclé quatre), avec en prime une erreur plus basse.\n\nCet écart de vitesse tient aux activations évoquées plus haut. EfficientNet agrandit à la fois la résolution et la profondeur, si bien que ses activations croissent à peu près linéairement avec le budget de calcul, et B5 en compte 98,9 M ; celles de RegNet croissent comme la racine carrée, et RegNetY-8.0GF n'en a que 18,0 M.\n\nCe tableau demande de prêter attention aux réglages d'entraînement. L'article original d'EfficientNet utilise un entraînement plus long et des techniques d'augmentation comme AutoAugment, et rapporte des taux d'erreur bien plus bas, par exemple 16,7 % pour B5. Les expériences des auteurs montrent aussi que les seuls réglages d'entraînement peuvent faire varier l'erreur d'EfficientNet-B0 d'environ 2 points de pourcentage. Ce tableau compare donc « quelle architecture est la meilleure à conditions d'entraînement égales », et non les meilleurs résultats que chacune peut atteindre.\n\n## Conclusion\n\nLes bonnes architectures se ressemblent-elles toutes ? Du moins dans l'espace de conception de cet article, la réponse est oui. Après avoir resserré pas à pas un espace de $10^{18}$ réseaux, les bons modèles qui restent ont tous une largeur qui suit la même droite quantifiée, une profondeur d'environ 20 blocs, aucun goulot d'étranglement, et une largeur multipliée par environ 2,5 d'un étage à l'autre.\n\nCes régularités ont été trouvées avec un bloc X fixé, à faible budget de calcul et avec un entraînement court ; les auteurs reconnaissent aussi qu'en mettant davantage d'options dans l'espace de conception, comme les opérateurs, on pourrait obtenir une réponse différente.\n\nPour tracer cette droite, les auteurs ont entraîné plusieurs milliers de modèles, rien que pour comparer des espaces de conception. La démarche n'a rien de bon marché, mais elle aboutit à un ensemble de règles que l'on sait justifier, bien plus parlant qu'un réseau livré par le NAS avec un « c'est comme ça, ne cherchez pas ».\n","imageSizes":{"/content/papers/assets/526c9907c4f475ec129b14c60e3189345920cb53e55b91dea16ee61a5c64c0b2.png":{"width":1013,"height":387},"/content/papers/assets/a529e6e4b1fdd3d828f2fabfc86390e33c5501faa9cca45a206d01dc23706bf0.png":{"width":863,"height":467},"/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png":{"width":1013,"height":550},"/content/papers/assets/88e61c9524447ce29968da46650f265df2c5f591a45aaf965adef78e49826d51.png":{"width":1004,"height":409}}}
