mei_13のPython講座 ロゴ

【Pythonコラム】Pythonで学ぶ多層パーセプトロン (MLP) ~ 初心者にもわかりやすく ~




Pythonで学ぶ多層パーセプトロン (MLP) ~ 初心者にもわかりやすく ~

人工知能、特に機械学習の世界でよく耳にする「多層パーセプトロン (MLP)」。なんだか難しそうに聞こえるかもしれませんが、実は基本的な概念は比較的シンプルで、Pythonを使って簡単に実装できます。今回は、MLPの仕組みとPythonでの基本的な実装について、初心者の方にもわかりやすく解説します。

多層パーセプトロン (MLP) とは?

MLPは、人間の脳の神経回路網(ニューラルネットワーク)を模倣した機械学習モデルの一つです。単純なパーセプトロンを複数層に重ねた構造を持つことから、この名前がついています。

MLPの構造は主に3つの層で構成されます。

  • 入力層: 入力データを受け取る層です。例えば、画像認識であれば、画像のピクセルデータが入力されます。
  • 隠れ層: 入力層と出力層の間に位置し、複数の層を持つことも可能です。ここで、入力データからより複雑な特徴を抽出します。
  • 出力層: 最終的な結果を出力する層です。例えば、画像に写っているものが「猫」か「犬」かを分類する場合、出力層は「猫」と「犬」に対応する2つのノードを持つことになります。

各層のノードは、前の層のノードと「重み」と呼ばれる数値で繋がっています。入力されたデータは、この重みを用いて計算され、次の層へと伝播していきます。また、各ノードには「活性化関数」が適用され、出力される値に非線形性を持たせることで、複雑な問題を解くことが可能になります。

MLPの仕組み:順伝播と逆伝播

MLPは、主に「順伝播」と「逆伝播」という2つのステップを経て学習します。

  1. 順伝播: 入力データが入力層から隠れ層、そして出力層へと順番に伝播していく過程です。各層で重みと活性化関数を用いた計算が行われ、最終的に出力層から予測結果が得られます。

  2. 逆伝播: 順伝播で得られた予測結果と正解データとの誤差を計算し、その誤差を元に、各層の重みを修正していく過程です。このプロセスを繰り返すことで、MLPはより正確な予測ができるように学習していきます。重みの修正には、勾配降下法などの最適化アルゴリズムが用いられます。

PythonでMLPを実装してみよう (scikit-learn)

PythonでMLPを実装するには、機械学習ライブラリであるscikit-learnが便利です。以下に簡単な例を示します。

```python from sklearn.neural_network import MLPClassifier from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris

# データのロード (今回はアヤメのデータセットを使用) iris = load_iris() X, y = iris.data, iris.target

# 訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# MLPClassifierのインスタンスを作成 mlp = MLPClassifier(hidden_layer_sizes=(10, 10), # 2層の隠れ層 (各層10ノード) activation='relu', # 活性化関数: ReLU solver='adam', # 最適化アルゴリズム: Adam random_state=42, max_iter=300) # 最大イテレーション数

# モデルの学習 mlp.fit(X_train, y_train)

# テストデータでの予測 y_pred = mlp.predict(X_test)

# 精度評価 from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy}") ```

このコードでは、まずscikit-learnから必要なモジュールをインポートします。次に、アヤメのデータセットをロードし、訓練データとテストデータに分割します。

MLPClassifierを使ってMLPのモデルを定義します。hidden_layer_sizesで隠れ層の構造を指定します。ここでは、2層の隠れ層を持ち、各層に10個のノードを持つように設定しています。activationは活性化関数を指定します。ここでは、ReLU (Rectified Linear Unit) を使用しています。solverは最適化アルゴリズムを指定します。ここでは、Adamを使用しています。random_stateは乱数シードを指定することで、実行結果を再現可能にします。max_iterは最大イテレーション数を指定します。

fitメソッドでモデルを学習させ、predictメソッドでテストデータに対する予測を行います。最後に、accuracy_scoreで予測の精度を評価します。

まとめ

MLPは、複雑な問題を解くことができる強力な機械学習モデルです。Pythonとscikit-learnを使えば、比較的簡単に実装することができます。 今回は基本的な実装を紹介しましたが、様々なパラメータを調整することで、さらに性能を向上させることができます。ぜひ、色々なデータセットで試してみてください。



< 主成分分析 (PCA)
コラム一覧に戻る
Convolutional Neural Network (CNN) >

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!