1DCNN原理詳細説明

1. 畳み込みニューラル ネットワークとは

畳み込みネットワークは、畳み込みニューラル ネットワークとも呼ばれ、時系列データ (時間軸上の定期的なサンプリングによって形成される 1 次元ネットワークと見なすことができる) など、グリッドのような構造を持つデータを処理するために特別に設計されたニューラル ネットワークです。 ) グリッド) と画像データ (ピクセルの 2 次元グリッドとして表示できます)。

————この段落はHuashu「Deep Learning」から引用されています

畳み込みニューラルネットワークにおける畳み込み演算は、信号処理における畳み込み演算とは異なります. 畳み込みニューラルネットワークにおける畳み込み演算をそのように定義する必要がある理由については、これは注目に値するものではありません. ニューラル ネットワークの目標は、畳み込みカーネル k(m, n) を学習して損失関数を最小化できるようにすることです. k がたまたまある種の畳み込みの定義であるかどうかは問題ではありません.

————この段落は「Tensorflow Deep Learning 人工知能アルゴリズム設計の深層理解」より一部引用

2. 1 次元畳み込みニューラル ネットワーク

現在、深層学習の分野には、テンソルフロー、ケラス、pytorch、Baidu Feijiang (paddlepaddle) など、優れた深層学習オープン ソース フレームワークが数多くあります。その中で、tensorflow は広く使用されているオープン ソース フレームワークであり、keras は主に tensorflow およびその他のオープン ソース フレームワークをカプセル化したものであり、インターフェースをより親しみやすく、ディープ ラーニング モデルをすばやく簡単に構築できるようにします (keras は tensorflow2.0 にも組み込まれています)。以上)。Baidu Feizhi は、Baidu が開発した深層学習フレームワークで、近年中国で大きな成果を上げており、ドキュメントは中国語と英語の両方で提供されています。さらに、MATLAB のビルトイン ディープ ネットワーク デザイナーは、ディープ ラーニング モデルを簡単に構築することもできます。

フレームワークが異なれば、アルゴリズムの実装プロセスも異なり、例えば、keras で必要な時系列データの 0 軸 (縦軸) はタイム ステップ、1 軸 (横軸) はデータ ポイント、 MATLAB の 0 軸 (縦軸) はデータ ポイント、1 軸 (横軸) はタイム ステップです。これは、他のアルゴリズムとの互換性の問題などの要因による可能性がありますが、それらが実装するアルゴリズムの基本原則は同じです。

以下では、1D 畳み込みニューラル ネットワークの MATLAB と keras の順方向計算プロセスを紹介します。

1.データセット

畳み込みニューラルネットワークのデータは、加速度センサーの3軸加速度と合成加速度を使用します.センサーのサンプリング周波数は50Hzで、2.56秒間サンプリングすると128点のサンプリング点が得られるので、データ形式は4 * 128 (MATLAB) または 128*4 (keras) です。

2. MATLAB ベースの実装

1. データフォーマット

トレーニング セットのデータは次のとおりです。

トレーニング セットには 2256 個のサンプルが含まれ、各サンプルのデータは 4 * 128 です。4 は各時間ステップの 4 つのデータ ポイントを表し、128 は 128 時間ステップを表します。

注意: タイム ステップは特定の時間を厳密に表すものではありません。特に自然言語処理では、順序と見なされる場合があります。

2. 一次元畳み込みの原理

1 次元の畳み込みニューラル ネットワークと 2 次元の畳み込みニューラル ネットワークの違いは、畳み込みカーネルの次元ではなく、畳み込みカーネルの移動次元が異なることです。1 次元畳み込みニューラル ネットワークの畳み込みカーネルはタイム ステップ シーケンスに沿ってのみ畳み込まれるため、1 次元畳み込みニューラル ネットワークと呼ばれますが、2 次元畳み込みニューラル ネットワークの畳み込みカーネルは水平方向に沿って畳み込まれます。画像の軸と縦軸が畳み込まれるので、2次元畳み込みと呼ばれます。
ここに画像の説明を挿入
緑は畳み込みカーネルと畳み込み演算のデータを表します。

1.畳み込みの最初の層

畳み込みカーネルのサイズを 9 に設定すると、畳み込みカーネルのサイズは 4 * 9 になり、チャネル数は 32 になります。結果の重み行列とバイアス行列は次のようになります。畳み込み
ここに画像の説明を挿入

ここに画像の説明を挿入
MATLAB で畳み込みカーネルの重みに従って順方向計算を実行すると、畳み込み対象のデータと畳み込みカーネルの次元、つまり畳み込み対象のデータの次元が一致しないことがわかります。は 4 * 9 で、畳み込みカーネルの重みは 9 * 4 です。重みを転置し、点の乗算 (アダマール積) を実行してから、すべての要素とバイアスの合計を求める必要があります。

2. その後の畳み込み

畳み込みの最初の層の後、データは前の層のチャネル数 * タイム ステップ (ここでの時間ステップは、畳み込み層が満たされているかどうか、およびプールされているかどうかを考慮する必要があります) になり、得られたデータは次のようになります。
ここに画像の説明を挿入

2 番目の層の畳み込みのサイズは 9 に設定され、実際のサイズは 32 * 9 で、チャネル数は 64 に設定されます。結果の重み行列とバイアス行列は次のようになります。畳み込みは次のとおりです: 簡単に
ここに画像の説明を挿入
理解するために
ここに画像の説明を挿入
、以下はスケッチです

ここに画像の説明を挿入

3.ケラスに基づく実装

keras の 1 次元畳み込みと MATLAB の 1 次元畳み込みの間に本質的な違いはなく、主に畳み込みカーネルの次元に現れます。

元のデータの形式は時間ステップ * データ ポイントの数 (128, 4) であり、keras の重み行列とバイアス行列は次のとおりです。

畳み込みの最初の層:

ここに画像の説明を挿入

ここに画像の説明を挿入
畳み込みの第 2 層:

ここに画像の説明を挿入

ここに画像の説明を挿入

MATLAB に基づく 1 次元の畳み込みニューラル ネットワークと比較すると、主な違いは重み行列の格納にあり、他に違いはありません。

おすすめ

転載: blog.csdn.net/weixin_49216787/article/details/127387027