機械学習ニューラルネットワークとPython実装

機械学習ニューラルネットワークとPython実装

ニューラル ネットワークは、機械学習のあらゆる側面に及ぶ幅広い用途に使用されます。この記事では、主にニューラル ネットワークの基本的な理論的概念と計算について簡単に紹介します。同時に、データ分類におけるニューラル ネットワークの応用についても紹介します。

[[246577]]

まず、回帰モデルまたは分類モデルを構築するときに、残差誤差を最小限に抑えるために、最小二乗法 (OLS) または平均尤度推定法 (MLE) のいずれかが使用されます。したがって、モデルを構築するときには損失関数が存在します。

ニューラル ネットワークも例外ではなく、同様の損失関数を持ちます。

回帰の場合:

分類について:

次に、同じ方法を使用して W を微分し、導関数がゼロのときに極値を見つけることができます。

式中のWについて。ここでは、3 層のニューラル ネットワークを例に挙げます。まず、ニューラル ネットワークの関連パラメータを紹介しましょう。

最初の層は入力層、2 番目の層は隠れ層、3 番目の層は出力層です。

X1 と X2 は W1 によって重み付けされた後、隠れ層に到達し、次に W2 によって重み付けされて出力層に到達します。

で、

我々は持っています:

これまでに、基本的な 3 層ニューラル ネットワークを構築しました。

損失関数を最小化したい場合は、その逆を見つける必要があります。これをバックプロパゲーションと呼びます。

W1 と W2 を別々に微分し、それぞれの極値を見つける必要があります。

右辺から逆算して、まず W2 を導出します。

損失関数の式に代入します。

次に、簡略化します。

ここまで簡略化した後、同様に W1 の導関数も取ることができます。

BP ネットワークを実行すると、損失関数の最終的なサイズを決定する逆誤差項があることがわかります。

実際の計算では、勾配解法を使用して極値点を探します。

要約すると、順方向伝播を使用してニューラル ネットワークを合理化し、回帰モデルと分類モデルを実現します。そして、損失関数を逆方向に計算すると、パラメーター W が最適解を持つようになります。

もちろん、線形回帰などのモデルと同様に、正規化項を追加して W パラメーターを制約し、モデルの偏差が小さすぎてテスト セットのパフォーマンスが低下するのを防ぐこともできます。

Python実装:

KERASライブラリの使用

線形回帰を解く:

  1. model.add(Dense(1, input_dim = n_features , activation = 'linear' , use_bias = True ))
  2. # 損失メトリックには平均二乗誤差を使用し、ADAMバックプロパゲーションアルゴリズムを使用する
  3. model.compile(損失= 'mean_squared_error' オプティマイザー= 'adam' )
  4. # ネットワークをトレーニングする(重みを学習する)
  5. # DataFrameからNumpyArrayに変換する必要があります
  6. 履歴=モデル.fit(X_train.values, y_train.values,エポック= 100 ,
  7. batch_size = 1 verbose = 2 validation_split = 0 )

多重分類問題の解決:

  1. # モデルを作成する
  2. モデル=シーケンシャル()
  3. model.add(Dense(64, activation = 'relu' , input_dim = n_features ))
  4. モデルを追加します(ドロップアウト(0.5))
  5. model.add(Dense(64, activation = 'relu' ))
  6. モデルを追加します(ドロップアウト(0.5))
  7. # ソフトマックス出力層
  8. model.add(Dense(7, activation = 'softmax' ))
  9. model.compile(損失= 'categorical_crossentropy' オプティマイザー= 'adam' メトリック= ['accuracy'])
  10. model.fit(X_train.values、y_train.values、エポック= 20 バッチサイズ= 16 )
  11. y_pred =モデル予測(X_test.値)
  12. y_te = np .argmax(y_test.values、= 1 )
  13. y_pr = np .argmax(y_pred,= 1 )
  14. 印刷(np.unique(y_pr))
  15. 分類レポートを印刷します(y_te, y_pr)
  16. 混乱行列を印刷します(y_te, y_pr)

最適なパラメータを選択すると、解決方法は多数あります。ここでは、設定されたすべてのパラメータを走査して最適なパラメータを取得するブルートフォース検索方法である gridsearchcv という方法を紹介します。

  1. sklearn.model_selection から GridSearchCV をインポートします
  2. def create_model(オプティマイザ= 'rmsprop' ):
  3. モデル=シーケンシャル()
  4. model.add(Dense(64, activation = 'relu' , input_dim = n_features ))
  5. モデルを追加します(ドロップアウト(0.5))
  6. model.add(Dense(64, activation = 'relu' ))
  7. モデルを追加します(ドロップアウト(0.5))
  8. model.add(Dense(7, activation = 'softmax' ))
  9. model.compile( loss = 'categorical_crossentropy' optimizer optimizer = optimizer、 metrics = ['accuracy'])
  10.   
  11. リターンモデル
  12. モデル= KerasClassifier ( build_fn = create_model verbose = 0 )
  13. オプティマイザー= ['rmsprop']
  14. エポック= [5, 10, 15]
  15. バッチ= [128]
  16. param_grid = dict ( optimizer =オプティマイザ epochs epochs = エポック、 batch_size =バッチ verbose = ['2'])
  17. グリッド= GridSearchCV (推定器=モデル param_grid param_grid =param_grid)
  18. グリッドフィット(X_train.値、y_train.値)

<<:  機械学習におけるモデルのバイアスを理解する

>>:  すべてのデータ サイエンティストが知っておくべき 19 の機械学習アルゴリズム

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

AESアルゴリズムを簡単に説明すると

AESアルゴリズムAES (Advanced Encryption Standard) は、2001...

ハルビン工科大学と快手が共同でCogGPTを提案:大規模モデルにも認知反復が必要

認知科学の分野では、人間が継続的な学習を通じて認知を変化させるプロセスを認知ダイナミクスと呼びます。...

...

AIがコンテンツマーケティングを進化させる方法

デジタル メディアはほぼすべての人の日常生活に浸透し、私たちのあらゆる活動に永続的な影響を及ぼしてい...

...

清華大学チームは、蛍光画像から自己教師あり方式でノイズを除去する空間冗長性ノイズ除去トランスフォーマー法を開発

高い信号対雑音比を備えた蛍光イメージングは​​、生物学的現象の正確な可視化と分析の基礎となっています...

機械学習プロジェクトでオプティマイザーを選択する方法

導入いくつかの一般的なオプティマイザーを紹介し、その長所と短所を分析し、オプティマイザーを選択するた...

ドローンは緊急通信の発展に役立ちますが、この3つのポイントが重要です。

近年、インターネットの急速な発展に伴い、通信ニーズが継続的に高まり始めており、通信保証能力がますます...

...

...

ソフトウェアプログラマー試験: 最もシンプルなコード実装による最速のソートおよび検索アルゴリズム

アルゴリズムの中心的な問題はソートと検索です。これら 2 つの分野は最も広く使用され、最も徹底的に研...

...

Python+AIで静止画像を動かす

こんにちは、みんな。短い動画を見ているときに、こんな動画を見たことはありませんか?動画の中で、人物の...

NeurIPS 2023 入学結果が発表され、合格率は 26.1% でした

NeurIPS は世界で最も権威のある AI 学術会議の 1 つです。正式名称は Neural I...