ニューラルネットワークの基本的な研究ノート(2)ニューラルネットワーク

目次

3、ニューラルネットワーク

3.1パーセプトロンからニューラルネットワークへ

3.1.1ニューラルネットワークの例:

3.1.2関数変換:

3.2アクティベーション機能

3.2.1アクティベーション機能タイプ:

3.2.3クラス関数のグラフ

3.2.2ステップ関数とシグモイド関数の比較:

3.2.3ReLU機能:

3.3多次元配列の操作:

3.3.1ニューラルネットワークの内積:

3.4。3層ニューラルネットワークの実装

3.5.1 3種類の出力関数

3.5.2 softmax関数のオーバーフロー問題

3.5.3 Softmax関数の特性:

3.5.4出力層のニューロンの数

3.6手書き数字認識

単一処理とバッチ処理

概要:


3、ニューラルネットワーク

問題の解決:前の章では、ANDまたはnonを使用してさまざまな関数の問題を解決できますが、重みは手動で設定されます。この章では、ニューラルネットワークの実現から始め、既存のデータを使用して適切な重みをパラメーターとして学習し、上記の問題を解決します。

3.1パーセプトロンからニューラルネットワークへ

3.1.1ニューラルネットワークの例:

 

ニューラルネットワークは実際にはパーセプトロンと同じです

3.1.2関数変換:

参考:同級生Fangが編集した数式図

画像ソース:https : //me.csdn.net/qq_37431224

 

上図の関数変換によれば、活性化関数であるh(x)に変換できます。

活性化関数はパーセプトロンとニューラルネットワークブリッジです。

3.2アクティベーション機能

3.2.1アクティベーション機能タイプ:

境界としてのしきい値へのアクティブ化機能は、入力がしきい値を超えると、出力が切り替わります。このような関数を「ステップ関数」と呼びます。

活性化関数は、ステップ関数シグモイド関数に分かれており、ステップ関数は、入力値が特定のしきい値を超えたときに出力を変更するものです。

ここで、EXP(-x)および^ {-x}手段、H(x)は、共通の用語分類の損失関数であります

コード:

3.2.3クラス関数のグラフ

ステップ機能と画像実現

画像ソース:https : //me.csdn.net/qq_37431224

 

シグモイド関数の画像:

3.2.2ステップ関数とシグモイド関数の比較:

 

機能比較
ステップ関数 シグモイド関数
滑らかでない スムーズ
2つの値のみ(バイナリ値) 無制限の本当の価値

彼らは2間の類似点は、彼らがいることである0-1との間の範囲内にあります

ニューラルネットワークの活性化関数は、非線形関数を使用する必要があります

さらに、シグモイドは、線形関数(直線)h(x)= cx(cは定数)とは異なり、非線形曲線です。これは、線形関数が多層パーセプトロンに次のような隠れ層を持たないためです。

 

同じことはy = axであり、複数の層を利用することはできません。

3.2.3ReLU機能:

0より大きい場合はxを直接出力し、0以下の場合は0を出力します

関数の実装:ここで、maxinumは最大値を返します

図に効果を示します。

3.3多次元配列の操作:

np.ndim(A)出力行列の次元

np.shapeの出力形状にはいくつかのコンポーネントがあります。結果はタプルです。

3.3.1ニューラルネットワークの内積:

np.dot(多次元配列のドット積)を使用し、行列演算のみ

3.4。3層ニューラルネットワークの実装

記号の意味:

原理分析:

1)0番目から1番目のレイヤーを実現します。 

 

 

私たちは知っています

したがって、重み付けの最初のレベルがあります

 

コード:

2)以下の図のアクティベーション関数h()の a1からz1への変換(シグモイド関数)を実現ます

コード:

3)1番目から2番目のレイヤーと同じように、上記の手順を直接繰り返します。

コード:

4)2番目から3番目のレイヤー(出力レイヤー)は基本的に上記の手順と同じですが、アクティベーション機能が異なります。

 

画像ソース:牙

5)全体的なコード実装:

注:一般に、アイデンティティ関数は回帰問題使用できシグモイド関数はバイナリ分類問題使用できソフトマックス関数は多変量分類問題に使用できます3.5出力層の設計:

3.5.1 3種類の出力関数

1)恒等関数:そのまま直接出力され、回帰問題で使用されます

2)シグモイド関数:、バイナリ分類問題使用されます。

3)Softmax関数:、複数の分類問題使用されます。

それらの中で、softmax関数は、図に示すように、入力信号が各出力間で影響を受けることを意味します

コード:

3.5.2 softmax関数のオーバーフロー問題

xが大きいとe ^ xが爆発しオーバーフロー発生することは誰もが知っているため、改善する必要があります。

 3.5.3 Softmax関数の特性:

出力yが0〜1であり、それらの合計が1であることがわかります。したがって、出力yを確率問題に変えることができます。つまり、出力が大きいほど、確率が高くなります。上の図から、 y [2]が最大であることから、答えは2番目のカテゴリであることがわかります。さらに、e ^ xは単調増加関数であるため、上記の例では、要素のサイズとyのサイズの関係は変化せず、y [2]が最大です。したがって、実際には、softmax関数はまったく必要ありません。また、a要素を見れば、どの確率が最大であるかを知ることができます(softmaxは指数演算を必要とするため、計算量は非常に大きくなります)。

3.5.4出力層のニューロンの数

上図からわかるように、出力ニューロンの数はカテゴリの数によって決まり、出力結果が0〜9の10のカテゴリである場合、ニューロンの出力は10です。 

3.6手書き数字認識

次に、実際のアプリケーション、つまり手書き数字認識の古典的な例でアルゴリズムを使用します

コードのコメントは以下のとおりですので、個別に説明することはしません。

load_mnist関数は、読み取ったMNISTデータを「(トレーニングイメージ、トレーニングラベル)、(テストイメージ、テストラベル)」の形式で返します。

ディスプレイ番号

ニューラルネットワーク出力

単一処理とバッチ処理

上記の例から、入力層には784個のニューロン(28 * 28)があり、出力層には10個のニューロンがあることがわかります。非表示層の1-2層に50と100のニューロンがあると仮定すると、次のコード処理があります。 :

1)単一処理:

上記の関数の知識を使用して、トレーニング後に画像とラベル間の正確さを正式に判断できます。

2)バッチ処理:

上記の例(上記)から、1つの画像の入力(1 * 28 * 28)と出力(10のカテゴリの確率)の後の行列形状がわかります。

以下では、上記の例を計算のために一度に100個の画像にパックします。

 

バッチ処理の利点:画像を計算するたびに、io は一度に1枚の画像しか撮りません。今度は、計算一度に100 ioを使用します計算速度はioの速度よりも速いため、バッチ処理は全体的な計算で変化しますもっと早く

コード:

概要:

前の章のように、特定の重みを見つけ、各レイヤーの関数を介して出力する方法を考慮しないため、単純なニューラルネットワークが形成されます。

上記のパラメータについては後で説明します 

おすすめ

転載: blog.csdn.net/qq_37457202/article/details/107477089