開発者の皆さん、
パーセプトロンは、機械学習における最も単純かつ最も基本的な概念の 1 つです。これは、ニューラル ネットワークの基礎を形成するバイナリ線形分類器です。この投稿では、Python でパーセプトロンを最初から理解して実装する手順を説明します。
飛び込んでみましょう!
パーセプトロン は、バイナリ分類器の教師あり学習のための基本的なアルゴリズムです。入力特徴が与えられると、パーセプトロンは単純なしきい値関数に基づいてクラスを分離するのに役立つ重みを学習します。簡単に説明すると、次のようになります:
数学的には次のようになります:
f(x) = w1*x1 w2*x2 ... wn*xn b
場所:
f(x) がしきい値以上の場合、出力はクラス 1 です。それ以外の場合はクラス 0 です。
処理を軽量化するために、ここでは行列演算に NumPy のみを使用します。
import numpy as np
すべてを整理するために、パーセプトロンをクラスとして構築します。このクラスには、トレーニングと予測のメソッドが含まれます。
class Perceptron: def __init__(self, learning_rate=0.01, epochs=1000): self.learning_rate = learning_rate self.epochs = epochs self.weights = None self.bias = None def fit(self, X, y): # Number of samples and features n_samples, n_features = X.shape # Initialize weights and bias self.weights = np.zeros(n_features) self.bias = 0 # Training for _ in range(self.epochs): for idx, x_i in enumerate(X): # Calculate linear output linear_output = np.dot(x_i, self.weights) + self.bias # Apply step function y_predicted = self._step_function(linear_output) # Update weights and bias if there is a misclassification if y[idx] != y_predicted: update = self.learning_rate * (y[idx] - y_predicted) self.weights += update * x_i self.bias += update def predict(self, X): # Calculate linear output and apply step function linear_output = np.dot(X, self.weights) + self.bias y_predicted = self._step_function(linear_output) return y_predicted def _step_function(self, x): return np.where(x >= 0, 1, 0)
上記のコード内:
出力を簡単に視覚化できるように、小さなデータセットを使用します。これは単純な AND ゲート データセットです:
# AND gate dataset X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) y = np.array([0, 0, 0, 1]) # Labels for AND gate
それでは、パーセプトロンをトレーニングして、その予測をテストしてみましょう。
# Initialize Perceptron p = Perceptron(learning_rate=0.1, epochs=10) # Train the model p.fit(X, y) # Test the model print("Predictions:", p.predict(X))
AND ゲートの期待される出力:
import numpy as np
これにより、誤って分類された点のみパーセプトロンが更新され、徐々にモデルが正しい決定境界に近づきます。
トレーニング後の決定境界を視覚化します。これは、より複雑なデータセットを扱う場合に特に役立ちます。現時点では、AND ゲートを使用して物事を単純にしておきます。
パーセプトロンは線形分離可能な問題に限定されていますが、多層パーセプトロン (MLP) のようなより複雑なニューラル ネットワークの基礎です。 MLP では、隠れ層と活性化関数 (ReLU やシグモイドなど) を追加して、非線形問題を解決します。
パーセプトロンは、単純ですが基礎的な機械学習アルゴリズムです。その仕組みを理解し、一から実装することで、機械学習とニューラル ネットワークの基本についての洞察が得られます。パーセプトロンの美しさはそのシンプルさにあり、AI に興味がある人にとって完璧な出発点となります。
以上がPython でパーセプトロンを最初から実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。