안녕하세요 개발자 여러분,
퍼셉트론은 머신러닝에서 가장 간단하고 기본적인 개념 중 하나입니다. 신경망의 기초를 형성하는 이진 선형 분류기입니다. 이 게시물에서는 Python에서 Perceptron을 처음부터 이해하고 구현하는 단계를 안내하겠습니다.
들어가자!
퍼셉트론은 이진 분류기의 지도 학습을 위한 기본 알고리즘입니다. 입력 특성이 주어지면 퍼셉트론은 간단한 임계값 함수를 기반으로 클래스를 구분하는 데 도움이 되는 가중치를 학습합니다. 간단한 용어로 작동 방식은 다음과 같습니다.
수학적으로는 다음과 같습니다.
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 또는 Sigmoid 등)를 추가하여 비선형 문제를 해결할 수 있습니다.
퍼셉트론은 간단하지만 기본적인 기계 학습 알고리즘입니다. 작동 방식을 이해하고 처음부터 구현함으로써 기계 학습 및 신경망의 기본 사항에 대한 통찰력을 얻습니다. 퍼셉트론의 아름다움은 단순함에 있으며 AI에 관심이 있는 모든 사람에게 완벽한 출발점이 됩니다.
위 내용은 Python에서 처음부터 퍼셉트론 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!