[머신러닝] Neural Network를 이용한 XNOR 연산 그리고 Multi Classification
어제보다 나은 사람이 되기

걱정보단 실행을, 그러나 계획적으로

Box World 자세히보기

AI/Coursera ( Machine Learning )

[머신러닝] Neural Network를 이용한 XNOR 연산 그리고 Multi Classification

Box형 2020. 5. 1. 00:07
반응형

시작하며

저번 포스팅에서 Neural Network를 공부했습니다. 이번 시간에는 이러한 Neural Network를 AND, OR, NOT 연산, XNOR 연산 그리고 Multi Classification에 적용하면서 어떻게 차수가 높은 복잡한(non-linear) 가설함수를 처리하는지 공부해보겠습니다.

이번 포스팅은 Neural Network에 대한 이전 포스팅을 보시고 공부하시면 훨씬 효과적입니다.

 

[머신러닝] 딥러닝의 시작 Neural Network 정복하기 1

시작하며 우리는 저번 포스팅에서 Overfitting을 다루며 배웠던 'non-linear classification' 에서, feature가 두개일 때 위와 같이 Decision Boundary를 표현해보았습니다.. Overfitting https://box-world.tist..

box-world.tistory.com


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 NetworkMulti-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

 

딥러닝의 30가지 적용 사례

비전문가들도 이해할 수 있을 구체적 예시 | *본 글은 Yaron Hadad의 블로그 'http://www.yaronhadad.com/deep-learning-most-amazing-applications/'를 동의 하에 번역하였습니다. 최근 몇 년간 딥러닝은 컴퓨터 비전부터 자연어 처리까지 수많은 문제들을 해결하는데 쓰였습니다. 다수의 경우 딥러닝은 이전의 작업보다 더 좋은 성능을 보이고 있습니다

brunch.co.kr

 

반응형