1. 概要

このチュートリアルでは、畳み込みニューラルネットワークの背後にある理論とそのアーキテクチャを研究します。

まず、畳み込みニューラルネットワーク(CNN)で通常実行されるタスクと、特徴抽出の問題について説明します。 次に、CNNが必要な理由と、従来のフィードフォワードニューラルネットワークでは不十分な理由について説明します。

次に、行列演算のコンテキストでの畳み込みの演算について説明します。 これにより、畳み込みニューラルネットワークが動作するメカニズムをよく理解できます。

最後に、プーリングとドロップアウトに焦点を当てて、畳み込み層以外の畳み込みニューラルネットワークの特性について説明します。

このチュートリアルの最後に、畳み込みニューラルネットワークとは何か、そしてそれがどのような問題を解決するかがわかります。

2. CNNを使用するのはいつですか

2.1. なぜ画像認識はそれほど難しいのですか?

CNNは、データセット内の抽象的な特徴の抽出と識別で構成される特定のクラスの問題を解決するために使用されます。 簡単な例を通して、これが実際に何を意味するかを見てみましょう。

上の写真に含まれているすべての画像は、さまざまな形、サイズ、色のリンゴを表しています。 人間は、わずかな違いにもかかわらず、リンゴとしてそれらを識別するのに困難はありません。 ただし、コンピューターには、画像は互いにかなり異なっているように見えます。

これらの画像は、人間に似ていても、コンピュータに共通する点はほとんどありません。 これは、人間にとっては明確に定義されたオブジェクトとして表示されるものであり、コンピューターにとっては単なる数字の集まりであるためです。 人間の知覚システムは、実際にはコンテキストの手がかりを使用してオブジェクトを識別しますが、残念ながら、これらはコンピューターでは利用できません。

つまり、コンピュータは、画像内のオブジェクトの認識などのタスクを実行するために、データのみに依存する必要があります。 ただし、上記のサンプル画像で見たように、このデータは大きく異なる可能性があります。 次に、大きく変化するデータを処理するシステムを構築するにはどうすればよいでしょうか。

2.2. 解決策は抽象化です

あまりにも多くのピクセルがあまりにも多くの値をとることができるという事実によって、リンゴを認識する作業は困難になりました。 それでも、それらのそれぞれは、個別にほとんど情報を運びません。 これは、画像が非常にエントロピーであり、このエントロピーを大幅に低減しない限り、画像を操作できないことを意味します。

ただし、入力の抽象的な特徴を学習する方法があれば、分類がかなり簡単になります。 リンゴを、茎に加えて、十分に平らな底面に加えて、もちろん丸い形をしたオブジェクトとして説明できると想像してみてください。

これらの特徴を分類アルゴリズムでエンコードできれば、見えない画像の分類が容易になります。 この場合、探している機能をエンコードするモデルを作成し、それらすべてを備えた画像を「アップル」として分類できます。

畳み込みニューラルネットワークはこのように機能します。 ただ、彼らはこれらの機能を自動的に学ぶことができます。 実際、これらはデータセットの抽象的な表現をアルゴリズムで学習する方法です。 これにより、分類のタスクが容易になり、後で説明するように、いわゆる次元の呪いを解決するのに役立ちます。

3. ニューラルネットワークとその呪い

3.1. CNNが取り組む問題

機械学習に関連する主題に関する紹介記事の伝統に従って、の事前知識または暗黙の知識を少し分析して、畳み込みニューラルネットワーク(以下、CNN)の研究も開始します。この機械学習モデルに組み込まれている。 これは、自分自身に質問することで最もよく説明されます。

  • 「画像分類にフィードフォワードニューラルネットワークを使用しないのはなぜですか?」

実際、フィードフォワードニューラルネットワークは、形式の任意の連続関数に近似できることを知っています。 ただし、ニューラルネットワークがその機能を学習できるという保証はありません。 原則として、疑問がある場合は、ニューラルネットワークがトレーニングデータのノイズに適合し、特定の目的関数を学習しないと想定しても問題ありません。

3.2. 畳み込みと正則化

ニューラルネットワークのトレーニングのためにデータセット内のノイズを減らす試みは、正則化の名前を取ります。 畳み込みは、特徴または観測値の線形依存性を利用する特定のタイプの正則化です。 これにより、ノイズを減らし、機能の線形独立性に関する以前の仮定との一貫性を復元できます。これについては後で説明します。

大まかに言えば、正則化は、データセットの機能低いエントロピーを持つ新しい機能にマッピングすることで構成されます。 正式な用語では、これは、がのエントロピーである場合、のように、特徴を変換することを意味します。 これにより、過剰適合の影響を受けにくい新しい目的関数を学習できます。

畳み込みは、観測の高エントロピー特徴をより複雑なバージョンの特徴に置き換えることにより、基本的にこのタスクを実行します。 これは、ニューラルネットワークを使用するための重要な前提条件である機能の線形独立性が一部のクラスのデータで体系的に違反されているという事実によって可能になります。

3.3. 機能の線形(非)依存性

ここで、特徴が線形独立であることの意味を詳しく見ていきましょう。 上記の2つの変数との分布のモデリングを3次元に拡張することにより、例を使用してこれを行うことができます。

その例では、2つの変数の間に線形関係が存在し、一方がの形式の関数でもう一方によって近似できると想像しました。 特に、この関数は、任意に選択されたパラメーターを持つの形式であると想定しました。 したがって、構造上、これら2つの変数は線形に依存していると言えます。

ここで、2つの線形従属変数を目的関数への入力として使用するとどうなるかを見てみましょう。 以下のアニメーションは、次の形式の目的関数からサンプリングされたトレーニングデータを示しています。

3.4. 依存機能を独立に変える

画像に示されている特定の分布については、値を割り当てましたが、これは説明のみを目的としています。

回帰に使用するモデルの構造に関しては、その特性のいくつかを事前に予測できます。 目的関数が2次形式であることがわかっています。 は線形従属なので。

これで、パラメーターを学習するために、この関数に対して多項式回帰を実行することを想像できます。 同等のものに置き換えない場合は、モデルの5つのパラメーターを学習する必要があります。 ただし、2つの機能は線形独立ではないため、それらの線形結合も線形独立ではありません

これは、2つの入力変数とのパラメーターを学習する代わりに、それらの線形結合に対応するパラメーターの単一のセットを学習できることを意味します。 したがって、パラメータを含むより単純なモデルを学習できます。 これは代数的に、射影されたベクトル空間での関数の表現の学習に対応します。

ご覧のとおり、この特定の例では2つの入力機能は必要ありません。1つだけです。 これは、入力特徴への線形依存性について事前に知っていたためです。 次に、この事前知識により、代数変換によって表現力を失うことなく、モデルへの入力の次元とそのパラメーターを減らすことができます。

3.5. 次元の呪い

これは、モデルへの入力特徴が線形独立ではないと信じる十分な理由がある場合、モデルが必要とするパラメーターの数を減らすことができることを意味します。 これは、すべてではありませんが、一部のクラスのデータが、同時に高次元で相互に線形に依存する機能を備えているという事実に関する事前の知識を活用することによって行われます。

通常CNNで処理されるデータは、通常、その機能の高度な線形依存性によって特徴付けられます。 これらの最も一般的な例は、テキスト、オーディオ、画像、およびビデオ信号です。

  • テキストデータの場合、機能は通常単語であり、それぞれが前後の機能に大きく依存します。
  • オーディオの場合、周波数はほとんどの時間連続的に変化します
  • 代わりに、画像は色に対応するピクセルのコレクションであり、各色はほとんどの場合、周囲のピクセルの1つと同じです。
  • ビデオは一連の画像であり、実際の情報が含まれている場合、これらの画像はオブジェクトの永続性のために部分的にしか変更されません。

これらのタイプのデータはすべて、次元数を減らす目的でCNNで処理するのに適しています。 エンジンの特性に関するデータセットなど、線形独立であると推定される機能を備えたデータは、代わりにCNNには適していません。

3.6. CNNの利点

高次元データにCNNを使用することで、ニューラルネットワークの次元の呪いを解決するのに役立ちます。 この問題は、ニューラルネットワークが入力のサイズの増加よりもパラメータのサイズを大幅に速く増加させる傾向を示しています。

上記の例で、多項式回帰の特定の問題に対して、必要なパラメーターの数を40%減らすことができた方法を示しました。 実際の問題の場合、この減少は大幅に高く、畳み込みなどの次元削減の手法を使用することは、選択ではなく必要です。

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

4.1. 畳み込みの数学的定義

データが線形に依存し、高次元性によって特徴付けられる場合、そのエントロピーを減少させる方法を使用する必要があることを理解しました。 そのような方法の1つは畳み込みです。これは、CNNの名前の由来となる操作です。

ニューラルネットワークの畳み込みの公式では、入力データの識別が必要です。 これは、最初に畳み込みを実行するデータ(たとえば画像)を次元の行列に割り当てることによって行われます。 次に、次のセクションで説明するように、要素が畳み込みから取得する結果のタイプに影響を与えるカーネル行列を定義します。

畳み込みの演算は、行列内の要素とそのすべてのローカルネイバーの値に、カーネル行列内の対応する要素を掛けたものとして定義されます。

4.2. 畳み込みが行列に与える影響

実際に、畳み込みが画像にどのような影響を与えるかを見てみましょう。 この目的のために、サンプル画像を使用して、カーネルを変更した場合にどのように変化するかを確認します。

この画像は、最初に核行列を定義することにより、畳み込みを適用できるピクセルの配列で構成されています。 さまざまな目的に使用できるさまざまなカーネルが存在します。 ここでは、ぼかし用のカーネルから始めて、いくつかを見ていきます。

もう1つのカーネルは、エッジ検出用のカーネルです。

そしてもう1つは、機能をシャープにするためのカーネルです。

畳み込み用のさまざまなカーネルにより、同じデータからさまざまな特徴を抽出できます。これにより、CNNのトレーニングに役立ちます。 畳み込みはCNNの最も典型的な操作であり、アーキテクチャ自体がその名前の由来となっていますが、このネットワークが持つ唯一の特徴はそれだけではありません。

5. 畳み込みニューラルネットワークの他の特性

5.1. CNNの一般的なアーキテクチャ

「畳み込み」ニューラルネットワークと呼ばれているにもかかわらず、 CNNは、畳み込みとは関係のないいくつかの固有の機能によっても特徴付けられます。 フィードフォワードニューラルネットワークと区別するCNNの主な機能は次のとおりです。

  • プーリングレイヤー
  • ドロップアウトレイヤー
  • また、いくつかの特別な活性化関数

CNNの一般的なアーキテクチャには、一般に、必要な回数だけ繰り返される畳み込み、プーリング、およびドロップアウト層のシーケンスが含まれます。 最後のレイヤーは、実行しているタスクに応じて、分類または回帰レイヤーになります。

最初の2つの簡単な説明を順番に見てみましょう。 最後のポイントについては、ReLUのチュートリアルをCNNの活性化関数として参照できます。

5.2. プーリングレイヤー

CNNの独特の特徴は、 pooling の同義の数学演算を実行するプーリング層です。プーリングは、低次元の新しい行列の特定の行列からの抽出で構成され、1つだけが含まれます。元の行列の各クラスターまたは近傍の要素。 プーリングの最も一般的な方法は、いわゆるMax-Poolingであり、これは次のように機能します。

前と同じように、画像またはその他の入力データを表す行列を取ります。 次に、行列を固定サイズの近傍に分割します。 この場合、プーリングウィンドウに分散された4つの要素間のプーリングを選択しました。

次に、特定の近隣にある要素の中で最大の要素を特定し、この目的のために作成している新しいマトリックスに割り当てます。

結果は、元の行列の隣接する値の中で最大の値のみで構成される新しい行列になります。 これにより、結果として情報コンテンツが失われたとしても、入力データの次元が管理しやすいレベルまで低下します。 ただし、トレードオフは、前述のように、入力フィーチャの線形依存性によって正当化されます。

5.3. ドロップアウトレイヤー

畳み込みニューラルネットワークは、いわゆるドロップアウトレイヤーも実装します。これにより、機械学習モデルを忘れる能力が導入されます。 これは、現象に関する過剰な量の事前知識が、同じ主題に関する将来の知識の獲得をサポートするのではなく、実際に妨げる可能性があるという考えに基づいています

ドロップアウトレイヤーは、特定のレイヤーの一部のニューロンをランダムに非アクティブ化することで機能します。これにより、ネットワークは情報量の少ない信号で学習するようになります。 直感に反しますが、高次の相互作用がスプリアスの場合、ドロップアウト層を持つ畳み込みニューラルネットワークは一般によりよく学習することが実証されています。 これは、信号の一部を無効化すると、ネットワークの上位層で表されるその抽象的な特徴の学習が促進されるためです。

与えられたドロップアウトパラメータに対して、確率で行列の各要素に0の値をランダムに割り当てることにより、ドロップアウト関数の出力を取得します。 の場合、正式には:

前のセクションの行列とドロップアウトの確率を例にとると、次の出力が得られます。

この部分的に無効化された行列で学習するパターンは、過剰適合の影響を受けにくくなります。

6. 結論

このチュートリアルでは、畳み込みニューラルネットワークの主な特性を学習しました。

CNNが対処する入力特徴の次元性と線形独立性の問題を研究することから始めました。 次に、畳み込みを数学演算として研究しました。これは、CNNを最も特徴付ける演算であるためです。 このコンテキストでは、畳み込みのいくつかの非常に一般的なタスクに使用できる典型的なカーネルについても調査しました。

最後に、畳み込み層以外のCNNの特性を調べました。 特に、プーリングレイヤーとドロップアウトレイヤーとは何か、そしてそれらがどのように機能するかを学びました。