Over the limit
[AI] 퍼셉트론? 논리회로? 본문
퍼셉트론
- 입력 : 다수의 신호 -> 출력 : 하나의 신호
- 퍼셉트론 신호는 '흐른다/안 흐른다' 의 두 가지 값만 가짐
위의 그림에서,
- 입력 신호: x1, x2 / 출력 신호 : y / 가중치(weight) : w1, w2
- 원을 뉴런 또는 노드라고 부른다.
- 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다.
- 뉴런에서 전달 받은 신호의 총합이 임계값을 넘을 때만 출력한다.
이것을 수식으로 나타내면, 아래와 같다.
퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하며, 가중치가 클수록 해당 신호가 그만큼 더 중요함을 뜻한다.
가중치는 신호가 얼마나 잘(혹은 어렵게) 흐르는가를 통제한다는 점에서
전류에서 말하는 저항에 해당한다고 볼 수 있음
논리회로 (feat. 매개변수)
퍼셉트론의 매개변수 값을 정하는 것은 컴퓨터가 아니라 인간이다.
인간이 직접 학습 데이터를 보면서 매개변수의 값을 생각한다.
즉, 학습이란 적절한 매개변수 값을 정하는 작업이며, 사람은 퍼셉트론의 구조를 고민하고
컴퓨터에 학습할 데이터를 준다.
1. AND 게이트
두 입력이 모두 1일 때만 1을 출력, 그 외에는 0을 출력
+) 구현
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
파이썬 함수로 작성한다.
실행은 함수에 매개변수 입력해서 값을 출력시키면 된다.
AND(0,0) #0을 출력
AND(1,0) #0을 출력
AND(0,1) #0을 출력
AND(1,1) #1을 출력
AND 게이트 완성!
다른 게이트들도 이와 같이 구현하면 된다.
2. NAND 게이트
x1, x2가 모두 1일 때만 0을 출력하고, 그 이외는 1을 출력
AND 게이트를 구현하는 매개변수의 부호를 반전하면 NAND 게이트가 된다.
3. OR 게이트
입력 신호중 하나 이상이 1이면 출력이 1이 된다.
4. XOR 게이트
배타적 논리합..? 말이 더 어렵다. 그냥 자기 외에는 거부한다는 특성만 추가되었다고 이해하자.
지금까지 알아본 퍼셉트론으로는 XOR 게이트는 구현할 수 없음.
따라서 기존 게이트를 조합하여,
다층 퍼셉트론 형식으로 구현한다.
이러한 다층 퍼셉트론 구현 형식으로 컴퓨터를 표현하면 된다.
+) 구현
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
print('XOR :')
for x1, x2 in inputs:
y = XOR(x1, x2)
print('({x1}, {x2}) -> {y}'.format(x1=x1, x2=x2, y=y))
'Etc > AI' 카테고리의 다른 글
[AI] Facial Expression Recognition 라이브러리 및 데이터셋 분석 (1) | 2022.09.12 |
---|