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

ブログ    

推薦する

...

コンピュータビジョンがビジネス課題の解決に役立つ 5 つの方法

自動運転車、交通標識検出、顔認識、セルフサービスチェックアウト。 これらすべての高度なソリューション...

...

優れたビジネス機械学習のユースケース 5 つ

ビッグデータと機械学習を組み合わせることで、ビジネスの競争優位性を獲得するために必要な、すでに保有し...

ロボットが人間のように学習できるようにする Google RT-2 AI モデルとは何ですか?

ビッグモデルが急増し、仮想世界から現実世界に進出しています。 Google DeepMind は最近...

1 つの記事で 10 個のアルゴリズムをカバーします。基本的なグラフアルゴリズムの視覚的な説明

[[343053]]グラフは、ソーシャル メディア ネットワーク、Web ページやリンク、GPS の...

Nature: 室温超伝導体はなぜ持続できないのか?

世界中で白熱した議論を巻き起こしたLK-99論争が終結した後、ネイチャー誌の見出しに再び「室温超伝導...

...

AIとIoTが公共交通機関をよりスマートかつ安全に

スマート デバイスを通じてモビリティを向上させる人工知能 (AI) ソリューションは、買い物習慣から...

独身者は幸せだ!スタンフォード大学の教授がキューピッドに変身、AIアルゴリズムの矢印が真実の愛を見つけるのを手伝う

今日の多くの若い男女にとって、オンラインデートは恋愛関係を見つけるための第一歩です。アメリカでは、こ...

アンドリュー・ン氏の新たな動き:「データ中心のAI」の拠点となる新たなMLリソースサイトを設立

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

デジタルヘルスと医療AIベンチャーキャピタル投資は2021年第1四半期に42億ドルに達した

CB Insightsのデータによると、遠隔医療は2021年第1四半期に139件の取引で過去最高の4...

...