개발새발
Perceptron (퍼셉트론) 본문
뉴런과 퍼셉트론
퍼셉트론: 인공신경망의 기원이 되는 알고리즘
입력 차원이 2차원인 퍼셉트론
Sum 한 값(여기서는 x1*w1+x2*w2) 이 임계치를 넘어서면 1, 아니면 0을 output으로 전달
θ=-b로 넘겨서 더 정돈된 형태로 만든 식
논리 연산자를 퍼셉트론으로 구현하기
1. AND 연산
결정 경계
(b, w1, w2) = (-1.5, 1, 1)
x2 = -x1 + 1.5
Output 데이터를 구분할 수 있는 직선 = 결정 경계
결정 경계는 하나가 아니라 무수히 많이 존재한다
2. NAND 연산
결정 경계
(b, w1, w2) = (1.5, -1, -1)
(b, w1, w2) = (0.7, -0.5, -0.5) -> x1 + x2 = 1.4
두 결정 경계 모두 가능하다
2. OR 연산
결정 경계
(b, w1, w2) = (-0.5, 1, 1) -> x1 + x2 = 0.5
퍼셉트론의 한계
XOR 연산은 선형 분류가 불가능하다! 아래와 같은 연산은 선 하나를 사용해서 파란색과 빨간색 점을 분리할 수 없다
퍼셉트론의 한계점 극복
다층 퍼셉트론 도입( -> 비선형 결정 경계)
연속 activation 함수 이용 => 인공 신경망
다층 퍼셉트론(MLP) : XOR 연산
import numpy as np
## 1. AND 연산
def AND(x1, x2):
b, w1, w2 = -1.5, 1, 1
y = x1 * w1 + x2 * w2 + b
if y <= 0:
return 0
else:
return 1
def AND(x1, x2):
X = np.array([1, x1, x2])
W = np.array([-1.5, 1, 1])
if np.dot(X, W) <= 0: # np.dot(X, W.T) = np.sum(X*W)
return 0
else:
return 1
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = AND(x[0], x[1])
print("AND", x, " = ", y)
## 2. Not AND 연산
def NAND(x1, x2):
X = np.array([1, x1, x2])
W = np.array([2, -1.5, -1])
if np.dot(X, W) <= 0: # np.dot(X, W.T) = np.sum(X*W)
return 0
else:
return 1
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = NAND(x[0], x[1])
print("NAND", x, " = ", y)
## 3. OR 연산
def OR(x1, x2):
X = np.array([1, x1, x2])
W = np.array([-0.5, 1, 1])
if np.dot(X, W) <= 0: # np.dot(X, W.T) = np.sum(X*W)
return 0
else:
return 1
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = OR(x[0], x[1])
print("OR", x, " = ", y)
## 4. XOR 연산
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
return AND(s1, s2)
'AI' 카테고리의 다른 글
잔소리 AI 봇 팀원 모집 성공!! (3) | 2024.12.26 |
---|---|
강화학습을 활용한 잔소리 AI 봇 팀원 모집 (2) | 2024.11.20 |
CNN 입문 (0) | 2024.11.03 |
딥러닝을 이용한 배터리 수명 예측 알고리즘 (1) | 2024.08.13 |