LLMファインチューニングのためのNLPと深層学習入門 #9 スキップ接続
今回はCVMLエキスパートガイドより、『スキップ接続 (Skip connection)』を勉強していきます。
1. スキップ接続(skip connection)とは
スキップ接続とは、DNNにおいて、途中の複数層をN層分スキップして先の層へつなげる迂回パスにより、離れた層の間で順伝搬・逆伝搬を行えるようにする機構です。
スキップした先では、元の特徴(マップ)をそのままコピーする場合もあれば、学習可能な層を設けて、スキップ後の結合具合も層に学習する場合もあります。
Transformerでも、残差接続の仕組みが活用されるなど、CV(コンピュータビジョン)やNLPなど、各ディープラーニング関連分野でResNet(もとい残差接続)が活躍しています。
『残差接続』
CNNの一種であるResNetの構成部品である残差ブロックにおいて、ブロックに配置される「スキップ接続+そのあとの2経路の出力の足し算」の部品のこと。
要は「残差接続≒スキップ接続」。
スキップ接続のうち、ResNetで提案された「残差ブロックを反復して構成しているネットワーク構造」のことを特に「残差接続」と呼ぶ。
スキップ接続によって間の層による処理をショートカットしてネットワークの終盤まで伝搬させることにより、序盤層の低レベル特徴や、中盤層の中レベル特徴も積極的に予測に使えるようになる利点があります。
(前向きの情報伝達)
逆に、終盤層における損失の偏微分値を中盤層や序盤層まで逆伝搬することで、勾配消失や勾配爆発を防ぐ効果に加え、「効率よく序盤層までロスを行き渡らせることができる」という利点が出ます。
(誤差情報の後方への伝達)
また、ResNetで提案された「残差ブロック」では、その内部で残差接続(=短いブロック単位のスキップ接続)が利用されています。
これにより、短いスキップ接続を使って、超深いResNetを超多数のパスを用いて学習しやすくします。
2. スキップ接続の基本型
![](https://assets.st-note.com/img/1688733235884-0rSU0uGVEw.png?width=1200)
CVMLエキスパートガイドより
スキップ接続では、図1-aに示すように、1つ以上の層をスキップして情報を伝搬させる経路(迂回経路)を作ります。
スキップ接続が無い直列的な層の接続設計では、図1-bのように隣の層同士を順番に伝搬していき、全ての処理の計算を経ることになります。
そこで、図1-aのように迂回経路を作成すると、$${f_n}$$層が出力する特徴マップを、少し先の$${f_{n+2}}$$層が出力する特徴マップと結合した結果を得ることができます。
すなわち、$${f_n}$$層と$${f_{n+2}}$$層の間の層である$${f_{n+1}}$$層の処理を無視することが迂回経路側では可能となり、スキップ処理とスキップ無し処理、これら2経路の並列処理を実現することができます。
ネットワークの設計では、このスキップ接続を多用して、複数の層をスキップする迂回経路を多数設置し、複雑な特徴集約経路を可能にすることが良く行われます。
DNNやCNNの層の間、ブロックの間に多数のスキップ接続を設置すると、以下のような恩恵を受けることができます。
多層ネットワークの実現
学習時間の短縮
多様な伝搬パスを通じた表現力向上
つまり、スキップ接続を導入することにより、ネットワークの精度向上や学習効率の向上を狙うことができます。
実際の使用例
スキップ接続や残差接続の使用例としては、次のようなものが挙げられます。
ResNetの残差接続
DenceNetブロック
ResNeXtブロック
U-Net / FPN
Transformerを用いた各種ネットワーク
(BERT, GPT, Vision Transformer, DETRなど)
3. スキップ接続の変遷
スキップ接続は、2015~2016年ごろに、コンピュータビジョン向けのCNNのために多数の研究が同時に行われ、(1)セマンティックセグメンテーション向けFCNの研究でのスキップ接続の使用や、(2)物体認識向けのResNetの残差接続などの初期の代表的な実用例がそこで登場しました。
その後、U-Net・Feature Pyramid Network(特徴ピラミッドネットワーク)において「Encoder-Decoder内での同一スケール特徴間を繋ぐスキップ接続」が提案されて以降、ディープラーニングの中でも極めて重要な機構の一つとなっています。
このスキップ接続と画像Encoder-Decoderの組み合わせにより、低レベルや中レベルの特徴を終盤の層へ用意に伝搬させることができるようになりました。
これにより、様々な解像度のサブスケール画像を考慮に入れた、表現力の高いマルチスケール画像認識が可能になりました。
身近な例で言うと、例えば画像における物体認識の分野で有名なYOLOでは、v3以降のバージョンで特徴ピラミッドネットワークとスキップ接続が導入されています。
FPNは、ネットワークの異なる深度からの特徴マップを使用して、異なるスケールの物体を検出する能力を強化します。
これにより、さまざまなスケールの物体を効果的に検出することができます。
この特徴ピラミッド型・砂時計型ネットワーク構造は、YOLO以外の物体検出アルゴリズム(例えば、Faster R-CNNなど)にも見られます。
これは、さまざまなスケールの物体を効果的に検出するための一般的な手法で、現代の物体検出アルゴリズムにおける重要な要素となっています。
また、スキップ接続を用いることにより、ネットワークは新たな特徴を学習しつつ、ネットワークが入力画像から最初に抽出する低レベルの特徴を維持することができます。
これらの異なるレベルの特徴マップを組み合わせることで、FPNは高解像度でセマンティック情報が豊富な特徴マップを作成し、さまざまなサイズの物体を効果的に検出することができます。
4. スキップ接続のCNN向け初期実用例
スキップ接続の目的は、間の層をスキップした迂回経路を用意し、特徴を別ルートで遠くに伝搬することです。
すなわち「何度も畳み込み層とプーリング層を経て消失してしまう低レベル特徴を、後半の層へ直接搬送して生き残らせる(直接渡す)」ことです。
スキップ接続で迂回したN個の層は、順伝搬や逆伝搬をスキップして無視することができます。
そのため、誤差逆伝搬時には勾配消失問題を回避して、損失の微分値を奥の方の初期層まで簡単にスキップして伝えやすくすることが可能です。
一方、順伝搬時には、序盤層のみを経て作られた低レベルの特徴を、後半層までその状態を保持したまま使用することができます。
4.1 FCNでの提案
セマンティックセグメンテーション向けに提案されたFully Convolutional Network(FCN)のネットワーク構造では、低レベル特徴と中レベル特徴を合成した特徴マップを用いて最後の画素識別を行うために、第3層目のプーリング層と、第4層目のプーリング層における特徴マップをスキップ接続で最後の層までコピーすることを提案しました。
このFCNで提案されたスキップ接続が、U-Netで対称Encoder-Decoder構造化して汎用性が高まったのを皮切りに、多くの画像認識タスクで「U-Net・FPN構造の中の部品」としてスキップ接続が多く活用される展開に進みました。
4.2 ResNetでの残差接続の使用
ResNetでは、残差接続(=スキップ接続)を用いることで「3層ごとに残差接続で区切って小ブロック(残差ブロック)化し、その残差ブロックをものすごくたくさん直列につなぐ」ことを提案しました。
その後、Transformerにも残差ブロックが採用されたという意味でも、この提案は非常に重要です。
5. その後のスキップ接続の代表的な活用例
5.1 同一スケール特徴間を繋ぐスキップ接続
![](https://assets.st-note.com/img/1688736800965-SwznpzMwaJ.png?width=1200)
CVMLエキスパートガイドより
U-Netでは、FCNを参考に拡張する形で、U構造ネットワークの、同じ解像度のEncoder層とDecoder層のあいだを、スキップ接続で橋渡し接続することが提案されました。(図2)
『U構造ネットワーク』
U-Netのネットワーク形状のこと。
U-Netのネットワーク構造は、大きくEncoder部分とDecoder部分に分かれており、全体で見るとU字の形状をしている。
具体的には、Encoder部分では入力データの次元が逐次的に減少(ダウンサンプリング)し、Decoder部分ではそれが逆に増加(アップサンプリング)する構造をしている。
5.2 スキップ接続を使用したブロック
ResNetの残差ブロックと同様に、他のCNNバックボーンでも、ブロック内で
のスキップ接続の使用が行われました。
『バックボーン』
機械学習や深層学習のモデルにおける主要なネットワーク構造、特に特徴抽出を担当する基幹部分のこと。
以下はResNetブロック以外の代表例です。
Denceブロック
![](https://assets.st-note.com/img/1688737491070-KelLqfNswP.png?width=1200)
CVMLエキスパートガイドより
DenceNetのブロック(図4)は、ブロック内の全ての層がスキップ接続で密接に結びついている構造を持っています。
ResNeXtブロック
![](https://assets.st-note.com/img/1688737659433-JnyIcbgOhT.png?width=1200)
CVMLエキスパートガイドより
ResNetの著者自身によるResNetの発展版であるResNeXtのブロック(図5)でも、スキップ接続が用いられています。
ResNetブロックの残差接続でない側、つまりスキップ接続を通らない、直列的な処理ルートを通る層を、32の経路に拡張したものがResNeXtのブロックです。
よって、ResNetと同様にスキップ接続の使用が継承されています。
6. Transformerでの残差接続の使用
![](https://assets.st-note.com/img/1688738047230-aCO7sOmyVo.png?width=1200)
CVMLエキスパートガイドより
Transformerでも、各マルチヘッドアテンションとFFNブロックにResNet方式の残差接続が採用されました。
これにより、大規模なTransformerネットワークを学習しやすくなっています。
『FFNブロック』
自己アテンションメカニズムの出力をさらに変換するための部分。
各(トークンの)位置情報を独立に処理する。
この部分は通常、全結合層とReLUやGELUなどの非線形活性化関数、そしてもう一つの全結合層からなるニューラルネットワークである。
なお、残差接続が無いと、層が多い、かつネットワークが深すぎて上手く学習できないらしいです。
7. おわりに
今回はスキップ接続について勉強しました。
スキップ接続(≒残差接続)は、Transformerにおいても重要な役割を担っているので、ここで理解を深めておく必要がありました。
大分知識が溜まってきて、ある程度の情報なら一度読んだだけで分かるようになってきました。
こういう進歩が明確に感じられると、嬉しいですね。
次回は残差接続について、もう少し深掘りしていこうと思います。
それでは。
進捗上げてます
「#AIアイネス」で日々の作業内容を更新しています。
ぜひ覗いてみて下さい。
参考
この記事が気に入ったらサポートをしてみませんか?