ニューラルネットワーク分類アルゴリズムの応用と実現

目次

ニューラルネットワーク分類アルゴリズムの応用と実現

ニューラル ネットワーク アルゴリズムの機能

1) ブラックボックスアルゴリズム

2) データ量

3) 高い計算能力と開発コスト

ニューラル ネットワーク アルゴリズム アプリケーション


ニューラルネットワーク分類アルゴリズムの応用と実現

ニューラル ネットワーク アルゴリズムの機能

深層学習の本質はニューラル ネットワーク アルゴリズムであることはわかっています (深層学習はニューラル ネットワーク アルゴリズムの一分野です)。理論的には、データと隠れ層の量が十分であれば、ニューラル ネットワーク アルゴリズムは任意の方程式 (関数) を当てはめることができます。ニューラル ネットワーク アルゴリズムは、非常に優れたスケーラビリティを持つネットワーク構造を持つアルゴリズム モデルであり、ニューラル ネットワーク内の各ノードの重みパラメータを調整することにより、分類効果が大幅に向上します。一般に、ニューラル ネットワーク アルゴリズムには次の特徴があります。

1) ブラックボックスアルゴリズム

「ブラック ボックス アルゴリズム」とも呼ばれるニューラル ネットワーク アルゴリズムは、ニューラル ネットワーク モデルがどのように学習されたかを外部から知ることができないため、たとえば、予測精度 97% の猫の顔認識モデルを使用すると、場合によっては子犬の顔写真を子猫に一般化するのは説明がつかないため、ニューラル ネットワーク アルゴリズムは「ブラック ボックス アルゴリズム」とも呼ばれています。
 


図 1: ブラックボックス アルゴリズム


ニューラル ネットワーク アルゴリズムのこの機能により、一部のシナリオはニューラル ネットワーク アルゴリズムの使用に適していません。たとえば、銀行は、予測エラーが発生すると、銀行はユーザーの信用度を追跡することができないため、ユーザーが信用を持っているかどうかを判断するためにニューラル ネットワーク アルゴリズムを使用しません。情報源に基づいて判断を誤ると、顧客に合理的な説明ができなくなります。

2) データ量

インターネットが未発達だった 1970 年代から 1980 年代には、データ量の不足がニューラル ネットワークの開発を妨げる大きな要因でした。従来の機械学習アルゴリズムと比較して、優れたニューラル ネットワーク モデルをトレーニングするには、多くの場合、より多くのデータ (少なくとも数千、さらには数百万のラベル付きサンプル) が必要になります。

たとえば、顔認識には、怒っている、楽しい、悲しい、メガネをかけている、ぼやけたなど、さまざまなポーズやスタイルの顔が必要です。つまり、多ければ多いほど良いのです。優れたニューラル ネットワーク モデルをトレーニングするには、大量のデータ セットが非常に重要です。ニューラル ネットワークが取得するデータが多ければ多いほど、そのパフォーマンス能力が向上し、トレーニングされたモデルの汎化能力も向上します

注: 数十年の蓄積を経て、現在までに、 Kaggle データセット、Amazon データセット、UCI 機械学習リソース ライブラリ、Microsoft データセットなど、多数の公開データセットが利用可能になっています。

3) 高い計算能力と開発コスト

コンピューティングの点では、ニューラル ネットワーク アルゴリズムは従来のアルゴリズムよりも多くのコンピューター リソースを消費し、複雑な深層学習モデルの場合、優れたモデルをトレーニングするのに数週間かかる場合もあります。しかし、1970 年代から 1980 年代のコンピューター ハードウェアのレベルでは、このような大規模な計算を実現することはほとんど不可能です。したがって、コンピューターのハードウェア性能もニューラル ネットワークの開発に影響を与える要因の 1 つです。

21世紀に入ってからコンピュータのハードウェア性能は急速に向上し、ニューラルネットワークの発展には有利な外部環境が整いました。

2017年5月、囲碁名人であるAlphaGoロボットは、何もない状態から学習し、3日間自らを訓練し、490万回対局し、人類ナンバーワンの囲碁名人である柯潔氏に勝利した。AlphaGo の高度なバージョンとして、AlphaGo Zero は 40 日間自らを訓練し、2,900 万回対局し、ついに前身の AlphaGo ロボットを 100 対 0 の記録で破りました。そして、これらのデータの背後には強力なコンピューティング能力がサポートされています。

一方で、ニューラルネットワークモデルの構築プロセスは比較的複雑で、活性化関数の選択や重みの調整などに時間がかかるため、開発サイクルは比較的長くなります。つまり、ニューラル ネットワーク アルゴリズムは比較的高価なアルゴリズムであり、従来の機械学習アルゴリズムよりも複雑な問題を解決できることも決定しています。次の表は、ニューラル ネットワークの特性を簡単にまとめたものです。
 

プロジェクト 説明する
アドバンテージ ネットワーク構造はスケーラビリティに優れており、非線形関数などの複雑なデータ分布に適合し、重みパラメータを調整することで強力な汎化能力を備えたモデルを取得できます。
欠点がある 解釈性が悪く、パラメータ調整が経験に依存し、局所最適解に陥ったり、勾配消失や勾配爆発などの問題が発生する可能性があります。
応用分野 ニューラル ネットワーク アルゴリズムは、強力な適合能力とテキスト分類などの幅広い応用分野を備えています. ニューラル ネットワークの一分野として、ディープラーニングは現在最も人気のある研究方向でもあります. 画像処理、言語などの多くの分野で大きな成果を上げています認識と自然言語処理の優れたパフォーマンス。

ニューラル ネットワーク アルゴリズム アプリケーション

Shenjiang Network の関連知識についてここまでお話してきましたが、すべては実際的な問題を解決するためのものです。それでは、それをプログラミングでどのように使用するのでしょうか? Python 機械学習 Sklearn ライブラリは、多層パーセプトロン アルゴリズム (多層パーセプトロン、または MLP) を提供します。これはニューラル ネットワーク アルゴリズムと呼ばれるもので、sklearn.neural_network パッケージにカプセル化されており、次の 3 つのニューラル ネットワーク アルゴリズム API を提供します。

  • neural_network.BernoulliRBM、ベルヌーイ制限ボルツマン マシン アルゴリズム、教師なし学習アルゴリズム。
  • neural_network.MLPClassifier、ニューラル ネットワーク分類アルゴリズム、分類問題を解決するために使用されます。
  • neural_network.MLPRgression、ニューラルネットワーク回帰アルゴリズム、回帰問題を解決するために使用されます。


次に、ニューラル ネットワーク分類アルゴリズムを使用して、アヤメの花の分類問題を解決します。これを行う前に、次のように、neural_network.MLPClassifier 分類子の共通パラメータを理解する必要があります。
 

名前 説明する
隠しレイヤーのサイズ タプルまたはリスト パラメーター。シーケンス内の要素の数は、隠れ層がいくつあるかを示し、各要素の値は、この層にあるニューロン ノードの数を示します ((10,10) など)。これは 2 つの隠れ層を意味します。 , 各層のニューロン ノードに 10 個あります。
アクティベーション 隠れ層活性化関数、パラメーター値にはアイデンティティ、ロジスティック、tanh、relu が含まれます。デフォルトは線形整流関数 (非線形性の補正) である「relu」です。
ソルバー 重み最適化アルゴリズム、lbfgs、sgd、adam。このうち lbfg はより堅牢ですが、大規模なモデルや大規模なデータセットでの調整には時間がかかります。adam の効果のほとんどは優れていますが、データの影響を非常に受けやすいです。スケーリング、sgd は一般的には使用されません
アルファ L2 正則化パラメータ (alpha = 0.0001 (弱い正則化) など)
学習率 学習率、パラメータ値定数、インベースケーリング、適応型
learning_rate_init 初期学習率。ソルバーが sgd または adam の場合にのみ使用されます。
max_iter 最大反復回数
シャッフル 各反復でサンプルをクリーンにするかどうか。このパラメーター値は、ソルバー パラメーター値が sgd または adam の場合にのみ使用されます。
ランダム状態 乱数シード
トール 最適化アルゴリズムの終了条件は、反復間の関数の差が tol 以下の場合に停止します。


アヤメのデータ セットには、Iris-setosa、Iris-versicolor、Iris-virginica の 3 つのカテゴリが含まれており、合計 150 のレコードがあり、各カテゴリには 50 のレコードがあります。各レコードには 4 つの特徴 (センチメートル単位) があります。

  • がく片の長さ:がく片の長さ
  • がく片の幅:がく片の幅
  • petallength: 花びらの長さ
  • petalwidth: 花びらの幅


2 つのカテゴリ (0 と 1、アイリス アヤメとアイリス バーシカラー) と 2 つの特徴属性 (「がく片の長さ (cm)」、「花弁の長さ (cm)」) のサンプル ラベル値を取得し、ニューラル ネットワークを使用します。分類アルゴリズムは、データセット内の 2 種類の虹彩 0 と 1 を正しく分類します。コードは次のようになります。

 
 
  1. パンダをPDとしてインポートする
  2. numpyをnpとしてインポート
  3. matplotlib.pyplotをpltとしてインポート
  4. sklearn インポート データセットから
  5. sklearn.preprocessing から StandardScaler をインポート
  6. sklearn.model_selection からのインポート train_test_split
  7. sklearn.neural_network から MLPClassifier をインポート
  8. def main():
  9. iris = datasets.load_iris() # アイリスデータセットをロードする
  10. # pandas でデータセットを処理する
  11. データ = pd.DataFrame(iris.data, columns=iris.feature_names)
  12. print(iris.feature_names)
  13. #Dataset タグ値 iris.target
  14. データ['クラス'] = iris.target
  15. # ここでは 0/1 の 2 種類の虹彩のみが取得され、設定された種類は 2 に等しくありません
  16. データ = データ[データ['クラス'] != 2]
  17. # データセットの正規化と正規化
  18. スケーラー = StandardScaler()
  19. # 2つの固有値(属性)を選択
  20. X = データ[['がく片の長さ (cm)', '花びらの長さ (cm)']]
  21. # 平均と標準偏差を計算する
  22. スケーラー.フィット(X)
  23. # データセットの標準化 (データ変換)
  24. X = スケーラー.transform(X)
  25. # 'class' は列ラベルで、100 個のサンプルのリストを読み取ります
  26. Y = データ[['クラス']]
  27. # データセットを分割する
  28. X_train、X_test、Y_train、Y_test = train_test_split(X, Y)
  29. # ニューラルネットワーク分類器を作成する
  30. mpl = MLPClassifier(solver='lbfgs'、activation='logistic')
  31. # ニューラルネットワークモデルをトレーニングする
  32. mpl.fit(X_train, Y_train)
  33. # モデル予測スコアを出力します
  34. print('スコア:\n', mpl.score(X_test, Y_test))
  35. # グリッド領域を分割する
  36. h = 0.02
  37. x_min、x_max = X[:, 0].min() - 1、X[:, 0].max() + 1
  38. y_min、y_max = X[:, 1].min() - 1、X[:, 1].max() + 1
  39. xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))
  40. Z = mpl.predict(np.c_[xx.ravel(), yy.ravel()])
  41. Z = Z.reshape(xx.shape)
  42. #立体的な等高線図を描き、等高線を塗りつぶす
  43. plt.contourf(xx, yy, Z,cmap='夏')
  44. # 散布図を描く
  45. class1_x = X[Y['クラス'] == 0, 0]
  46. class1_y = X[Y['クラス'] == 0, 1]
  47. l1 = plt.scatter(class1_x, class1_y, color='b', label=iris.target_names[0])
  48. class2_x = X[Y['クラス'] == 1, 0]
  49. class2_y = X[Y['クラス'] == 1, 1]
  50. l2 = plt.scatter(class2_x, class2_y, color='r', label=iris.target_names[1])
  51. plt.legend(handles=[l1, l2], loc='best')
  52. plt.grid(真)
  53. plt.show()
  54. 主要()

モデルのスコアは 1.0、つまりモデルの予測精度が 100% で、出力効果図は次のとおりです。
 

ニューラルネットワーク分類の効果図


図 2: 分類レンダリング


以上がニューラルネットワークアルゴリズムの実践例であり、ニューラルネットワークは複雑であるにもかかわらず、学習済みモデルの予測精度が従来の機械学習アルゴリズムとは比較にならないほど高いことがわかります。ニューラル ネットワーク アルゴリズムは、分類タスクや回帰タスクなど、大規模なデータ分析タスクの処理に適しており、いずれも優れた表現力を備えています。

おすすめ

転載: blog.csdn.net/qq_38998213/article/details/132297414
おすすめ