知/job지식

MLP(Multi-Layer Perceptron)의 직관

콰트로로켓단 2024. 4. 24. 13:15
728x90

개요

이번 MLP의 모습이나 용어보다 각 퍼셉트론의 역할과 왜 층을 쌓는지에 대해 이야기하겠다.

 

인공지능의 학습 포스트의 예시에서 알 수 있듯이 단 하나의 Perceptron으로도 판단을 내릴 수 있다. 

하지만 한 번 접어 선을 구부리는 것으로는 더 복잡한 모양을 표현하기 어렵다. 

예로 XOR gate를 만들기 위해 활성화함수를 Sigmoid만 사용해 하나의 Perceptron으로 만들 수 있을까?

결론부터 말하면 불가능이다.  

 

왜 하나만으로 불가능일까

먼저 가정이 Sigmoid라는 Activation Function만 사용하는 것이다. Sigmoid는 선을 구부리면서 값의 최대 최솟값을 0~1 값으로 고정할 수 있으며 확률로 계산 가능하기 때문에 사용한다. 물론 Activation Function을 XOR에 맞게 만들면 가능은하다. 하지만 우리는 모르는 것을 간단한 것으로 알아가기 위한 것이므로 Activation Function은 간단하면서 계산하기 좋은 것으로 사용한다. 

 

선을 구부리는 것은

선은 어떤 것을 말하는 걸까

작은 것을 보면 wx+b를 말하는 것이고, 크게 보면 WX+b를 말하는 것이다. 

wx+b는 입력 값 하나(x)에 대응하는 하나의 가중치 w이다. 

WX+b는 모든 입력 값(X)에 모든 대응하는 가중치 W이다. 

 

activation 예제 1

작게 보면 빨간색 선을 초록색으로 구부리는 것이다.

 

And gate 시각화

크게 보는 관점에서의 모양이다. 다행히도 입력차원이 2개뿐이라 시각적으로 표현할 수 있다.

선이라 표현을 했지만 면이 될 수도 공간이 될 수 도, 더욱 고차원이 될 수 있다. 

보라색 면은 이전에 만들었던 AND gate를 그린 것이다.

입력 값이 (0,0), (1,0), (0,1) 일 때는 0에 근접한 값을 내놓으며 (1,1) 일 때 1에 근접한 값을 내놓는다. 

 

 

 

  

And gate 시각화 및 theshold1And gate 시각화 및 theshold 2

결과 값(z)이 0.5 이상인 지역과 아닌 지역을 위 그림 같이 볼 수 있다.

0.5를 기준으로 0.5보다 크면 1, 작으면 0이라고 하자.

여담으로 이는 분류하는 작업(Classification)과 동일하다. 

perceptron으로 표현

보라색 면을 표현하는 퍼셉트론이다. 이전 예시와 동일하다.

sigmoid에 어떠한 실수 일차함수를 넣어도 한 번 바닥을 향해 뻗은 면을 다시 휘어 올릴 수 없다. 

 

어떻게 더 복잡한 모양을 만들까(왜 층을 늘리는가)

일단 XOR이 어떻게 생겼는지 보자. 다음 표와 같이 입력(X, Y)에 대응하여 출력(Z)을 내놓은 역할이다.

X Y Z
0 0 0
1 0 1
0 1 1
1 1 0

XOR gate
target
not gateand gate

이 글의 모델 설명에서  알 수 있듯 모양에 맞게 조합하면 된다. 

위 두 면을 잘 더하면 빨간색 면을 만들 수 있다.

XOR gate 퍼셉트론으로 표현

퍼셉트론으로 표현하면 위와 같다.

민트와 보라를 하나의 층(Layer)으로 생각하면 이미 2개의 층을 쌓은 것과 같다.

1층(보라, 민트), 2층(빨강)

이렇게 여러 층을 쌓는 것을 MLP라고 부른다.

 

여기서 얻을 직관은 다음과 같다.

입력값에 가까운 층은 단순한 곡선이다. 그다음층은 그 곡선을 조합하는 것이다.

더욱 복잡한 모양을 만들기 위해서는 층을 쌓고,

조합할 도구(각 층의 퍼셉트론 개수)가 부족하다고 생각이 들면 층에서 퍼셉트론의 개수를 늘려야 한다.

 

로이

안녕하세요, 콰트로 로켓단 로이 입니다.

이번에 왜 MLP 같이 층을 쌓는지 이유와 역할에 대한 직관을 알아봤습니다.

 

 

 

 

728x90

' > job지식' 카테고리의 다른 글

Resnet 직관  (0) 2024.05.05
CNN(Convolution Neural Network)  (0) 2024.05.02
활성화함수(Activation Function)  (1) 2024.04.27
Perceptron 이란  (0) 2024.04.22
[IT] IO Error: Got minus one from a read call.  (0) 2024.04.16