機械学習ニューラルネットワークと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 の機械学習アルゴリズム

ブログ    
ブログ    
ブログ    

推薦する

科学:ChatGPTは労働者と非労働者の間の格差を縮小する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

IoT、AI、デジタルツインを建物に統合する方法

モノのインターネット、人工知能、デジタルツインをどのように統合するのか?デジタル ツインは、物理世界...

顔認証決済には注意しましょう。お金を盗まれる可能性があります

受動的な収集は防御が難しい一部の学校では、この技術を搭載したカメラを使用して、生徒の授業状況を監視し...

このレーシングAIはもはや短期的な楽しみを求めるのではなく、長期的な戦略を考慮することを学んだ。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ChatGPTの愚かさに対する新たな説明: 世界はAIによって変化し、訓練されたときとは異なっている

学術界は、ChatGPT がなぜ愚かになったのかという新たな説明を持っています。カリフォルニア大学サ...

Facebook の 10,000 ワードの記事: すべての AI モデルが PyTorch フレームワークに移行

PyTorch は 2017 年のリリース以来、GitHub の人気リストで急速にトップに立ち、一時...

...

メリット、PyTorch中国語版の公式チュートリアルはこちら

[[275569]] PyTorchは近年人気のディープラーニングフレームワークですが、公式の中国語...

将来、音声認識はどのような商業シナリオに適用される可能性がありますか?

Companies and Markets の評価レポートでは、世界の音声認識市場は今後さらに多様...

マイクロソフトは、劣化が著しい古い写真を復元できる新しいアルゴリズムを開発した。

海外メディアの報道によると、マイクロソフト研究チームのZiyu Wan氏、Zhang Bo氏らは、デ...

...

...

...

分散機械学習フレームワークRay

[[422916]] Python 中国語コミュニティ (ID: python-china) 1....