[AI]/인공지능 이론 및 실습
[인공지능] Perceptron이란? Single-Layer Perceptron과 Multi-Layer Perceptron(MLP)의 차이점
seom-j
2024. 2. 3. 15:02
📌 Perceptron이란?
이진 분류를 위한 간단한 인공 뉴런 모델
입력 특성과 그에 상응하는 가중치의 합을 계산한 뒤,
그 값을 활성화 함수에 대입하여 특정 값(일반적으로 이진 분류에서는 0 또는 1)을 예측하는 데에 사용
📌 Single-Layer Perceptron
하나의 층으로만 구성된 퍼셉트론 (이때, input layer는 제외)
선형 분리 가능한 문제만을 해결
📌 Multi-Layer Perceptron(MLP)
여러 개의 은닉층을 가진 신경망
각 은닉층에서는 입력과 가중치의 합에 편향을 더한 값을 활성화 함수에 적용
➡️ 비선형 문제를 해결할 수 있음
: 각 층에서의 활성화 함수를 통해 신경망에 비선형성 특성을 더해줌으로써 복잡한 패턴을 학습할 수 있게 됨
📌 Single-Layer Perceptron을 활용한 선형 분류 실습 코드
『
다양한 Logic Gate를 구현해보자.
즉, 분류 선에 해당하는 가중치들을 찾아보자.
』
1. AND Logic Gate - x1, x2 둘 다 1이어야만 1
def AND(x1, x2):
w1, w2, b = 0.5, 1., -1.5 # 랜덤 조정
x = torch.tensor([x1, x2])
w = torch.tensor([w1, w2])
f = torch.dot(w, x) + b
if f < 0:
return 0
else:
return 1
print(AND(0., 0.), AND(0., 1.), AND(1., 0.), AND(1., 1.))
## 0 0 0 1
2. NAND Logic Gate - x1, x2 둘다 1이 아닐 경우 1
def NAND(x1, x2):
w1, w2, b = -1., -1., 1. # 랜덤 조정
x = torch.tensor([x1, x2])
w = torch.tensor([w1, w2])
f = torch.dot(w, x) + b
if f < 0:
return 0
else:
return 1
print(NAND(0., 0.), NAND(0., 1.), NAND(1., 0.), NAND(1., 1.))
# 1 1 1 0
3. OR Logic Gate - x1, x2 둘 다 0이 아닐 경우 1
def OR(x1, x2):
w1, w2, b = 1., 1., -1. # 랜덤 조정
x = torch.tensor([x1, x2])
w = torch.tensor([w1, w2])
f = torch.dot(w, x) + b
if f < 0:
return 0
else:
return 1
print(OR(0., 0.), OR(0., 1.), OR(1., 0.), OR(1., 1.))
# 0 1 1 1
4. XOR Logic Gate - x1과 x2가 다를 경우 1
⬇️ 아래 사진과 같이 분류선이 비선형 ! Single Layer로는 분류 불가능, 여러 층을 거쳐 분류할 수 있음
def XOR(x1, x2):
x = torch.tensor([x1, x2])
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
return AND(float(s1), float(s2)) # 여러 층을 거쳐 생성
print(XOR(0., 0.), XOR(0., 1.), XOR(1., 0.), XOR(1., 1.))
# 0 1 1 0