1. 序章

この記事では、畳み込みニューラルネットワーク(CNN)と呼ばれる、コンピュータービジョンタスクで一般的に使用されるニューラルネットワークの1つのタイプを紹介します。 さらに、このタイプのネットワークを構築する際の問題に対する詳細な解決策を提供します。

このトピックに関する多くの研究があり、多くの特定のドメインベースのCNNアーキテクチャが開発されています。 そのため、このネットワークをどのように設計するかという問題に対する普遍的な答えはありません。 それでも、CNNモデルをアップグレードし、モデルの予測を改善するために適用できる便利なヒントがいくつかあります。

2. ニューラルネットワーク

ニューラルネットワークは、生物学的ニューラルネットワークのインスピレーションとして作成されたアルゴリズムの一種です。 当初のアイデアは、人間の脳の働きと同じように機能する人工システムを作成することでした。 ニューラルネットワークの基本は、ネットワークの種類に応じて相互接続されるニューロンです。

通常、ニューラルネットワークは各層が複数のニューロンで構成される層で構成されます。入力も出力もされない層である隠れ層が少なくとも1つあるニューラルネットワークは、ディープニューラルネットワークと呼ばれます。その名前からディープラーニングとして知られる機械学習のクラス。主な焦点はディープニューラルネットワークです。

ニューラルネットワークには多くの種類がありますが、大まかに言えば、次の3つの主要なクラスに分類されます。

それらの主な違いは、それらを形成するニューロンのタイプと、情報がネットワークをどのように流れるかです。 この記事では、畳み込みクラスのニューラルネットワークについてのみ説明します。

3. 畳み込みニューラルネットワーク

畳み込みニューラルネットワークは、機械学習技術である人工ニューラルネットワークの一種です。 彼らはしばらく前から存在していましたが、画像認識に成功したため、最近より多くの露出を獲得しています。 畳み込みニューラルネットワークは、畳み込み演算を適用できるあらゆる種類のデータを処理するために使用できる強力なツールです。

畳み込みニューラルネットの成功は、主に画像、ビデオ、テキストなどの大量のデータを処理できるという事実に起因しています。 主に、これらを使用して、画像の分類、オブジェクトのローカライズ、およびエッジやコーナーなどの画像からの特徴の抽出を行うことができます。 これらは通常、1つ以上の隠れ層で構成され、各層にはニューロンと呼ばれる学習可能なフィルターのセットが含まれています。

3.1. 畳み込み

前述したように、これらのネットワークは次のように定義される畳み込みを使用します。

(1)  

ここで、は入力画像であり、はフィルターまたはカーネルです。 より直感的には、次の図を見ると、このプロセスを想像できます。

上の画像では、フィルターを使用して畳み込みを適用するマトリックスを確認できます。 これは、フィルターが行列全体を通過し、行列の対応する要素とフィルターの間に要素ごとの乗算が適用されることを意味します。 その後、この要素ごとの乗算の結果を1つの数値に合計します。

3.2. 畳み込みニューラルネットワークの利点

したがって、完全に接続されたニューラルネットワークと比較した場合の畳み込みニューラルネットワークの最大の利点は、パラメーターの数が少ないことです。たとえば、入力に次元があり、次元を持つ10個のフィルターを適用する場合、出力は、形式のテンソルになります。 すべてのフィルターには、パラメーターに加えて、合計10個のフィルターに対応する1つのバイアス要素があります。

(2)  

パラメーター。 一方、完全に接続されたニューラルネットワークでは、入力行列を次元ベクトルに平坦化する必要があります。 上記と同じ寸法の出力を得るには、次のようにする必要があります。

(3)  

パラメータ、または重み。 ネットワークの重みは、画像のさまざまな部分の特徴を学習できるようにするものです。 これらの重みはバックプロパゲーションによって更新されます。バックプロパゲーションは、出力のエラーをレイヤーに伝播して、トレーニング目的で重みを変更します。

3.3. シンプルなCNNAアーキテクチャ

最後に、ほとんどの場合、ReLU活性化関数が畳み込み層の後に使用されていることを言及する価値があります。 その後、畳み込み層と同じ方法でフィルターを適用するプーリング層をたどりますが、畳み込みではなく最大または平均の項目のみを計算します。 以下の画像では、畳み込み層、ReLU、および最大プーリングの例を見ることができます。

4. 畳み込みニューラルネットワークの設計

前述したように、CNNを作成するための一般的なルールはありません。 それは私たちが解決しようとしている具体的な問題に大きく依存します。 また、好ましい精度、トレーニング速度、計算リソースなどの他のいくつかの要因が、この問題で重要な役割を果たす可能性があります。

4.1. 簡単なタスク

たとえば、人気のあるMNISTデータセットを使用した手書きの数字分類などの比較的単純な問題の場合、複雑なCNNアーキテクチャは必要ありません。経験則では、1つある単純なCNNから始めます。次元3の約10個のカーネルと1つの最大プーリング層を持つ隠れ層。 結果に基づいて、精度とトレーニング速度の間のトレードオフを制御することで、カーネルの数を徐々に増やし、新しいレイヤーを追加できます。

さらに、CNNの精度と速度は、バッチサイズ、学習率、オプティマイザーなどの他の要因に依存する可能性があることに注意する必要があります。 また、ReLU活性化関数の他のバリエーションを試すこともできます。 たとえば、Leaky ReLUまたはELU関数は、ニューラルネットワークにさらなる多様化をもたらす可能性があります。

4.2. より複雑なタスク

より複雑な問題がある場合、経験則では、事前にトレーニングされたネットワークを使用します。 これは、転移学習と呼ばれる一般的な手法のおかげで可能になります。 これは、異なるデータを使用してトレーニングされているにもかかわらず、すでにトレーニングされたネットワークを再利用できる便利で重要な方法です。

要約すると、このプロセスでは、事前にトレーニングされたモデルを取得し、必要に応じて1つのレイヤーを追加するか、最後のレイヤーを変更し、データセットを使用してモデルを微調整します。 古いニューラルネットワークが元のデータセットでいくつかのパターンを学習し、少し調整するだけでそれらを問題に利用できるため、転移学習が可能です。 もちろん、元のデータセットが私たちのものに類似しているほど、より良い結果が期待できます。

事前にトレーニングされたモデルは通常、いくつかの一般的なCNNアーキテクチャと一緒に提供されます。 ほとんどの場合、過去のある時点で、彼らは最先端の結果を達成したか、いくつかの重要な競争の解決策を勝ち取っていました。 次に、それらについて詳しく説明します。

5. 人気のあるCNNアーキテクチャ

コンピュータビジョンで最も人気があり、最も使用されているデータセットの1つは、ImageNetです。 これは、2,000万を超える画像と、約22,000の人間がラベル付けしたクラスで構成されています。 PyTorch、TensorFlowなど、最も人気のあるディープラーニングパッケージの一部には、このデータセットでトレーニングされた事前トレーニング済みモデルが含まれています。 ここでは、それらの一部のみを取り上げます。

5.1. VGG16

VGG16は、2014年のImageNetコンペティションで使用された畳み込みニューラルネットワークです。 数値16は、重み付きの16層があることを示します。そのうち、13層は畳み込みで、3層は密であるか完全に接続されています。 さらに、4つの最大プーリング層があります。 VGG16ネットワークの例は次のとおりです。

5.2. InceptionNet

InceptionNetはGoogleNetとも呼ばれ、2014年のImageNetコンペティションの優勝者です。 このネットワークは、いくつかの畳み込み層と1つの最大プーリング層で構成される開始モジュールを導入しました。 アイデアは、優れたローカルトポロジを作成し、さまざまな機能を抽出することでした。 さらに、このネットワークは、レイヤーのチャネルサイズを縮小するために畳み込みを使用しました。 開始モジュールの視覚的表現を見てみましょう。

InceptionNet全体には、他のいくつかのレイヤーを備えた9つのそのようなモジュールがあります。 ここではいくつかの例を示します。

5.3. ResNets

ResNetは、2015年のImageNetコンペティションの優勝者でした。 このモデルの作成者は、ネットワークに残りのブロックを導入しました。これが成功の鍵でした。 各レイヤーが次のレイヤーにフィードする従来のニューラルネットワークとは対照的に、ResNetの一部のレイヤーには、前のレイヤーとのショートカット接続がありました。 このようにして、上位層はより深い層から直接情報を取得することができ、勾配消失問題の解決に役立ちました。

残りのブロックがどのように見えるか見てみましょう:

同様に、以前のモデルと同様に、このタイプのネットワークはPyTorchとTensorFlowでも見つけることができます。

5.4. NFNets

この画像分類器のファミリーは、2021年の初めにDeepMindによってリリースされました。 そして、ImageNetデータセットで最先端の精度を達成しました。 NFNet(ノーマライザーフリーネットワーク)は、バッチ正規化の代わりに、スケーリングされた重みの標準化と適応勾配クリッピングを備えた修正された残差ブロックを導入します。 実装例は次のとおりです。

5.5. EfficientNets

最後に、EfficientNetsは、530万個のパラメーターを持つ最小のものから、6,600万個のパラメーターを持つ最大のものまで、畳み込みニューラルネットワークのファミリーです。 それらの精度はImageNetでのNFNetの精度をわずかに下回っていましたが2021年6月下旬に、Googleは以前のすべてのCNNアーキテクチャを上回る新しいバージョンEfficientNetV2を公開しました。

その結果、このネットワークファミリーは、CNNの深さ、幅、解像度を体系的にスケーリングすることで、最先端の結果を達成しました。 さらに、V2はプログレッシブ学習を使用します。これは、トレーニングを通じて画像のサイズを徐々に大きくすることを意味します。 また、Fused-MBConvレイヤーと呼ばれる新しいタイプのレイヤーが含まれていました。 いくつかの例を見ることができます:

最後に、下の画像では、いくつかの言及されたネットワークのImageNetでトップ1の精度を見ることができます。

6. 結論

この記事では、深い畳み込みニューラルネットワークを作成する方法を研究しました。 最初に、ニューラルネットワークと畳み込みニューラルネットワークの用語と、それらを取り巻くいくつかの基本的な概念を紹介しました。 その後、単純な問題と複雑な問題の両方に対して畳み込みニューラルネットワークを構築する方法について説明しました。 最後に、最も使用されているCNNアーキテクチャのいくつかと最新の結果を示しました。