- 정의
- 단층 신경망 = Layer 1개 + 노드(뉴런) 1개
- 각 데이터에 가중치(weight)을 부여해 노드(뉴런)에서 가중합을 시킨다.
- 가중합에 대해 활성화함수에 적용하여 출력값을 계산한다.
- 학습횟수(epoch)를 주어, 최소의 손실(loss)를 가지는 최적의 가중치(weight)를 구해 나간다.
- 특징
- 한 개의 Layer만 가진다.
→ XOR 문제 해결 불가능
→ 선형회귀선을 사용하기 때문이다.
- 특징
- 두 개 이상의 Layer를 가진다.
→ XOR 문제 해결 가능
→ 다차원 회귀선을 사용하기 때문이다.
- 1. 라이브러리 Import
- sklearn.linear_model.Perceptron : 단층 신경망import numpy as np from sklearn.linear_model import Perceptron from sklearn.metrics import accuracy_score
- 2. 데이터 준비
# XOR 연산 처리 feature = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) label = np.array([0, 1, 1, 0])
- 3. 단층 퍼셉트론 모델
- max_iter 속성 : 학습횟수(epoch)
- eta0 속성 : 학습률(학습크기)
- verbose 속성 : 각 epoch마다 학습 내용 출력 여부 결정 (0: 안보여줌, 1: 보여줌)model = Perceptron(max_iter=10, eta0=0.1, verbose=1) model.fit(feature, label) print(model) # Perceptron(eta0=0.1, max_iter=10, verbose=1)
- 4. 예측값, 실제값 비교
y_pred = model.predict(feature) print('예측값 : ', y_pred) print('실제값 : ', label) # 예측값 : [0 0 0 0] # 실제값 : [0 1 1 0]
- 5. 모델 성능 평가
acc = accuracy_score(label, y_pred) print('모델 정확도 : ', acc) # 모델 정확도 : 0.5
- 6. 결과
XOR 문제를 해결하지 못함
- 1. 라이브러리 Import
- sklearn.neural_network.MLPClassifier : 다층 신경망import numpy as np from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score
- 2. 데이터 준비
# XOR 연산 처리 feature = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) label = np.array([0, 1, 1, 0])
- 3. 단층 퍼셉트론 모델
- hidden_layer_sizes 속성 : 은닉층 크기 지정hidden_layer_sizes 속성값 : (노드개수, 은닉층개수)
- activation 속성 : 활성화 함수(softmax, logistic, relu, ....)
- solver 속성 : 최적화 함수(adam, nadam, ....)
- learning_rate_init 속성 : 학습률(학습 크기)
- max_iter 속성 : 학습횟수(epoch)
- verbose 속성 : 학습 내용 출력 여부model = MLPClassifier( # 한 층에 노드 개수 : 2개 # 총 Layer 개수 : 10개 hidden_layer_sizes=(2,10), max_iter=100, learning_rate_init=0.01, activation='relu', solver='adam', verbose=1 ) model.fit(feature, label) print(model) # MLPClassifier(hidden_layer_sizes=(2, 10), learning_rate_init=0.01, max_iter=100, verbose=1)
- 4. 예측값, 실제값 비교
y_pred = model.predict(feature) print('예측값 : ', y_pred) print('실제값 : ', label) # 예측값 : [0 1 1 0] # 실제값 : [0 1 1 0]
- 5. 모델 성능 평가
acc = accuracy_score(label, y_pred) print('모델 정확도 : ', acc) # 모델 정확도 : 1.0
- 6. 결과
XOR 문제를 해결함