{"notes":[{"id":"classic-cnns/regnet","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"RegNet","subtitle":"良いアーキテクチャはどれも似ている？","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":"ja","path":"/content/papers/ja/classic-cnns/regnet.3066477ac88b.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"手作業の設計にもnasにも欠けているもの","text":"手作業の設計にもNASにも欠けているもの","depth":3},{"id":"二つの設計空間をどう比べるか","text":"二つの設計空間をどう比べるか","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"出発点anynet","text":"出発点：AnyNet","depth":3},{"id":"一歩ずつ絞り込む","text":"一歩ずつ絞り込む","depth":3},{"id":"幅は一本の斜めの直線","text":"幅は一本の斜めの直線","depth":3},{"id":"regnet","text":"RegNet","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"よくあるやり方と違うところ","text":"よくあるやり方と違うところ","depth":3},{"id":"resnetresnextと比べる","text":"ResNet、ResNeXtと比べる","depth":3},{"id":"モバイル向けの計算量","text":"モバイル向けの計算量","depth":3},{"id":"efficientnetと比べる","text":"EfficientNetと比べる","depth":3},{"id":"結論","text":"結論","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":"ネットワークアーキテクチャの探索","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":"ja","path":"/content/papers/ja/classic-cnns/nasnet.1b9e7b57e189.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"解決策","text":"解決策","depth":2},{"id":"転送可能なアーキテクチャ","text":"転送可能なアーキテクチャ","depth":3},{"id":"基本構造","text":"基本構造","depth":3},{"id":"探索プロセス","text":"探索プロセス","depth":3},{"id":"droppath-モジュール","text":"DropPath モジュール","depth":3},{"id":"探索実験結果","text":"探索実験結果","depth":3},{"id":"討論","text":"討論","depth":2},{"id":"cifar-10-での結果","text":"CIFAR-10 での結果","depth":3},{"id":"imagenet-へのアーキテクチャの転送","text":"ImageNet へのアーキテクチャの転送","depth":3},{"id":"モバイルデバイスでの評価","text":"モバイルデバイスでの評価","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/efficientnet","relation":"next","topic":"アーキテクチャ探索と効率的な拡大"}]},{"id":"classic-cnns/efficientnet","category":"classic-cnns","legacyPath":"classic-cnns/1905-efficientnet","legacySlug":"1905-efficientnet","legacyPaths":[],"title":"EfficientNet","subtitle":"結合スケーリングアーキテクチャ","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":"ja","path":"/content/papers/ja/classic-cnns/efficientnet.3498948275ea.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"2-つの観察","text":"2 つの観察","depth":3},{"id":"結合スケーリング","text":"結合スケーリング","depth":3},{"id":"モデルの基礎アーキテクチャ","text":"モデルの基礎アーキテクチャ","depth":3},{"id":"モデル拡張アーキテクチャ","text":"モデル拡張アーキテクチャ","depth":3},{"id":"討論","text":"討論","depth":2},{"id":"結合スケーリングの重要性","text":"結合スケーリングの重要性","depth":3},{"id":"imagenet-上の結果","text":"ImageNet 上の結果","depth":3},{"id":"推論速度","text":"推論速度","depth":3},{"id":"パラメータ-精度曲線","text":"パラメータ-精度曲線","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/nasnet","relation":"background","topic":"アーキテクチャ探索と効率的な拡大"},{"id":"classic-cnns/efficientnet-v2","relation":"next","topic":"アーキテクチャ探索と効率的な拡大"}]}],"text":"2019年前後、畳み込みネットワークを設計する方法として最も注目されていたものの一つが、ニューラルアーキテクチャ探索（NAS）です。まず探索空間を決め、その中からアルゴリズムに最良のネットワークを探させます。NASNetもEfficientNetも、こうして生まれました。\n\n\n> [!TIP]\n> \n> この2本は、先に私たちのノートで読めます。\n> \n> - **[[17.07] NASNet：ネットワークアーキテクチャの探索](/blog/papers/classic-cnns/nasnet)**\n> - **[[19.05] EfficientNet：結合スケーリングアーキテクチャ](/blog/papers/classic-cnns/efficientnet)**\n\n\n探索で見つかったネットワークは強力ですが、私たちが手にするのは一つのネットワーク、つまり特定の計算量、特定のハードウェア向けに調整された数字の組だけです。なぜこういう形なのか。計算量を変えたいときはどう直せばいいのか。探索結果そのものは答えてくれません。\n\nFacebook AI ResearchのIlija Radosavovic、Raj Prateek Kosaraju、Ross Girshick、Kaiming He、Piotr Dollárは、別のやり方を試そうとしました。単一のネットワークを設計するのではなく、「ネットワークの設計空間」を設計し、ネットワークの大きな集団の性能から設計原則を見つけ出すのです。\n\n## 問題の定義\n\n### 手作業の設計にもNASにも欠けているもの\n\nLeNet、AlexNet、VGG、ResNetを振り返ると、こうした手作業で設計されたネットワークが残したのはモデルだけではありません。畳み込みを使う、データとネットワークを大きくする、深くする、残差を加える、といった原則も残しました。これらの原則は、多くの新しい状況に応用できます。問題は、設計の選択肢が増えると、人手で最良の組み合わせを一つずつ試していくのが難しくなることです。\n\nNASは「試す」問題を解決しましたが、その産物は特定の設定に合わせて調整された一つのネットワークの実例です。著者らが求めていたのは、単純でわかりやすく、さまざまな設定に一般化できるネットワークと、その背後にある原則でした。\n\n計算量の異なる要求に対しては、一つのネットワークを何らかの規則に従って深さ、幅、解像度の面で拡大縮小するのがよくあるやり方で、EfficientNetの複合スケーリングがその一例です。ただ、これも一つのネットワークから出発していることに変わりはありません。\n\n### 二つの設計空間をどう比べるか\n\n設計するのが「ネットワークの集団」なら、集団どうしの良し悪しを比べる方法が必要です。著者らは、Radosavovicらが前年に提案した道具をそのまま使います。設計空間から$n$個のモデルをランダムにサンプリングし、すべて学習させて、誤り率の分布を見るのです。\n\n具体的な道具は、誤り率の経験分布関数（EDF）です。\n\n$$\nF(e)=\\frac{1}{n}\\sum_{i=1}^{n}\\mathbf{1}[e_i<e].\n$$\n\n$F(e)$は「誤り率が$e$未満のモデルが占める割合」です。曲線が左上に寄るほど、その空間には良いモデルが多いことになります。\n\n[![左は入れ子になった3つの楕円で、最も外側の青がA、中間のオレンジがB、最も内側の黄色がCで、矢印がAからB、さらにCを指している。右は3本の累積確率曲線で、横軸は誤り率（40〜60）、縦軸は累積確率（0〜1）。青のAが最もなだらかで右寄り、オレンジのBは左へ移り、黄色のCが最も左寄りで最も急](/content/papers/assets/526c9907c4f475ec129b14c60e3189345920cb53e55b91dea16ee61a5c64c0b2.png)](/content/papers/assets/526c9907c4f475ec129b14c60e3189345920cb53e55b91dea16ee61a5c64c0b2.png)\n\n*原論文Figure 1。[**v1 PDFの1ページ**](https://arxiv.org/pdf/2003.13678v1#page=1)から抜粋。設計空間の設計です。各ステップで空間Aをより単純な、またはより良いBに絞り込み、さらにCへと進みます。右は三者の誤り率のEDFです。*\n\n左図は著者らの手順です。とても大きな空間Aから始め、制約を1つ加えるたびに、より小さなB、さらにCが得られます。右図は三つの空間からそれぞれサンプリングして学習させた後のEDFで、Cの曲線が最も左にあり、その中のモデルが全体として最も良いことを示しています。\n\n分布全体を比べるほうが、二つの空間からそれぞれ探し出した最良のモデルだけを比べるより安定しています。著者らはまた、モデルの集団全体で成り立つ原則なら、ほかの設定にも一般化できる見込みが高いと期待しています。\n\n何百ものモデルをサンプリングして学習させるとなると、コストが問題になります。著者らは「低計算量、短期学習」の設定で設計を行います。各モデルの計算量は約4億回の積和（400MF）で、ImageNetで10エポックだけ学習させます。こうすると、100個のモデルを学習させる計算量は、ResNet-50を1つ100エポック学習させるのとほぼ同じです。\n\n## 問題の解決\n\n### 出発点：AnyNet\n\n著者らはまず、とても自由な設計空間を定め、AnyNetと呼びます。ネットワークは三つの部分からなります。stemはストライド2、32チャネルの$3\\times3$畳み込み1層、headは平均プーリングと全結合層で、中間のbodyが本題です。bodyは4つのステージに分かれ、解像度は順に半分になり、各ステージは同じブロックをいくつか並べたものです。\n\nブロックには、ResNeXtのようなグループ畳み込み付きの残差ボトルネックを使い、著者らはこれをXブロックと呼びます。\n\n[![Xブロックの模式図。(a)ストライド1の版：入力wi, ri, riが1x1 s=1の畳み込みでwi/biチャネルになり、続いて3x3、グループ幅gi、s=1の畳み込み、さらに1x1 s=1の畳み込みでwiチャネルに戻り、最後に右側のショートカットと加算される。(b)ストライド2の版：中央の3x3畳み込みのストライドが2で、ショートカット上に1x1 s=2の畳み込みが加わる](/content/papers/assets/a529e6e4b1fdd3d828f2fabfc86390e33c5501faa9cca45a206d01dc23706bf0.png)](/content/papers/assets/a529e6e4b1fdd3d828f2fabfc86390e33c5501faa9cca45a206d01dc23706bf0.png)\n\n*原論文Figure 4。[**v1 PDFの4ページ**](https://arxiv.org/pdf/2003.13678v1#page=4)から抜粋。Xブロックは$1\\times1$畳み込み、$3\\times3$グループ畳み込み、$1\\times1$畳み込みからなり、各畳み込みの後にBNとReLUが続きます。*\n\n各ステージ$i$には、調整できるパラメータが4つあります。\n\n- **ブロック数$d_i$**\n- **ブロック幅$w_i$**：出力のチャネル数\n- **ボトルネック比$b_i$**：中央の層のチャネル数は$w_i/b_i$\n- **グループ幅$g_i$**：$3\\times3$グループ畳み込みの各グループのチャネル数\n\n4ステージでそれぞれ4パラメータ、合わせて16の自由度です。サンプリングの範囲は$d_i\\le16$、$w_i\\le1024$かつ8の倍数、$b_i\\in\\{1,2,4\\}$、$g_i\\in\\{1,2,\\ldots,32\\}$で、組み合わせるとおよそ$10^{18}$通りのネットワークになります。入力は$224\\times224$に固定します。\n\n著者らは、この$10^{18}$通りのネットワークから最良の一つを探すのではなく、制約を一歩ずつ加えていきます。どのステップでも、空間をより単純でわかりやすくすると同時に、良いモデルを減らしてはいけません。\n\n### 一歩ずつ絞り込む\n\n著者らは制約を1つ加えるたびに、500個のモデルをサンプリングし直して学習させ、EDFが悪くなっていないかを確かめます。\n\n| 空間 | 追加した制約 | 自由度 | 組み合わせ数 | 最低／平均誤り率 |\n| --- | --- | ---: | ---: | ---: |\n| AnyNetX$_A$ | なし | 16 | $\\sim1.8\\cdot10^{18}$ | 39.0 / 49.0 |\n| AnyNetX$_B$ | すべてのステージで$b$を共有 | 13 | $\\sim6.8\\cdot10^{16}$ | 39.0 / 49.2 |\n| AnyNetX$_C$ | すべてのステージで$g$を共有 | 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 | 量子化線形 | 6 | $\\sim3.0\\cdot10^{8}$ | 38.2 / 41.0 |\n\n*表：組み合わせ数は原論文Table 1をもとに整理し、誤り率はFigure 5、7、9の凡例から取りました。400MF、10エポック学習時のImageNet top-1誤り率（%）です。*\n\n最初の2ステップでは、すべてのステージが同じ$b$と$g$を共有するようにしました。自由度は6減りましたが、EDFはほとんど変わりません。つまり、この二つのパラメータはステージごとに別々に調整する必要がないということです。\n\n3ステップ目は観察から来ています。著者らがAnyNetX$_C$の中から良いネットワークと悪いネットワークをいくつかずつ選んで描いてみると、良いネットワークはどれも後ろへ行くほど幅が広くなっていました。$w_{i+1}\\ge w_i$という制約を加えると、平均誤り率は49.4%から一気に43.2%に下がり、最良のモデルも悪くなりませんでした。4ステップ目の$d_{i+1}\\ge d_i$でも、結果はさらに少し良くなります。\n\nここまでで空間は300万分の1以下に縮みましたが、良いモデルはむしろ集中しています。\n\n### 幅は一本の斜めの直線\n\n続いて著者らは、AnyNetX$_E$の中で最も良い20個のモデルを1枚の図に描きました。横軸はブロックの番号、縦軸はブロックの幅です。\n\n[![上段左：20本の灰色の階段状の曲線が、最も良い20個のモデルのブロックごとの幅（縦軸は対数目盛）を表し、1本の黒い滑らかな曲線がそれらの中央を通っている。上段中央と右：それぞれ良いモデル1つの実際の幅（青い実線の階段）、線形フィット（点線）、量子化したフィット（破線の階段）で、両者はほとんど重なっている。下段の3つの散布図：AnyNetXC、AnyNetXD、AnyNetXEの各モデルのフィッティング誤差efitと誤り率の関係で、良いモデルはどれもefitが0に近いところに集まり、CからEへ進むにつれて点がより左に集中していく](/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png)](/content/papers/assets/477f84998189b88eda3ae1c093bfad949ef34cf53e00368019c348b971c3a63d.png)\n\n*原論文Figure 8。[**v1 PDFの5ページ**](https://arxiv.org/pdf/2003.13678v1#page=5)から抜粋。良いモデルの幅は、量子化された線形関数で表せます。フィッティング誤差$e_\\text{fit}$が大きいモデルは、誤り率も高めです。*\n\n左上の図では、モデルごとに灰色の階段の形はまちまちですが、全体の傾向はごく単純な直線$w_j=48\\cdot(j+1)$、つまり黒い線で表せます（縦軸が対数目盛なので曲がって見えます）。\n\n直線は各ブロックに異なる幅を与えますが、実際のネットワークでは同じステージの幅は等しく、一段ずつの階段になっています。著者らは三つの式で直線を階段に変えます。\n\nまず直線で、各ブロックに連続的な幅を与えます。\n\n$$\nu_j=w_0+w_a\\cdot j,\\qquad 0\\le j<d.\n$$\n\n$w_0$は初期の幅、$w_a$は傾き、$d$はブロックの総数です。次にパラメータ$w_m$を導入し、$u_j$を$w_0$に$w_m$の何乗かを掛けた形に書きます。\n\n$$\nu_j=w_0\\cdot w_m^{s_j}.\n$$\n\n最後に指数$s_j$を四捨五入します。\n\n$$\nw_j=w_0\\cdot w_m^{\\lfloor s_j\\rceil}.\n$$\n\n指数を整数にすると、幅は$w_0$、$w_0w_m$、$w_0w_m^2$といった値だけになり、同じ幅のブロックがひとつのステージになります。したがって$w_m$は、隣り合うステージ間の幅の倍率です。\n\nRegNetX-1.6GFで実際に計算してみましょう。torchvisionでのパラメータは$d=18$、$w_0=80$、$w_a=34.01$、$w_m=2.25$、グループ幅$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)]                 # 式(2)：ブロックごとに連続的な幅を1つ\ns = [math.log(uj / w0) / math.log(wm) for uj in u]  # 式(3)：w0 · wm^s の指数に換算\nw = [w0 * wm ** round(sj) for sj in s]              # 式(4)：指数を四捨五入すると、幅が階段になる\nw = [round(wj / 8) * 8 for wj in w]                 # 幅を8の倍数にする\n\nfor j in (0, 1, 2, 5, 6, 15, 16, 17):\n    print(f\"ブロック{j:>2}：u = {u[j]:6.1f}、s = {s[j]:4.2f} → 丸めると{round(s[j])}、幅{w[j]}\")\n\nstages = sorted(set(w))\ndepths = [w.count(x) for x in stages]\nwidths = [round(x / g) * g for x in stages]         # さらにgroup widthの倍数に調整\nprint(\"各ステージのブロック数：\", depths)\nprint(\"各ステージの幅：\", widths)\n```\n\n```text\nブロック 0：u =   80.0、s = 0.00 → 丸めると0、幅80\nブロック 1：u =  114.0、s = 0.44 → 丸めると0、幅80\nブロック 2：u =  148.0、s = 0.76 → 丸めると1、幅176\nブロック 5：u =  250.0、s = 1.41 → 丸めると1、幅176\nブロック 6：u =  284.1、s = 1.56 → 丸めると2、幅408\nブロック15：u =  590.1、s = 2.46 → 丸めると2、幅408\nブロック16：u =  624.2、s = 2.53 → 丸めると3、幅912\nブロック17：u =  658.2、s = 2.60 → 丸めると3、幅912\n各ステージのブロック数： [2, 4, 10, 2]\n各ステージの幅： [72, 168, 408, 912]\n```\n\n18個のブロックの幅は直線に沿って上がっていき、指数を整数に丸めると4つの段に分かれて、各ステージのブロック数は2、4、10、2、幅は72、168、408、912になります。これは論文に載っているRegNetX-1.6GFと一致し、torchvisionで組んだモデルとも一致します。ステージのブロック数を別に指定する必要はなく、直線と丸めだけで決まります。torchvisionの`regnet_x_*`、`regnet_y_*`も、timmの`regnetx_*`、`regnety_*`も、この式で生成されているので、計算量に応じて選べば十分です。\n\n著者らはこの記述を逆向きにも検証しました。AnyNetX$_C$からAnyNetX$_E$までの各モデルにこの量子化した直線を当てはめ、フィッティング誤差$e_\\text{fit}$を計算したのです。Figure 8下段の散布図からは、どの空間でも最良のモデルはフィッティング誤差が0に近いこと、しかもCからEへ進むにつれて、モデル全体がこの構造にどんどん近づいていくことがわかります。\n\n### RegNet\n\n良いモデルがどれもこういう形をしているなら、いっそこの構造のネットワークだけを残せばよいことになります。1つのネットワークは$d$、$w_0$、$w_a$、$w_m$の4つのパラメータと、$b$、$g$で決まります。サンプリングの範囲は$d<64$、$w_0,w_a<256$、$1.5\\le w_m\\le3$です。著者らはこの空間をRegNetと呼んでいます。規則的な（regular）ネットワークだけを含む、という意味です。\n\n自由度は16から6に減り、空間の大きさは10桁近く小さくなりましたが、平均誤り率は49.0%から41.0%に下がり、最良のモデルもわずかに良くなりました。良いモデルが十分に集中しているので、32個ほどのモデルをランダムにサンプリングすれば、良いものに当たる可能性が高くなります。\n\n著者らは、これらの結論が低計算量・短期学習以外の設定でも成り立つことも確かめています。より高い計算量、より長い学習、5ステージのネットワーク、あるいはほかのブロックの種類に替えても、三つの空間の順位は常にRegNetXがAnyNetX$_E$より上、AnyNetX$_E$がAnyNetX$_A$より上でした。\n\n## 考察\n\n### よくあるやり方と違うところ\n\nRegNetXの良いモデルはとても集中しているので、著者らは次に、計算量ごとに100個ずつモデルをサンプリングして25エポック学習させる方法に切り替え、各パラメータの傾向を調べました。\n\n[![6枚の折れ線グラフで、横軸はどれも計算量（0.2〜12.8 GFLOPs）。各図には薄い色のallの範囲、青いgoodの範囲、黒いbestの線がある。d：最適な深さはおよそ16〜23のあいだにとどまり、多くは20。b：最適値は常に1。wm：最適値はおよそ2.2〜2.8のあいだ。g、wa、w0：最適値はどれも計算量が増えるにつれて大きくなる](/content/papers/assets/88e61c9524447ce29968da46650f265df2c5f591a45aaf965adef78e49826d51.png)](/content/papers/assets/88e61c9524447ce29968da46650f265df2c5f591a45aaf965adef78e49826d51.png)\n\n*原論文Figure 11。[**v1 PDFの7ページ**](https://arxiv.org/pdf/2003.13678v1#page=7)から抜粋。RegNetXの各パラメータの、計算量ごとの傾向です。青い領域は95%の信頼度で最良のモデルを含む範囲、黒い線は最も可能性の高い最良値です。*\n\n当時の習慣と違う結果がいくつかあります。\n\n1. **最適な深さはとても安定している**。計算量にかかわらず、最良のモデルはおよそ20ブロック（約60層）です。一般的なやり方では、計算量が大きいほどネットワークを深くします。\n2. **ボトルネックは要らない**。最良のモデルは$b=1$で、中央の層の幅は出力と同じです。\n3. **ステージ間の幅の倍率は約2.5**。よくあるやり方は、ステージごとに2倍にすることです。\n4. **inverted bottleneckもdepthwise畳み込みも劣る**。モバイル向けネットワークでよく使われる$b<1$は結果をわずかに悪くし、$g=1$のdepthwise畳み込みはさらに悪くなります。著者らは付録で6.4GF、100エポックの設定で測り直しており、inverted bottleneckとの差はさらに大きくなっています。\n5. **解像度は$224\\times224$固定が最も良い**。これはEfficientNetの「解像度を上げると効果がある」という結論とは逆で、計算量が高めでも同じです。\n\n$g$、$w_a$、$w_0$は計算量が増えるにつれて大きくなります。さらに、XブロックにSEモジュールを加えたRegNetY空間は、全体としてさらに良くなります。\n\n著者らはもう一つ、普段あまり注目されない指標、**activations**を加えています。すべての畳み込み層の出力テンソルの総サイズのことです。V100 GPUでは、推論時間とactivationsの相関係数は0.897で、FLOPsとの相関係数は0.643しかありません。GPUのようなハードウェアはメモリ帯域で頭打ちになることが多いので、中間結果がどれだけ大きいかのほうが、積和の回数より速度をよく予測できます。最良のモデルでは、activationsはおよそ計算量の平方根に比例して増え、パラメータ数は線形に増えます。\n\nこれらの傾向にもとづき、著者らはRegNetXにさらに$b=1$、$d\\le40$、$w_m\\ge2$を加え、パラメータ数とactivationsも制限して、より速く、メモリも少なくて済む空間を作りました。以降の比較はすべてこの版を使っています。\n\n### ResNet、ResNeXtと比べる\n\n最終的なモデルを比べるときは、各計算量で25組のパラメータをランダムに試し、最良のものを選んで、100エポックの学習を5回行います。比較対象のResNetやResNeXtも含め、すべてのモデルは同じ基本の学習設定を使い、weight decay以外には正則化も学習の工夫も加えていません。\n\n| モデル | GFLOPs | パラメータ | 推論（ms） | top-1誤り率 |\n| --- | ---: | ---: | ---: | ---: |\n| ResNet-50 | 4.1 | 22.6M | 53 | 23.2% |\n| ResNeXt-50 | 4.2 | 25.0M | 78 | 21.9% |\n| **RegNetX-4.0GF** | 4.0 | 22.1M | 69 | **21.4%** |\n| ResNet-101 | 7.8 | 44.6M | 90 | 21.4% |\n| ResNeXt-101 | 8.0 | 44.2M | 137 | 20.7% |\n| **RegNetX-8.0GF** | 8.0 | 39.6M | 94 | **20.7%** |\n| ResNet-152 | 11.5 | 60.2M | 130 | 20.9% |\n| ResNeXt-152 | 11.7 | 60.0M | 197 | 20.4% |\n| **RegNetX-12GF** | 12.1 | 46.1M | 137 | **20.3%** |\n\n*表：原論文Table 3(b)から抜粋。計算量の近いものを1組にしています。推論時間はV100で64枚の画像を一度に処理した時間です。*\n\n3組とも、RegNetXが最良か、最良に並んでいます。8GFの組では、RegNetXとResNeXt-101は互角ですが、推論時間は94 msで済み、ResNeXt-101は137 msかかります。これらのネットワークは同じ部品と学習設定を使っていて、違うのは構造だけです。そのため著者らは、これらの改善はすべて設計空間から来ていると考えています。\n\n### モバイル向けの計算量\n\n600MF前後では、RegNetX-600MFのtop-1誤り率は25.9%、RegNetY-600MFは24.5%です。同じ計算量で、MobileNet-V2が報告しているのは25.3%、ShuffleNet V2は25.1%、NASで見つかったNASNet-Aは26.0%、AmoebaNet-Cは24.3%です。\n\nこれらの相手の数字はそれぞれの論文が報告したもので、通常はより長い学習とさまざまな拡張テクニックを使っています。RegNetは100エポックの基本設定だけですが、それでもかなり近い結果です。著者らは、この単純なモデル群が今後の研究のベースラインになることを期待しています。\n\n### EfficientNetと比べる\n\n最後は当時最強だったEfficientNetです。著者らはEfficientNetの元のアーキテクチャを使い、RegNetと同じ学習設定で学習し直しました。EfficientNetについては、学習率とweight decayだけを別途調整しています。\n\n| モデル | GFLOPs | パラメータ | activations | 推論（ms） | 学習（時間） | top-1誤り率 |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: |\n| EfficientNet-B0 | 0.4 | 5.3M | 6.7M | 34 | 11.7 | **24.9%** |\n| RegNetY-400MF | 0.4 | 4.3M | 3.9M | 19 | 5.1 | 25.9% |\n| EfficientNet-B3 | 1.8 | 12.0M | 23.8M | 114 | 32.1 | 22.5% |\n| RegNetY-1.6GF | 1.6 | 11.2M | 8.0M | 39 | 10.1 | **22.0%** |\n| EfficientNet-B5 | 9.9 | 30.0M | 98.9M | 504 | 135.1 | 21.5% |\n| RegNetY-8.0GF | 8.0 | 39.2M | 18.0M | 113 | 28.1 | **20.1%** |\n\n*表：原論文Table 4から3組を抜粋。どちらも100エポック、weight decayだけの基本の学習設定です。推論時間の測り方は前の表と同じです。*\n\n計算量がとても低いところではEfficientNetが良く、計算量が上がるとRegNetYがリードし始めます。速度の差はさらに目立ち、EfficientNet-B5は推論1バッチに504 msかかるのに、RegNetY-8.0GFは113 msで済み（B5が1バッチを終えるころには、こちらはもう4バッチ走り終えています）、しかも誤り率はより低くなっています。\n\n速度の差は、先ほどのactivationsと関係しています。EfficientNetは解像度と深さを同時に大きくするので、activationsはおよそ計算量に比例して増え、B5のactivationsは98.9Mです。RegNetは平方根で増えるので、8.0GFでも18.0Mしかありません。\n\nこの表を読むときは、学習設定に注意が必要です。EfficientNetの元の論文はより長い学習やAutoAugmentなどの拡張テクニックを使っていて、報告している誤り率はずっと低く、たとえばB5は16.7%です。著者ら自身の実験でも、学習設定だけでEfficientNet-B0の誤り率が2ポイントほど変わることが示されています。したがってこの表が比べているのは「同じ学習条件のもとで、どちらのアーキテクチャが良いか」であり、両者がそれぞれ出せる最高の成績ではありません。\n\n## 結論\n\n良いアーキテクチャはどれも似ているのでしょうか？少なくともこの論文の設計空間の中では、答えは「はい」です。$10^{18}$通りのネットワークから絞り込んでいった結果、残った良いモデルは、幅がどれも同じ量子化された直線の上に乗り、深さはおよそ20ブロック、ボトルネックは使わず、ステージ間の幅は2.5倍前後で増えていきます。\n\nこれらの規則性は、固定したXブロック、低計算量、短期学習という条件のもとで見つかったものです。著者らも、演算子などより多くの選択肢を設計空間に入れれば、違う答えが得られるかもしれないと認めています。\n\nこの直線を描くために、著者らは設計空間を比べるだけで何千ものモデルを学習させました。安上がりなやり方ではありませんが、その代わりに筋道の通った規則が得られました。NASが「こうなっています、理由は聞かないでください」というネットワークを渡してくるのに比べれば、ずっとわかりやすいものです。\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}}}
