본문 바로가기
AI/[DLBasic]모두의 딥러닝(딥러닝의 기본)

[DLBasic] 9-1. Neural Nets(NN) for XOR

by 쵸빙 2020. 1. 17.

     저번 시간에 설명했듯이 큰 골치거리였던 XOR을 Neural Network로 해결할 수 있게 됨으로써 딥러닝의 큰 발전이 가능했다. 이번 시간에는 어떻게 XOR을 Neural Network로 해결할 수 있는지 알아보도록 하겠다.

 

logistic regression을 여러 개 사용해보자

     기존의 neural network 하나로 AND나 OR은 해결할 수 있었지만 XOR은 neural network 하나로 해결할 수 없었기에

딥러닝의 큰 난관이었고, 이후에 neural network 여러 개로 해결할 수 있다는 점은 알아냈지만

XOR에 대한 Neural Network를 어떻게 train할 것인가

     각각의 weight과 bias를 학습하는 것이 불가능하다는 입장이었다.

 

neural net 3개로 XOR을 표현해보자

 

     위와 같이 weight이 5,5이고 bias가 -8인 NN에서 나온 값을 y1으로, weight이 -7,-7이고 bias가 3인 NN에서 나온 값을 y2로 입력을 받아서 weight이 -11, -11이고 bias가 6인 NN을 거친 최종 값 Y hat을 결과로 가지는 NN 구조가 XOR의 결과와 같게 나오는지 직접 계산해보겠다.

 

X1 = 0, X2 = 0일때 XOR의 결과와 일치함.
x1 = 0, x2 = 1일 때도 XOR의 결과와 일치함.

 

x1 = 1, x2 = 0일 때에도 XOR의 결과와 일치함.
x1 = 1, x2 = 1일 때에도 XOR의 결과와 일치함.
Forward Propagation

     위에서 했던 것을 하나로 정리해보면 위와 같은 구조가 될 것이다. 이것이 하나의 Neural Network가 되는 것이다.

그런데 XOR와 결과가 같은 위의 예시와 다른 W과 b의 조합을 찾을 수 있을까? 이것은 과제로 남겨두도록 한다.

 

matrix로 계산하는 법

     위의 예시에서는 각각의 NN의 wx+b의 결과를 일일이 계산했는데 matrix를 이용하면 한 번에 계산할 수 있고,

그것을 코드로 짜는 방법은 위 그림의 오른쪽 하단에 표시해두었다.

 

다음 시간에는 W1, W2, b1, b2 값을 어떻게 정할지를 알아보도록 하겠다.