{"notes":[{"id":"classic-cnns/highway-networks","category":"classic-cnns","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Highway Networks","subtitle":"残差前夜","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":"ja","path":"/content/papers/ja/classic-cnns/highway-networks.d93a72dffcb2.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"ゲートを2つ加える","text":"ゲートを2つ加える","depth":3},{"id":"最初は素通りに寄せておく","text":"最初は「素通り」に寄せておく","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"深いほど学習しやすいのか","text":"深いほど学習しやすいのか？","depth":3},{"id":"学習しやすいとして正解率は","text":"学習しやすいとして、正解率は？","depth":3},{"id":"ゲートは何を学んだのか","text":"ゲートは何を学んだのか？","depth":3},{"id":"結論","text":"結論","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":"畳み込みネットワーク 100 層","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":"ja","path":"/content/papers/ja/classic-cnns/resnet.c2822db52f83.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題解決","text":"問題解決","depth":2},{"id":"残差とは","text":"残差とは？","depth":3},{"id":"残差学習","text":"残差学習","depth":3},{"id":"残差モジュール","text":"残差モジュール","depth":3},{"id":"ネットワークアーキテクチャ","text":"ネットワークアーキテクチャ","depth":3},{"id":"構成と計算量","text":"構成と計算量","depth":3},{"id":"討論","text":"討論","depth":2},{"id":"resnet-18-vs-resnet-34","text":"ResNet-18 vs ResNet-34","depth":3},{"id":"より深いボトルネックアーキテクチャ","text":"より深いボトルネックアーキテクチャ","depth":3},{"id":"imagenet-でのパフォーマンス","text":"ImageNet でのパフォーマンス","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"classic-cnns/vgg","relation":"background","topic":"深い畳み込みネットワークの学習"},{"id":"classic-cnns/densenet","relation":"next","topic":"深い畳み込みネットワークの学習"}]}],"text":"2015年には、深さの利点はもう誰もがよく知っていました。著者らは序論でImageNetの例を挙げています。top-5正解率は、AlexNetの約84%から、より深いネットワークとより小さな受容野によって、数年で約95%まで上がりました。\n\n厄介なのは、ネットワークが深くなると学習が難しくなることです。\n\n深いネットワークを学習させるため、当時はいくつもの方法が考えられていました。信号の分散が安定するような初期化を設計する。浅いネットワークを先に学習させ、少しずつ深くしていく。中間層に補助の損失関数を付ける。どれも効果はありましたが、どれも深さをどう乗り切るかという工夫でした。\n\nスイスIDSIAのRupesh Kumar Srivastava、Klaus Greff、Jürgen Schmidhuberは2015年5月にこの短い論文を公開し、視点を変えました。信号に各層を無事に通り抜けさせる工夫をするより、その層を通らずに済む道を用意すればよい、という発想です。\n\n\n> [!NOTE]\n> \n> これはICML 2015 Deep Learning Workshopの拡張アブストラクトで、数ページしかありません。同じ著者らはのちにこの研究を[Training Very Deep Networks](https://arxiv.org/abs/1507.06228)に拡張してNIPS 2015で発表しており、そちらには実験と分析がさらに多く含まれています。本稿で読むのは、先に出た短い版です。\n\n\n## 問題の定義\n\n通常の順伝播型ネットワークでは、各層が入力に非線形変換を1回施します。\n\n$$\ny = H(x, W_H)\n$$\n\n$H$は通常、アフィン変換に活性化関数を加えたものです。ネットワークがとても深いと、SGDでの学習は最初から行き詰まることがよくあります。例外は、順伝播でも逆伝播でも信号が増幅も減衰もしないよう、重みをうまく初期化した場合です（Glorot初期化やHe初期化など）。\n\nこの種の初期化には二つの制約があります。一つ目に、$H$の正確な形に依存します。活性化関数を替えると、初期化を導き直す必要があるかもしれません。二つ目に、著者らは、He初期化を使っても非常に深い通常のネットワークは最適化が難しいことを見出しました。これは後の実験で見ます。\n\nでは、$H$がどんな形でも、何層重ねても、そのままSGDで学習できるアーキテクチャはないでしょうか？\n\n## 問題の解決\n\n### ゲートを2つ加える\n\n著者らの着想はLSTMから来ています。LSTMはゲートで、記憶をどれだけ残し、どれだけ更新するかを決めます。ここでは同じ考え方を、順伝播型ネットワークの各層に持ち込みます。\n\n著者らは、さらに二つの非線形変換を定義します。変換ゲート$T(x, W_T)$とキャリーゲート$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$は出力のうちどれだけを「入力を変換したもの」から取るかを、$C$はどれだけを「入力をそのまま運んだもの」から取るかを決めます。簡単のため、論文では$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\n両極端を見てみましょう。\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\n$T=0$のとき、この層は入力をそのまま渡し、入力に対する微分は単位行列なので、勾配もそのまま戻ってきます。$T=1$のときは通常のネットワーク層です。実際の$T$はその中間にあり、各層は「通常の層」と「素通り」のあいだをなめらかに調整できます。\n\nここでの$T$は$x$と同じ長さのベクトルで、ユニットごとに自分のゲートを持ちます。$i$番目のユニットの出力は$y_i = H_i(x)\\,T_i(x) + x_i\\,\\big(1 - T_i(x)\\big)$です。そのため、$x$、$y$、$H(x)$、$T(x)$の次元は同じでなければなりません。\n\n次元を変える必要があるときはどうするのでしょうか。著者らは二つの方法を挙げています。$x$を適切にダウンサンプリングするかゼロ埋めする方法と、通常のネットワーク層を1層使って次元を変え、その後にhighway層を続ける方法です。論文では後者を使っています。\n\n畳み込み版のhighway層も同じです。$H$も$T$も畳み込みで計算し、それぞれ重みを共有し、ゼロ埋めで両者の特徴マップを入力と同じ大きさにします。\n\n### 最初は「素通り」に寄せておく\n\n変換ゲートの形は次のとおりです。\n\n$$\nT(x) = \\sigma(W_T^T x + b_T)\n$$\n\n著者らは、$H$に依存しない初期化を示しました。バイアス$b_T$を$-1$や$-3$などの負の値にして、ネットワークを最初はキャリー側、つまり素通りの側に寄せておきます。この考え方もLSTMから来ています。Gersらは1999年に、LSTMのゲートのバイアスを特定の方向に設定し、学習の初期から長距離の依存関係を捉えられるようにすることを提案しました。\n\nバイアスを負にすると、$T$はどのくらい小さくなるのでしょうか？\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は約{torch.sigmoid(torch.tensor(b_T)).item():.3f}\")\n```\n\n```text\nb_T =  0.0：Tは約0.500\nb_T = -1.0：Tは約0.269\nb_T = -3.0：Tは約0.047\n```\n\n$b_T=-3$のとき、各層で変換から来る部分は約5%だけで、95%はそのまま運ばれた入力です。sigmoidの出力は常に0と1のあいだにあるので、先ほどの両極端の条件がぴったり成り立つことはなく、とても近づくだけです。\n\nたくさん重ねるとどうなるでしょうか。50次元のベクトルを使い、50層の通常のネットワークと50層のhighwayネットワークについて、初期化した直後に出力が入力とどれだけ似ているかを比べます。\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     # 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\"通常のネットワーク、{depth}層後の出力と入力のコサイン類似度：{run(False):.2f}\")\nprint(f\"Highwayネットワーク、{depth}層後の出力と入力のコサイン類似度：{run(True):.2f}\")\n```\n\n```text\n通常のネットワーク、50層後の出力と入力のコサイン類似度：0.01\nHighwayネットワーク、50層後の出力と入力のコサイン類似度：0.44\n```\n\n通常のネットワークでは、50層を通ると出力と入力はほとんど無関係になります。highwayネットワークには、入力の方向がかなりの部分残っています。乱数シードをいくつか変えると、通常のネットワークは$-0.13$から$0.20$のあいだ、highwayネットワークは$0.26$から$0.51$のあいだに収まります。\n\nこれは初期化時の様子を示す例で、論文の実験ではありません。伝えたいのは、学習の最初から、情報と勾配にはほとんど変換を通らない道があり、ネットワークはそこから、いつ、どれだけ変換すべきかを少しずつ学べる、ということです。著者らは実験で、バイアスを負にしておけば、$W_H$にどんな平均ゼロの初期分布を使っても、$H$にどんな活性化関数を使っても、非常に深いネットワークが学習を始められることを見出しました。\n\n## 考察\n\n### 深いほど学習しやすいのか？\n\n最適化だけを見て汎化の問題を混ぜないために、著者らはMNISTで**学習セット**の交差エントロピーを測りました。\n\nネットワークの第1層は常に通常の全結合層で、その後に9、19、49、99層のいずれかが続き、最後がsoftmaxです。通常のネットワークは各層71ユニット、highwayネットワークは各層50ユニットとして、両者のパラメータ数をほぼそろえています。公平を期すため、どちらのネットワークも40回のランダムサーチを行い、学習率、モメンタム、学習率の減衰、$H$の活性化関数（ReLUまたはtanh）を調整し、highwayネットワークではさらに変換ゲートのバイアス（$-1$〜$-10$）も調整しています。それ以外の重みはすべてHe初期化です。\n\n[![横に並んだ4枚の学習曲線で、タイトルはそれぞれ深さ10、20、50、100。縦軸は平均交差エントロピー（対数目盛）、横軸はエポック。青線が通常のネットワーク、緑線がhighwayネットワーク。深さ10では最後に青線が最も低い。深さが増すと青線はどんどん高くなり、深さ100ではほとんど下がらない。緑線は4枚とも低いところまで下がる](/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png)](/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png)\n\n*原論文Figure 1。[**v2 PDFの4ページ**](https://arxiv.org/pdf/1505.00387v2#page=4)から抜粋、CC BY 4.0。各曲線は、その設定でランダムサーチにより得られた最良の結果です。青線が通常のネットワーク、緑線がhighwayネットワークです。*\n\n縦軸は対数目盛で、1目盛り下がるごとに10分の1になります。\n\n深さ10では通常のネットワークの成績はとても良く、最後にはhighwayより低くなるほどです。深さが増すにつれ、通常のネットワークはどんどん下がりにくくなり、深さ100では青線がほとんど高いところで止まっています。\n\n一方、緑線には深さの影響が見えません。著者らによれば、100層のhighwayネットワークの最終的な誤差は10層のhighwayネットワークより約1桁良く、10層の通常のネットワークと同程度です。しかもhighwayネットワークは、常に通常のネットワークより速く収束しています。著者らはCIFAR-100で900層のhighwayネットワークの学習も始めていて、論文執筆時点ではまだ80エポック目でしたが、その時点まで最適化の困難の兆候は見られませんでした。\n\n### 学習しやすいとして、正解率は？\n\n学習しやすいことと、テストセットでの成績は別の話です。著者らはFitNetsと比べました。FitNetsはRomeroらが2014年に提案した細く深いネットワークで、maxoutで組まれています。Romeroらは、パラメータ数を約25万、乗算を約3,000万回に制限した条件では、逆伝播でそのまま学習できるのは5層程度までだと報告しました。それより深いネットワークでは、まず浅い教師ネットワークを学習させ、教師の中間層をヒントとして使い、教師のソフトラベルと組み合わせて、2段階で生徒を学習させる必要がありました。\n\nhighwayネットワークはすべて逆伝播で直接学習させ、ランダムな平行移動を加えたCIFAR-10で比較します。\n\n| ネットワーク | 層数 | パラメータ数 | テスト正解率 |\n| --- | ---: | ---: | ---: |\n| Teacher（FitNetsの教師） | 5 | 約900万 | 90.18% |\n| Fitnet 1 | 11 | 約25万 | 89.01% |\n| Fitnet 4 | 19 | 約250万 | 91.61% |\n| Highway 1（Fitnet 1に対応） | 11 | 約23.6万 | 89.18% |\n| Highway 2（Fitnet 4に対応） | 19 | 約230万 | **92.24%** |\n| Highway 3* | 19 | 約140万 | 90.68% |\n| Highway 4* | 32 | 約125万 | 90.34% |\n\n*表：原論文Table 1から抜粋。\\*の付いたネットワークは、学習画像5万枚のうち4万枚だけを使っています。本文ではFitnet 4に対応するネットワークをHighway 4と呼んでいますが、表ではHighway 2となっているため、ここでは表に従います。*\n\nパラメータ数が近ければ、直接学習させたhighwayネットワークは、2段階で学習させたFitNetsと同等かそれ以上の正解率になります。より細く深いHighway 3と4は、パラメータが100万を少し超える程度なのに、900万パラメータの教師ネットワークとほぼ同じ成績です。\n\n### ゲートは何を学んだのか？\n\n最後に、著者らは学習済みの50層全結合highwayネットワークの中を開き、ゲートが実際にどう振る舞うかを調べました。\n\n[![2行4列のヒートマップ。上の行がMNIST、下の行がCIFAR-100で、各図の縦軸は深さ、横軸は50個のユニット。1列目は変換ゲートのバイアス、2列目は1万サンプルでの変換ゲートの平均出力、3列目は単一サンプルの変換ゲート出力で、大部分は青い低い値で、明るい点はまばら。4列目は単一サンプルのブロック出力で、上下に伸びる縦縞が何本も現れる](/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png)](/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png)\n\n*原論文Figure 2。[**v2 PDFの5ページ**](https://arxiv.org/pdf/1505.00387v2#page=5)から抜粋、CC BY 4.0。上の行がMNIST、下の行がCIFAR-100です。4列は順に、変換ゲートのバイアス、1万サンプルでのゲートの平均出力、単一サンプルのゲート出力、同じサンプルのブロック出力です。*\n\nこの図には、見比べる価値のある点がいくつかあります。\n\n**バイアスは予想以上に負になる**。二つのネットワークのバイアスは、それぞれ$-2$と$-4$で初期化されています。著者らは学習でバイアスが押し上げられると予想していましたが、実際には大半がかえってさらに負になりました。CIFAR-100では、バイアスは深くなるほど高くなり、グラデーションを作っています。このグラデーションは、2列目の平均ゲート出力とちょうど逆向きです。著者らの解釈では、浅い層の強く負のバイアスは、ゲートをより選り好みさせ、特定の入力に対してだけ開くようにしています。3列目の単一サンプルのゲート出力がとても疎であることも、この解釈を支持します。\n\n**大半のユニットは素通りし続ける**。4列目のブロック出力には縦縞が何本も現れています。多くのユニットの出力が何十層にもわたってほとんど変わりません。これがいわゆる情報のハイウェイです。出力の変化は大部分が最初の数層に集中していて、MNISTでは最初の約10層、CIFAR-100では最初の約30層です。著者らは、これはCIFAR-100のほうが複雑なことと関係していると推測しています。\n\n著者らはこれをもとに、ゲートは学習を容易にするための道具にとどまらないと考えています。学習済みのネットワークは、情報がどの道を通るかを決めるのに実際にゲートを使っていて、その使い方は入力によって大きく変わります。\n\n## 結論\n\nHighway Networksは各層に「どれだけ変換し、どれだけそのまま渡すか」を学ばせます。素通り側に寄せた初期化と組み合わせると、100層のネットワークでも単純なSGDで学習できます。CIFAR-10では、教師ネットワークなしでFitNetsの水準に達しました。\n\n7か月後、Microsoft ResearchのResNetは、ゲートのない恒等ショートカットでネットワークを152層まで深くし、ILSVRC 2015を制しました。ResNetの論文は関連研究でhighwayネットワークに触れ、両者の違いを説明しています。highwayのゲートは入力に依存してパラメータを持ち、ゲートが閉じると残差を学ばなくなる。ResNetの恒等ショートカットはパラメータを持たず、決して閉じないので、すべての情報が通り抜ける。さらに、highwayネットワークは極端に深い場合（たとえば100層超）の正解率の向上をまだ示していない、というものです。\n\n\n> [!TIP]\n> \n> ResNetのやり方については、私たちのノートを参考にしてください。\n> \n> - **[[15.12] ResNet：畳み込みネットワーク 100 層](/blog/papers/classic-cnns/resnet)**\n\n\nこの関係には、のちに別の見方も出てきました。Schmidhuberは2025年の技術レポート[Who invented deep residual learning?](https://arxiv.org/abs/2509.24732)で、ResNetを「ゲートが全開のHighway Netのようなもの」と表現し、残差接続の源流を、彼の研究室の1991年以降の研究にまでさかのぼっています。\n\n今、とても深いネットワークを学習させるなら、Highwayを選ぶことはまずないでしょう。ResNetの恒等ショートカットにはゲートも追加のパラメータもなく、ゲートのバイアスをいくつで初期化するか悩む必要もありません。\n\nそれでも、「信号に変換を通らない道を用意する」ことを100層のネットワークで最初に実現したのは、Highwayです。次は、ResNetがこのゲートをどう取り払ったのかを見てみましょう。\n","imageSizes":{"/content/papers/assets/2cef37bd2a2388f57a76965431810cb86f976db701ba1647b75c81c9a59ac779.png":{"width":1344,"height":360},"/content/papers/assets/6457aa77c955b4147a7edaeae2028f69f8bf7daf4a7ad70d6a53384f6ed9bfff.png":{"width":1352,"height":724}}}
