728x90
반응형
퍼셉트론의 학습
퍼셉트론의 학습 알고리즘 개요
-학습 데이터셋 준비(입력,정답)
-가중치 초기값 설정
-각 입력에 대해 오차가 감소하도록 가중치 조정
-모든 입력이 정확하게 분류될 때까지 여러번(Many epoch) 반복
학습데이터는 N개의 학습샘플로 구성된다.
각 학습샘플은 퍼셉트론 입력과 정답 쌍(xi,di)으로 구성된다.
각 xi를 퍼셉트론에 입력했을 때 산출되는 yi를 di(정답)와 비교하여 에러를 정정한다.
이 한 번의 과정을 에폭:epoch 라고 한다. 에폭을 많이 돌릴수록 정답에 가까워진다(실제로는 안 그럴수도..)
import numpy as np
#아래는 학습데이터임
X = np.array([[0,0], [1,0], [0,1], [1,1]])
Y = np.array([-1,-1,-1,1])
w=np.array([0.2 , 1.0 , 1.0]) # [bias, w1, w2]
#초기값은 마음대로
def fit(x):
return np.dot(x, w[1:]) + w[0]
#X와 w를 내적하고 bias를 더함
def predict(X):
return np.where(fit(X) > 0, 1, -1) #조건이 맞으면 1, 그렇지 않으면 -1
#np.where은 넘파이 제공하는 if-else라고 보면 됨..
print("before traning : ", w)
for epoch in range(50): #에폭:50
for x_val, y_val in zip(X, Y): #X에서, Y에서 하나씩 꺼냄
update = 0.01 * (y_val - predict(x_val)) #정답이면 0이, 아니면.. 뭐가 나오겠지
w[1:] += update * x_val
w[0] += update
print("after traning : ", w)
퍼셉트론 학습은 선형분리 가능한 데이터에 대해서는 무조건 수렴한다.
유한개의 학습단계 내에 최적 해에 도달.
퍼셉트론 학습 알고리즘의 완전성을 나타냄
선형분리 가능하지 않은 데이터에 대해서는 발산 또는 진동한다.
728x90
반응형
'2023-1 > 인공지능' 카테고리의 다른 글
기울기 강하 기법 (0) | 2023.06.12 |
---|---|
FNN 원리와 구현 (0) | 2023.04.19 |
신경망 (0) | 2023.04.19 |
신경망, 퍼셉트론 (0) | 2023.04.19 |
넘파이를 알아보자(numpy) (0) | 2023.04.18 |
댓글