📊 Neural Network (퍼셉트론)


📌 퍼셉트론 (Perceptron)이란?

  • 정의
    - 단층 신경망 = Layer 1개 + 노드(뉴런) 1개
    - 각 데이터에 가중치(weight)을 부여해 노드(뉴런)에서 가중합을 시킨다.
    - 가중합에 대해 활성화함수에 적용하여 출력값을 계산한다.
    - 학습횟수(epoch)를 주어, 최소의 손실(loss)를 가지는 최적의 가중치(weight)를 구해 나간다.


📌 단층 퍼셉트론(신경망) 특징

  • 특징
    - 한 개의 Layer만 가진다.
    XOR 문제 해결 불가능
    선형회귀선을 사용하기 때문이다.


📌 다층 퍼셉트론(신경망) 특징

  • 특징
    - 두 개 이상의 Layer를 가진다.
    XOR 문제 해결 가능
    다차원 회귀선을 사용하기 때문이다.









📊 단층 퍼셉트론 실습


📌 단층 퍼셉트론 실습) 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 문제를 해결하지 못함









📊 다층 퍼셉트론 실습


📌 다층 퍼셉트론 실습) 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 문제를 해결함


profile
데이터 사이언티스트를 목표로 하는 개발자

0개의 댓글