서울대학교 딥러닝 기초 강의를 듣고 정리하였다.
딥러닝은 입력과 출력간의 복잡한 관계를 비선형 함수로 근사하는 알고리즘이다. 이때 기본적으로 MLP라는 구조를 사용한다. 자세히 살펴보면.. perceptron이라는 것을 여러개의 층(multiple layer)으로 쌓는 방법이다. 이번 포스팅에서는 MLP라는 것이 무엇이며 딥러닝에서는 왜 MLP을 사용하는지 정리해보려고 한다. (틀린 내용이 있으면 언제든지 지적 환영!!!)
딥러닝이 충실해야하는 것
딥러닝은 입력과 출력간의 복잡한 관계를 주어진 데이터를 통해 학습한다. 학습한 내용을 바탕으로 미래에 데이터가 주어졌을 때 예상되는 출력을 뱉어낸다. 그런데 데이터가 주어졌을 때 딥러닝이 하는 연산을 사람이 직접할 수 없고 컴퓨터가하는데 따라서 딥러닝은 기본적으로 컴퓨터가 하는 연산을 할줄 알아야 한다.
컴퓨터는 기본적으로 AND, OR, XOR 연산을 하며 딥러닝도 이 연산을 할 줄 알아야 한다.
컴퓨터는 이진 숫자를 받아 AND, OR, XOR 연산을 한다. 이를 위해 perceptron 함수를 정의해보자.
\[ f(x) = \begin{cases} 1 & \text{if } x \geq 0 \\ 0 & \text{o.w.} \end{cases} \]
이진연산을 하는 컴퓨터에게 perceptron 함수는 양수라면 1을, 음수라면 0을 뱉는 함수로 정의한다.
Single layer perceptron (SLP)
자, 이제 perceptron의 개념을 알았으니 single layer perceptron의 의미를 생각해보자. perceptron이 하나의 층으로 있는 모델 구조이다. 앞서 말한 컴퓨터가 할 수 있는 연산 중에 AND, OR 연산은 SLP로 해결이 가능하다.
먼저 AND 연산을 생각해보자
linear function ($\mathbf{wx} + \mathbf{b})$에 perceptron을 activation function으로 사용하는 single layer을 생각해본다. bias을 $b=-1.5$로 설정하면 x,y의 값이 모두 1일 때만 결과값이 1인 것을 알 수 있다. 즉, AND 연산을 SLP로 표현할 수 있다는 것이다.
다음으로 OR 연산을 생각해보자
AND 연산과 마찬가지로 SLP을 생각하되 bias을 $b=-0.5$로 둔다. x,y 중 하나만 1이라도 출력값이 1인 것을 알 수 있다. 즉, OR 연산도 SLP로 표현할 수 있다는 것이다.
마지막으로 XOR 연산을 생각해보자.
XOR 연산은 두개의 입력이 들어왔을 때 하나만 1인 경우에 한해서 출력값이 1이고, 두개 모두 0이거나 1이면 출력값으로 0을 뱉어낸다. 조금만 생각해보면, SLP로 XOR 연산을 구현하기는 불가능함을 알 수 있다. 이런 배경 때문에, 컴퓨터가 하는 연산 중 하나인 XOR 연산을 딥러닝도 하기 위해서 SLP가 아니라 여러개의 perceptron을 쌓는 MLP의 구조가 기본적으로 선택되는 것이다.
Why MLP?
어찌됐든 XOR 연산을 하기 위해 SLP가 아니라 MLP을 해야함을 대강 알 것 같다. 이제 좀 더 구체적으로 SLP을 통해서 XOR 연산을 왜 할 수 없는지 알아보자.
먼저, SLP 연산은 liner function임을 알아야 한다. 입력값이 $x,y$이고 가중치가 $w_1 = w_2 = 1$일 때, SLP은 linear line으로 평면을 분할하는 것과 같다. AND 연산인 경우에 perceptron에 의해서 $x+y-1.5 \geq 0$이면 1, $x+y-1.5 \leq 0$이면 0이고 이는 아래와 같이 표현할 수 있기 때문이다.
$b=-1.5$로 설정한 경우에 linear function보다 위에 있는 점은 $(1,1)$뿐이고 $(0,0), (1,0), (0,1)$은 모두 아래에 있다. linear하게 2차원 공간이 분리가 되는 것이다.
근데 XOR 연산은 $(1,0), (0,1)$만 1로 구분하는 separator가 필요하다.
linear separator 하나로 $(1,0), (0,1)$을 1로 구분하는 연산을 도저히 할 수 없음을 알 수 있다. 다만, linear separator가 두개가 있다면 가능하다.
다시 말하면 SLP가 두개인 경우, MLP일 때 가능하다는 것이다. 이런 이유 때문에 XOR 연산을 위해서 SLP가 아니라 MLP가 필요한 것이다. 이는 꽤나 중요한 시사점을 의미한다고 한다. 딥러닝의 레이어를 여러층으로 쌓음으로써 컴퓨터가 할 수 있는 연산을 모두 할 수 있게 되는 것이다.
Conclusion
딥러닝에서 왜 SLP가 아니라 MLP을 사용할 수밖에 없는지, 그 이유를 알아보았다. 지금 궁금한 것은.. MLP는 perceptron으로 여러층을 쌓는 것인데, 실제로 딥러닝에서 activation function을 perceptron으로 사용하는 경우는 많지 않다. 그럼에도 왜 MLP, MLP 하는 것일까.. 라는 궁금증은 추후에 풀어보기로 하며 포스팅을 마쳐본다.
'ML&DL > Basics' 카테고리의 다른 글
[DL][Implementation] Numpy을 사용하여 MLP 구현하기 (1) | 2024.07.13 |
---|---|
[DL / Paper review] Auto-Encoding Variational Bayes (2) | 2023.05.06 |
[DL] Backpropagation (0) | 2023.03.20 |
[ML / DL] Stochastic Gradient Descent 식 유도하기 (0) | 2023.03.19 |
[ML / DL] Cost function과 Maximum likelihood estimation과의 관계 (0) | 2023.03.19 |
댓글