1. 概要
このチュートリアルでは、サンプルネットワークアーキテクチャを使用して、畳み込みニューラルネットワークの2つの基本コンポーネントである正規化線形ユニットとドロップアウトレイヤー–について学習します。
最後に、CNNへの挿入の背後にある理論的根拠を理解します。 さらに、独自の畳み込みニューラルネットワークにそれらを実装するために必要な手順もわかります。
2. CNNにおける次元の呪い
ニューラルネットワークを構築するときに想定しなければならない2つの根本的な仮説があります。
1 –入力特徴の線形独立
2 –入力空間の低次元性
通常CNNで処理するデータ(オーディオ、画像、テキスト、およびビデオ)は、通常、これらの仮説のいずれも満たしていません。これが、他のNNアーキテクチャの代わりにCNNを使用する理由です。
CNNでは、トレーニング中に畳み込みとプーリングを実行することにより、隠れ層のニューロンは、入力に対して可能な抽象的な表現を学習します。これにより、通常、次元が減少します。
次に、ネットワークは、基礎となる入力機能ではなく、これらの抽象的な表現が互いに独立していると想定します。 これらの抽象的な表現は通常、CNNの隠れ層に含まれており、入力の次元よりも低い次元を持つ傾向があります。
したがって、CNNは、いわゆる「次元の呪い」問題の解決に役立ちます。これは、入力の次元の単一の増加に関連して、機械学習タスクを実行するために必要な計算量の指数関数的な増加を指します。
3. 正規化線形ユニット
3.1. CNNでシグモイド関数を使用しないのはなぜですか?
訓練されたCNNには隠れ層があり、そのニューロンは入力特徴の可能な抽象表現に対応しています。 目に見えない入力に直面したとき、CNNは、学習した抽象的な表現のどれがその特定の入力に関連するかを知りません。
与えられた学習された抽象的な表現を表す、隠れ層の与えられたニューロンについて、2つの可能な(あいまいな)ケースがあります:そのニューロンが関連している、または関連していない。
ニューロンが関連していない場合、これは必ずしも他の可能な抽象的な表現も結果として可能性が低いことを意味するわけではありません。 画像にが含まれる活性化関数を使用した場合、これは、ニューロンへの入力の特定の値に対して、そのニューロンの出力がニューラルネットワークの出力に悪影響を与えることを意味します。
これは一般的に望ましくありません。前述のように、学習したすべての抽象表現は互いに独立していると想定しています。 したがって、CNNの場合、非負の活性化関数を使用することをお勧めします。
このような関数の最も一般的なものは正規化線形関数であり、それを使用するニューロンは正規化線形ユニット(ReLU)と呼ばれます。
3.2. ReLUの計算
この関数には、またはなどのシグモイド関数に比べて2つの大きな利点があります。
- ReLUは、入力と値0の比較のみを含むため、計算が非常に簡単です。
- また、入力がそれぞれ負であるかどうかに応じて、0または1の導関数があります。
特に後者は、トレーニング中のバックプロパゲーションに重要な影響を及ぼします。 これは、実際、ニューロンの勾配の計算が計算上安価であることを意味します。
<
それどころか、シグモイド関数などの非線形活性化関数には、一般にこの特性はありません。
結果として、ReLUの使用は、ニューラルネットワークの操作に必要な計算の指数関数的成長を防ぐのに役立ちます。 CNNのサイズが拡大すると、ReLUを追加するための計算コストは直線的に増加します。
ReLUは、シグモイド関数を使用する場合に一般的な、いわゆる「勾配消失」問題の発生も防ぎます。 この問題は、入力の値が高い場合にニューロンの勾配がゼロに近づく傾向を示しています。
シグモイド関数には、正の無限大に近づくにつれて0になる傾向のある導関数がありますが、ReLUは常に定数1のままです。 これにより、アクティブ化関数への入力の値が高い場合でも、エラーのバックプロパゲーションと学習を続行できます。
4. ドロップアウトレイヤー
CNNのもう1つの典型的な特性は、ドロップアウト層です。 ドロップアウトレイヤーは、次のレイヤーへの一部のニューロンの寄与を無効にし、他のすべてのニューロンを変更せずに残すマスクです。 ドロップアウトレイヤーを入力ベクトルに適用できます。その場合、その機能の一部が無効になります。 ただし、これを隠れ層に適用することもできます。その場合、一部の隠れニューロンが無効になります。
ドロップアウトレイヤーは、トレーニングデータの過剰適合を防ぐため、CNNのトレーニングで重要です。 それらが存在しない場合、トレーニングサンプルの最初のバッチは、不釣り合いに高い方法で学習に影響を与えます。 これにより、後のサンプルまたはバッチにのみ表示される機能の学習が妨げられます。
トレーニング中にCNNに円の写真を10枚続けて見せるとします。 CNNは、直線が存在することを学習しません。 結果として、後で正方形の写真を表示すると、かなり混乱します。 過剰適合を防ぐために、ネットワークのアーキテクチャにドロップアウトレイヤーを追加することで、これらのケースを防ぐことができます。
5. ReLUとドロップアウトレイヤーを備えたCNN
このフローチャートは、ReLUとドロップアウト層を備えたCNNの一般的なアーキテクチャを示しています。 このタイプのアーキテクチャは、画像分類タスクで非常に一般的です。
6. 結論
この記事では、NNよりもCNNを優先する場合について説明しました。 入力の機能が独立していない場合に使用することをお勧めします。 また、活性化関数としてReLUを使用する理由も確認しました。
ReLUは計算が簡単で、エラーのバックプロパゲーションの予測可能な勾配があります。
最後に、Dropoutレイヤーがトレーニング中にモデルの過剰適合を防ぐ方法について説明しました。 特に、 Dropoutは、レイヤーの一部のニューロンをランダムに非アクティブ化するため、出力への寄与が無効になります。