시작하며
저번 포스팅에서 Neural Network를 공부했습니다. 이번 시간에는 이러한 Neural Network를 AND, OR, NOT 연산, XNOR 연산 그리고 Multi Classification에 적용하면서 어떻게 차수가 높은 복잡한(non-linear) 가설함수를 처리하는지 공부해보겠습니다.
이번 포스팅은 Neural Network에 대한 이전 포스팅을 보시고 공부하시면 훨씬 효과적입니다.
- Neural Network
https://box-world.tistory.com/17
AND, OR, NOT 연산
o 또는 x 중 하나를 가지며, XOR, XNOR같은 logistic operator를 이용하여 결과값을 도출하는 dataset의 분포가 위와 같다면, 위 이미지의 오른쪽처럼 Decision Boundary 를 설정할 수 있습니다.
위와 같은 'non-linear한 Decision Boundary' 즉 '가설함수' 를 그리기 위해서는 차수가 매우 높고 복잡해야 하며, 이를 Logistic Regression으로 Decision Boundary를 구하기엔 연산량도 많고 매우 비효율적입니다.
Neural Network를 이용하여 이러한 logistic operator를 구현하면 효율적으로 이 문제를 해결할 수 있습니다.
AND 연산
우선 Neural Network에 logical operator부터 적용해보겠습니다.
AND 연산에 사용되는 Neural Network는 Input, Output 총 2개의 Layer 을 가집니다. Input Layer은 x1, x2, bias unit인 x0 로 구성됩니다.
Input에 곱해질 'Weight(θ)' 는 [-20, +30, +30]이므로 Logistic unit에 사용되는 h(x)는 위 이미지의 왼쪽 하단의 식과 같습니다.
이때 sigmoid 함수인 g 를 그리면 우측 상단의 그래프가 됩니다. 여기서 z(= -30 + 20x1 + 20x2) 에 Input을 대입했을 때 나온 값이 4.0 이라면 h값이 0.99로 1에 가까운 값을 가지고, -4.6 이라면 h 값은 0.01에 가까운 값을 가지게 됩니다.
이것을 그대로 이용하여, 우측 하단 네가지의 x1, x2값을 그대로 대입해보면 신기하게도 x1 =1, x2 = 1인 경우에만 h값이 1에 가까운 값을 가지게 되면서 AND 연산이 성립되는 것을 볼 수 있습니다.
OR 연산
OR 연산에 사용되는 NN입니다. Weight 는 [-10,+20,+20]이고 g(h(x))는 위와같이 표현 됩니다. 마찬가지로 x1, x2값을 대입하여 h(x)값을 도출하면 우리가 아는 OR 연산이 성립되는 것을 확인할 수 있습니다.
NOT 연산
NOT 연산의 경우, 하나의 Input만 필요합니다. Weight는 [+10, -20]이 되어 위와 같은 g 함수를 가지게 되고 X1 = 0, 1 각각을 대입하면 NOT 연산이 되는 것을 확인할 수 있습니다.
XNOR 연산
기존 세 가지의 연산(AND, OR, NOT)은 각각 하나의 Input Layer와 Output Layer 즉 '하나의 Logistic Unit' 으로 연산이 가능했습니다.
하지만 XNOR은 그 사이에 하나의 HIdden Layer 가 더 필요합니다.
'XNOR 연산' 을 위해서는 <AND 연산(빨강), (NOT x1) AND (NOT x2) 연산(민트), OR 연산(연두색)> 세가지 연산에 사용된 각각의 unit들로 Neural Network 구성합니다. 이때 AND와 (NOT x1) AND (NOT x2)는 HIdden Layer 에, OR는 Output Layer 에 이용합니다.
Input Layer 에는 x1, x2, bias unit으로 구성되어있으며, 이것들이 AND 연산을 거쳐 Layer 2의 a1 이 되고, (NOT x1) AND (NOT x2)을 거치면서 Layer 2의 a2 가 됩니다. 이 a1과 a2가 Output Layer의 OR 연산을 거쳐 최종적인 'h(x)값' 을 도출하게 됩니다.
Multi Classification
Neural Network는 2개 이상의 결과값을 분류하는 Multi Classification 에도 적용할 수 있습니다.
위 NN의 구조
- 4개의 Layer
- 3개의 unit을 갖는 Input Layer
- 4개의 unit을 갖는 Output Layer
Classification을 위한 최종적인 결과값은 4개의 값을 갖는 vector 로 주어집니다.
예를 들어 vector = [1:0:0:0] 이라면 pedestrain(보행자) 로 분류한 것이고. [0:1:0:0]이면 car(자동차) 로 분류하는 식으로 이전에 배운 one vs all 에 해당합니다.
이해하기가 어렵다면 vector의 4개의 값을 각각 4개의 전등으로 생각하여 각 전등 하나당 보행자, 자동차, 오토바이, 트럭을 담당하여 결과값에 따라 하나의 전등만 켜진다고 생각하시면 됩니다.
만약 5개의 카테고리로 분류해야한다면 vector는 5개의 값을 가져야 하겠죠?
이러한 기법을 'one-hot encoding' 이라 합니다.
결론적으로 정리해보자면, Neural Network은 정규화된 Logistic Regression을 기반으로 합니다. 다만 기존 Logisitc Regression은 결과값이 True or False으로 Binary합니다.
이에 비해 여러 개의 Logistic Unit을 모아놓은 Neural Network는 Multi-Classification에 활용되기 때문에, 결과값이 one-hot encoding 기법으로 Vector의 형태로 2가지의 이상의 결과값을 가질 수 있습니다.
요약
1) non-linear한 Decision Boundary로 Classification을 할땐 Neural Network를 이용해야 한다.
2) AND, OR, NOT 연산은 '하나의 Logistic Unit' 으로도 가능하다.
3) XNOR 연산은 Input, hidden, Output 총 세개의 Layer가 필요하다.
4) Neural Network는 one-hot encoding을 이용하여 Multi Classification이 가능하다.
이외에 Neural Network가 어느 분야에 적용될 수 있는지는 아래 포스팅을 참고하시면 좋을거 같습니다.
https://brunch.co.kr/@itschloe1/23
'AI > Coursera ( Machine Learning )' 카테고리의 다른 글
[머신러닝] 딥러닝의 시작 Neural Network 정복하기 2 (0) | 2020.05.01 |
---|---|
[머신러닝] Back Propagation(역전파) 정복하기 (0) | 2020.05.01 |
[머신러닝] 딥러닝의 시작 Neural Network 정복하기 1 (0) | 2020.04.30 |
[머신러닝] 모델의 과적합(Overfitting)을 피하기 위한 방법 (1) | 2020.04.30 |
[머신러닝] 여러 개로 분류하기(Multi Classification) (0) | 2020.04.30 |