본문 바로가기
2023-1/인공지능

퍼셉트론의 학습

by 철없는민물장어 2023. 4. 19.
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

댓글