この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 10136|答える: 0

ニューラルネットワークアーキテクチャの進化:LeNet5からENetまでの10以上のアーキテクチャの包括的なレビュー

[リンクをコピー]
掲載地 2018/04/24 13:08:47 | | | |
LeNet5
LeNet5は1994年に誕生し、初期の畳み込みニューラルネットワークの一つであり、ディープラーニングの分野を発展させました。 1988年以降、多くの成功裏の反復を経て、ヤン・ルカンによるこの先駆的な研究はLeNet5と名付けられました(参照:文書認識へのグラディエントベース学習の応用)。


LeNet5のアーキテクチャは、画像の特徴が画像全体に分散されているという考えに基づいており、学習可能なパラメータを用いた畳み込みは、少ないパラメータで複数の場所で類似の特徴を効率的に抽出する方法であるという考えに基づいています。 当時はGPUがなく、CPUも遅かったです。 したがって、パラメータの保存能力と計算プロセスの両面が重要な開発です。 これは、大規模で多層的なニューラルネットワークで各ピクセルを個別の入力として使うのとは逆です。 LeNet5は、画像に強い空間的相関があるため、画像内の独立したピクセルを異なる入力特徴として利用することはできないため、これらのピクセルは第一層で使用すべきではないと説明しています。

LeNet5の特徴は以下のようにまとめられます:

畳み込みニューラルネットワークは、畳み込み層、プール層、非線形層の3層をシーケンスとして用いています→これはおそらく画像ディープラーニングの重要な特徴です。
畳み込みを使って空間的特徴を抽出します
空間平均への写像を用いたサブサンプル
非線形性は双曲接線(タン)またはS字型(シグモイド)の形で表現されます。
多層ニューラルネットワーク(MLP)が最終的な分類器として機能します
層間のスパース接続行列は大きな計算コストを回避します

全体として、このネットワークは多くの近年のアーキテクチャの出発点となり、この分野の多くの人々にインスピレーションを与えています。

インターバル
1998年から2010年にかけて、ニューラルネットワークはインキュベーション段階にありました。 多くの人は自分の力の拡大に気づいていませんし、他の研究者はそれに気づくのが遅いのです。 携帯電話のカメラや安価なデジタルカメラの登場により、ますます多くのデータが悪用されています。 さらに、計算能力も向上し、CPUは高速化し、GPUは多目的の計算ツールとなっています。 これらの傾向により、ニューラルネットワークはゆっくりと進歩しています。 データと計算能力の進歩により、ニューラルネットワークが成し遂げられるタスクはますます興味深いものとなっています。 その後、すべてがはっきりしました......

ダン・シレサン・ネット
2010年、Dan Claudiu CiresanとJurgen Schmidhuberは、最も初期のGPUニューラルネットワークの実装を発表しました。 この実装はNVIDIA GTX 280グラフィックスプロセッサ上で動作する9層ニューラルネットワークで、順方向および後方伝播を含みます。

アレックスネット
2012年、アレックス・クリジェフスキーはAlexet(参照:ImageNet分類とディープ畳み込みニューラルネットワーク)を発表しました。これはLeNetのより深く広範なバージョンで、難しいImageNetコンペティションで大差で勝利しました。


AlexNetはLeNetの考えをより複雑な物体やオブジェクトレベルを学習できるより大きなニューラルネットワークへと拡張しています。 この研究の貢献は以下の通りです:

非線形性として修正線形単位(ReLU)を用いる
Dropout技術を使って、トレーニング中に個々のニューロンを選択的に無視し、モデルの過学習を回避します
平均プーリングの平均効果を避けるために大きなプールをオーバーライドします
NVIDIA GTX 580 GPUでのトレーニング時間を短縮する

その時点でGPUはCPUよりも多くのコアを提供でき、訓練時間を10倍に延ばすことで、より大きなデータセットや画像を可能にします。

AlexNetの成功は小さな革命をもたらしました。 畳み込みニューラルネットワークは現在、ディープラーニングの基盤となり、「有用なタスクを解決できる大規模なニューラルネットワーク」と同義語となっています。

オーバーフィート
2013年12月、ニューヨーク大学のヤン・ルカン研究室はAlexNetの派生であるOverfeatを提案しました(参照:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks)。 本論文は学習バウンディングボックスも提案し、これが同じテーマに関する多くの論文につながりました。 私は、人工的なバウンディングボックスを学ぶよりも、オブジェクトを分割することを学ぶ方が良いと考えています。

VGG
オックスフォード大学のVGGネットワーク(参照:大規模画像認識のためのVery Deep Convolutional Networks)は、各畳み込み層でより小さな3×3フィルターを使い、それらを組み合わせて畳み込みシーケンスとして処理した最初のネットワークです。

これは、画像の類似した特徴を得るために大規模な畳み込みを用いるLeNetの原理とは逆のようです。 AlexNetの9×9や11×11フィルターとは異なり、フィルターは徐々に小さくなり、LeNetが避けようとしている悪名高い1×1畳み込み異常に近づいています。少なくともネットワークの第一層ではそうです。 しかし、VGGは複数の3×3畳み込みを連続して用いて、5×5や7×7などの大きな受容野の効果を模倣することで大きな進歩を遂げています。 これらの考え方は、InceptionやResNetなどのより新しいネットワークアーキテクチャでも活用されています。


VGGネットワークは複雑な特徴を特徴付けるために複数の3×3畳み込み層を用います。 VGG-Eの第3、第4、第5ブロック:256×256、512×512 3×3フィルターは、より複雑な特徴やそれらの特徴の組み合わせを抽出するために順番に複数回使用されていることに注意してください。 この効果は、3つの畳み込み層を持つ大きな512×512分類器に相当します。 これは当然ながら多くのパラメータや学習能力があることを意味します。 しかし、これらのネットワークは訓練が難しく、より小さなネットワークに分割し、層ごとに蓄積しなければなりません。 これは、モデルを正則化する堅牢な方法や、パラメータ数が多いため探索空間をある程度制約する方法がないためです。

VGGは推論が実行時に時間がかかるため、多くの層で大きな特徴サイズを使用します。 Inceptionのボトルネックと同様に、機能数を減らすことで計算コストを節約できます。

ネットワーク内ネットワーク
ネットワーク内ネットワーク(NiN、論文「Network In Network」参照)のアイデアはシンプルで素晴らしいもので、1×1畳み込みを使って畳み込み層の特徴をより可組合化できる機能を提供することです。

NiNアーキテクチャは、個々の畳み込みの後に空間的なMLPレイヤーを用いて、他のレイヤーより先に特徴を組み合わせることでより良く機能します。 繰り返しますが、1×1畳み込みはLeNetの元の原理に反すると考えることもできるが、実際には畳み込み特徴量を単純に積み重ねることで不可能なより良い方法で畳み込み特徴を組み合わせることができる。 これは元のピクセルを次のレイヤー入力として使うのとは異なります。 1×1畳み込みは、畳み込み後に特徴マップ上の特徴を空間的に結合するためによく使われます。これにより、実際には非常に少ないパラメータで、これらの特徴の全ピクセルで共有できます!


MLPは個々の畳み込み特徴をより複雑な群に組み合わせることで、その効果を大幅に高める能力です。 この考え方はその後、ResNet、Inception、その派生型などの近年のアーキテクチャで使われています。

NiNは最終分類器の一部として平均プーリング層も用いており、これも今後一般的になる手法です。 これは分類前に複数の入力画像に対するネットワークの応答を平均することで行われます。

GoogLeNetとインセプション
Googleのクリスチャン・セゲディはディープニューラルネットワークの計算オーバーヘッドを削減するために、最初のInceptionアーキテクチャであるGoogLeNetを設計しました(参照:Going Deeper with Convolutions)。

それは2014年秋のことで、ディープラーニングモデルが画像フレームと動画フレームの分類に役立ち始めていました。 多くの懐疑論者は、ディープラーニングやニューラルネットワークが今回本当に復活し、今後も進化し続けることを疑っていません。 これらの技術の有用性を踏まえ、Googleのようなインターネット大手はこれらのアーキテクチャを効率的かつ大規模に自社サーバーに展開することに非常に関心を持っています。

クリスチャンは、ImageNetのような深層ニューラルネットワークが計算負荷を削減しつつ、高いパフォーマンスを実現できる方法について多く考えました。 あるいは、同じ計算負荷を確保しつつパフォーマンス向上を行うこともできます。

彼と彼のチームは『インセプション』モジュールを考案しました:


一見すると、これは基本的に1×1、3×3、5×5の畳み込みフィルターの並列組み合わせのように見えます。 しかし、Inceptionの素晴らしいアイデアは、1×1畳み込みブロック(NiN)を持つ高価な並列加群の前に特徴量を減らすことです。 これは一般的に「ボトルネック」と呼ばれます。 このセクションについては、以下の「ボトルネック層」セクションで説明します。

GoogLeNetは初期層としてインセプションモジュールを持たないバックボーンを使用し、その後に平均プーリング層とNiNに似たソフトマックス分類器を使用します。 この分類器は、AlexNetやVGGの分類器よりも操作数がはるかに少ないです。 これにより非常に効果的なネットワーク設計も実現しました。詳細は論文『An Analysis of Deep Neural Network Models for Practical Applications』を参照してください。

ボトルネック層
NiNに触発されたInceptionのボトルネック層は、各層の特徴数を減らし、それに伴い操作数も減らします。 したがって、推論時間を低く抑えることができます。 特徴量の数は4倍に減らされ、その後データが高価な畳み込みモジュールを通過します。 これは計算コストの面で大幅な節約であり、アーキテクチャの成功を意味します。

具体的に確認しましょう。 現在、256のフィーチャー入力と256のフィーチャー出力があると仮定しましょう。Inceptionレイヤーは3×3回の畳み込みしか実行できないとします。つまり、合計で256×256×3×3回の畳み込み(約589,000回の乗算・蓄積(MAC)演算)です。 例えば、Googleサーバー上で0.5ミリ秒でこのレイヤーを実行するには、私たちの計算予算を超えているかもしれません。 代わりに、複雑化すべき特徴数を64個(つまり256/4)に減らすことにしました。 この場合、256 -> 64 1×1の畳み込みから始め、次にインセプションのすべての枝で64回の畳み込み、さらに64 -> 256の特徴から1×1の畳み込みを行います。そして、演算は次のようになります。

256×64 × 1×1 = 16,000秒
64×64 × 3×3 = 36,000秒
64×256 × 1×1 = 16,000秒

以前の60万と比べて、現在は合計7万の計算ボリュームとなり、ほぼ10分の1に短縮されています。

そして、より良い運用を行ったにもかかわらず、この層での一般性は失われませんでした。 ボトルネック層はImageNetのようなデータセットで優れた性能を示しており、次に紹介するResNetのようなアーキテクチャでも使われています。

これは入力特徴が関連しているため成功しており、1×1畳み込みと適切に組み合わせることで冗長性を削減できます。 その後、少数の特徴量を複雑にした後、次の層で再び意味のある組み合わせに展開できます。

インセプション V3(および V2)
クリスチャンと彼のチームは非常に多作な研究者です。 2015年2月、バッチ正規化インセプションはInception V2として導入されました(論文参照:Batch Normalization: Accelerating Deep Network Training by Reduce Internal Covariate Shift)。 バッチ正規化は、1層の出力上のすべての特徴マップの平均および標準偏差を計算し、これらの値を用いて応答を正規化します。 これはデータを「ホワイトニング」し、すべてのニューラルマップが同じ範囲で反応し、平均がゼロになることを意味します。 これにより、次のレイヤーが入力データからオフセットを学習する必要がない訓練に役立ちますし、これらの特徴をより良く組み合わせる方法にも焦点が当てられます。

2015年12月、チームはInceptionモジュールの新バージョンおよび類似アーキテクチャをリリースしました(論文参照:Rethinking the Inception Architecture for Computer Vision)。 論文は元のGoogLeNetアーキテクチャをより詳しく説明し、設計の選択についてより詳しい説明をしています。 元の考え方は以下の通りです。

ネットワークを慎重に構築することで、深さと幅のバランスが取られ、情報の流れを最大化します。 各プーリングの前に、特徴マッピングを追加してください。
深さが増すにつれて、ネットワーク層の特徴量や深さも体系的に増加します。
レイヤーの深さを増やすたびに、次のレイヤーの前に特徴のバインディングを増やしましょう。
3×3の畳み込みのみを用いることで、5×5および7×7のフィルターを可能な限り複数の3×3に分割できます。 下の画像をご覧ください


その結果、新しいインセプションは以下のようになります。


また、畳み込みをより複雑な加群に平坦化することでフィルターを分割することもできます。


インセプション計算を行う際には、プーリング機能を提供することでデータサイズを削減することも可能です。 これは、畳み込みを実行する際に単純なプーリング層を並列に動かすのと基本的に似ています。


Inceptionは最終分類器としてプーリングレイヤーとsoftmaxも使用しています。

ResNet
2015年12月には新たな変更があり、それはインセプションV3と同時期に行われました。 ResNetのシンプルなアイデアは、連続した2つの畳み込み層の出力を入力に送り、次の層にバイパスするというものです(詳細は論文「Deep Residual Learning for Image Recognition」を参照)。


これは以前のいくつかの古い考え方と似ています。 しかしResNetでは、2つのレイヤーを分割してより大きなスケールに適用します。 2層を分けてトライディングするのは重要な直感です。なぜなら、1層を分割しても上達は増えないからです。 レイヤー2を通過することは、小さな分類器、あるいはネットワーク内のネットワークと考えることができます。

ネットワーク層数が100を超え、さらには1000層を訓練できるのはこれが初めてです。

多数のネットワーク層を持つResNetは、Inceptionボトルネック層に似たネットワーク層を使い始めています。


この層は、まずより少ない特徴量を1×1で、出力量(通常は入力の1/4)で畳み込み、次に3×3層、さらに1×1層を用いて処理します。 Inceptionモジュールと同様に、計算負荷を低くしつつ、豊かな特徴の組み合わせを提供します。

ResNetは入力に対して比較的シンプルな初期レイヤーを使用します。7×7ボリュームのベースレイヤーで、2つのプールがあります。 これを、より複雑で直感的でないInception V3やV4と比べてみてください。

ResNetは最終分類器としてプーリングレイヤーとsoftmaxも使用しています。

ResNetに関するその他の洞察は毎日のように行われています:

ResNetは並列かつ連続とも考えられ、多くのモジュールで入力と出力(インアウト)を並列として扱い、各モジュールの出力は連続的に接続されます。
ResNetは並列モジュールや連続モジュールの組み合わせとも考えることができます(論文参照:Residual Networks are Exponential Ensembles of Relatively Shallow Networks)。
ResNetは通常、ネットワークブロックのレイヤー20〜30上で並列に動作することがわかっています。 ネットワーク全体を連続して流れているのではなく。
ResNetがRNNのように出力を入力にフィードバックすると、ネットワークは生物学的により信頼できる皮質モデルとみなすことができます(論文:残留学習、リカレントニューラルネットワーク、視覚皮質間のギャップを橋渡す)。

インセプション V4
こちらはクリスチャンと彼のチームによる別のインセプションバージョンで、インセプションV3に似ています:


Inception V4はまた、InceptionモジュールとResNetモジュールを組み合わせています:


アーキテクチャはあまり簡潔ではないと思いますが、透明性に欠けるヒューリスティックも多いです。 その選択を理解するのは難しく、著者たちも説明しにくいです。

ネットワークのシンプルさは理解し修正しやすいため、ResNetの方が優れているかもしれません。

スクイーズネット
SqueezeNet(論文参照:SqueezeNet: AlexNetレベルの精度でパラメータ数が50倍少、モデルサイズ<0.5MB)は、ResNetとInceptionの概念を再処理した最近公開されたアーキテクチャです。 より良いアーキテクチャ設計のネットワークモデルはより小型であり、パラメータもまだ複雑な圧縮アルゴリズムを必要としません。

エネット
私たちのチームは、最近公開されたアーキテクチャのすべての機能を組み合わせ、より少ないパラメータや計算で高品質な結果を得られる、非常に効率的で低負荷なネットワークを構築する計画です。 このネットワークアーキテクチャはENetと呼ばれ、アダム・パシュケによって設計されました。 すでにシングルピクセルのマークアップやシーン解像度には使っています。

ENetの詳細については、論文『ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation』をご覧ください。 ENetはエンコーディング、追加、復号のネットワークです。 エンコーダは通常のCNN設計で分類されます。 デコーダは、分類を元の画像に逆方向に伝播させてセグメンテーションを行うアップサンプリングネットワークです。 これはニューラルネットワークのみを使用し、画像セグメンテーションには他のアルゴリズムは使いません。

ENetは、開始時に可能な限り最小限のリソースを使用するよう設計されています。 だからこそ、エンコーダーとデコーダのネットワークが0.7MBを占め、精度は16 fpで、スクリプトは非常に小さいのです。 このような小さなモデルであっても、ENetはセグメンテーション精度において他のニューラルネットワークソリューションと同等かそれ以上です。

モジュール解析
論文で行われたCNNモジュールの分析(ImageNetにおけるCNN進展の体系的評価)は非常に参考になります。

バッチノルムなしでELU非線形性を、またはバッチノルムでReLUを使いましょう。
習得したRGBカラースペース変換を使いましょう。
線形学習率低下戦略を用いましょう。
平均層とそれ以上の層の合計を使いましょう。
およそ128〜256のミニバッチサイズを使いましょう。 もしGPUが大きすぎるなら、学習率をこのサイズに縮小すればいいです。
完全連結層を畳み込みとして使い、すべての予測を平均して最終的な予測を導き出します。
研究がトレーニングセットのサイズを拡大すると、到達していない停滞期があるかどうかを検出します
データのクリーンさは、データのサイズよりも重要です。
入力画像のサイズを大きくできない場合は、次のレイヤーでストライドを縮小しても同じ効果があります。
もしあなたのネットワークがGoogLeNetのように複雑で高度に最適化されたアーキテクチャであれば、変更には注意が必要です。

注目に値するその他のアーキテクチャ
FractalNet(論文参照:FractalNet: Ultra-Deep Neural Networks without Residuals)は再帰的アーキテクチャを採用しており、ImageNetではテストされていません。 このアーキテクチャはResNet、またはより一般的にはResNetの派生型です。

未来
私たちは、ニューラルネットワークアーキテクチャの構築がディープラーニング開発の最優先事項だと考えています。 私たちのチームは、記事で言及されている論文を注意深く読み、理解することを強くお勧めします。

しかし、なぜ私たちは建築を作ることにこれほど多くの時間を費やしているのか疑問に思うかもしれません。 なぜデータで何を使うべきか教えてくれないのですか? モジュールはどうやって組み合わせるのですか? これらの問題は良いものですが、まだ研究中であり、参考になる論文もあります:微分可能な構造を持つニューラルネットワーク。

この記事で取り上げたほとんどのアーキテクチャはコンピュータビジョンに関するものです。 同様のニューラルネットワークアーキテクチャは他の分野でも開発されており、他のすべてのタスクにおけるアーキテクチャの変化について学ぶのは非常に興味深いです。

ニューラルネットワークアーキテクチャと計算性能の比較に興味がある場合は、「An Analysis of Deep Neural Network Models for Practical Applications」をご覧ください。







先の:いくつかのPython実行時間計算手法
次に:アントマイナーB3は掘るべき場所を教えてくれます!
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com