[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