[Tensorflow] 2-2 XOR 연산의 구현

NN : Neural Network를 통한 XOR 문제를 해결해보자

한번의 연산을 통한 xor의 구현은 불가능하다고 앞선 시간에 배웠다. 대신 한번의 연산 결과를 다시한번 연산하는 과정을 통해서 구현할 수 있다.
보라색과 초록색의 연산을 통하여 서로 다른 w와 b를 가진 두개의 모델이 있다. 각 모델에서 나온 결과를 이용해 다시한번 연산을 수행하면 결과값이 얻어지는 방식이다.

정말 구현이 되는지 간단한 예제를 통해 확인해보는 과정이다.  밑의 변수들로 계산해보아도 구현된 3개의 Network에 의해 XOR이 바르게 구현되는 것을 볼 수 있다.
위 세개의 network을 아래와 같이 간단히 표현할 수 있다.


그리고 두개의 네트워크는 이전에 배웠던 multinomial classification에서 배웠던 방식으로 하나로 합칠 수 있다. 
그래서, 여러개의 layer에 대한 w와 b의 학습에 대한 조정을 어떻게 구현할 수 있을까.

우리가 계속 학습에 이용했던 Gradient Descent 알고리즘을 여기서도 이용해야 한다. 하지만 여러개의 layer를 통해 얻어진 output에 대한 오차율을 input에 적용하기에, 그 중간 레이어들이 결과에 미치는 영향도 있기 때문에 무엇을 기준으로 각 레이어의 가중치를 조정하느냐가 관건이다. 이런 문제점을 해결하기위해 Backpropagation이 도입된다.

Backpropagation



연산을 f,g로 정의하고 각각의 연산이 최종 결과에 미치는 영향을 계산하기 위해 편미분과 chain rule을 이용해 계산할 수 있다. 



Tensorflow는 내부에서 backpropagation을 수행하고 있다. 위의 그래프는 Tensorflow의 동작을 볼 수 있는 Tensorboard로 본 텐서플로우의 수행이다. 텐서플로우는 각 연산에 대한 그래프를 모두 따로 가지고 있다. 이는 텐서플로우가 각각의 미분값을 가지고 있어야 backpropagation을 할 수 있기 때문이고 우리가 모르는 사이에 이미 컴퓨터는 오늘 공부한 과정들을 내부적으로 수행하고 있었던 것이다. 

No comments:

Powered by Blogger.