Reference
https://iai.postech.ac.kr/teaching/machine-learning
https://iai.postech.ac.kr/teaching/deep-learning
위 링크의 강의 내용에 기반하여 중요하거나 이해가 어려웠던 부분들을 정리하여 작성하였고,
모든 강의 슬라이드의 인용은 저작권자의 허가를 받았습니다.
또한, 모든 내용은 아래 Notion에서 더 편하게 확인하실 수 있습니다.
>>노션 링크<<
Keywords
- Perceptron, Neuron
- XOR Problem
- Multi-Layer Perceptron(MLP)
- Aritificial Neural Network(ANN)
- Activation Function, Sigmoid
From Perceptron to MLP
Binary Linear Classifier인 Perceptron을 통해,
주어진 dataset에 대해 학습하여, 주어진 공간(data feature 개수 n에 대한 n-dimensional space)을 둘로 나누는 hyperplane을 설정하는 weight을 알아낼 수 있었다.
또한 이렇게 결정된 model인 perceptron을 통해, new data에 대하여 forward propagation을 수행 (perceptron에 data를 넣어 계산)하여 new data가 어떤 class에 해당되는 지 classification을 수행할 수 있는 것을 앞에서 학습하였다.
다시 한 번 정리하자면, 여기까지의 Perceptron이란:
주어진 input space(m-dimensional space)상에서 두 class를 구별하는 단 하나의 linear classifier(hyperplane)를 define하는 것.
앞에서 학습하였던 Binary Linear Classification에서의 Perceptron은
sign function을 이용했지만, (output: -1 or 1)
여기서는 step function (계단함수, output: 0 or 1)을 이용한다.
(당연히, step function은 미분불가능하다.)
Neuron(Perceptron)은 input의 weighted sum을 계산하고, 그 합이 양수이면 activate, 음수이면 deactivate시키는 기본 단위임.
(오른쪽의 식을 보면 쉽게 이해할 수 있다. weighted sum인 $a = \omega_0+\omega_1x_1+\omega_2x_2$ 를 계산 후, 이를 step function인 $g(a)$에 대입하여 $a$가 양수이면 1, 음수이면 0을 output으로 내놓는다.)
neuron은 NN에서 사용되는 가장 기본 단위이고, activation function으로 step function 이외의 다른 함수도 사용할 수 있는 일반적인 개념이지만, 여기까지는 perceptron의 또 다른 형태로 서술한다.
XOR Problem
이와 관련하여, XOR Problem이라는 것이 존재한다.
Single neuron으로는 하나의 linear classification boundary만을 generate할 수 있기 때문에,
AND, OR 연산에 대한 boundary는 형성할 수 있지만, XOR 연산에 대한 boundary는 single neuron을 통해 형성할 수 없는 문제가 있다. (그림을 보면, 초록색 점과 빨간색 점을 하나의 선형 구분선으로 구분할 수 없다는 것은 시각적으로 빠르게 받아들일 수 있을 것이다.)
따라서, 이러한 문제를 해결하기 위해서는?
→ non-linear classification boundary를 만들거나, linear classification boundary를 2개 이상 만들어야 할 것이다.
(다음부터 나올 MLP는, linear boundary를 여러 개 만들어서 이러한 문제를 해결하는 방식이다.)
MLP
위에서의 그러한 문제 (XOR Problem 등)를 해결하기 위하여, neuron을 여러 개 사용할 수 있다.
왼쪽의 그림과 같이 각각의 neuron을 학습하게 되면, neuron의 개수만큼(여기서는 2개)의 직선(boundary)가 형성되게 될 것이고, 이를 통해 Linearly Classify되지 않는(non-linearly distribute된 data에 대한) 여러 문제들을 해결할 수 있게 된다. 이것이 MLP이다.
(결국 input은 동일하므로, 오른쪽과 같은 형태로 합칠 수 있음도 쉽게 받아들일 수 있을 것이다.)
Activation Function
앞에서까지는 weighted sum의 값에 의해 output을 결정하는 함수를 step function(계단함수)을 이용했다.
이렇게 weighted sum이 계산된 이후, 이 값에 따라 neuron의 activate 여부를 결정하는 함수를 activation function이라 한다.
Step Function을 이러한 Activation Function으로 사용했을 때의 단점은, 함수가 non-differentiable하다는 것이다. (미분불가능)
추후 weight를 수정해 나가는 학습(train, fit)과정에서, 미분 연산이 필요하게 되는데, step function은 미분불가능하기 때문에- activation function을 미분가능한 함수로 변경해야 할 필요가 있다.
그렇기 때문에, 여기서는 step function을 미분 가능한 sigmoid function으로 대체한다.
Logistic Regression 두 개가 연결되어 있는 상태라고 생각하면 된다. 추후 weight를 update하는 과정에서 Gradient Descent를 이용할 때, non-differentiable한 function이 존재한다면 gradient를 계산할 수 없는 문제가 생기기 때문.