InformationSecurity-Study

[모두의 딥러닝] XOR 문제 딥러닝으로 풀기 Neural Nets for XOR 본문

인공지능

[모두의 딥러닝] XOR 문제 딥러닝으로 풀기 Neural Nets for XOR

-Shinwoo- 2019. 4. 10. 01:29

이 XOR이 굉장히 간단했지만 많은 뉴럴 연구자들에게 절망을 주었던 로직이었다. 

여러 개의 Logic Regression Unit들을 합치면 이에 대한 문제를 해결할 수 있다는 것이다.

하지만 학습은 어떻게 할까? 

 

 

 

Logic Regression Units for XOR

 

X1, X2와 W, B와의 연산 결과값인 Y1, Y2로 다시 연산을 하면 최종적인 XOR 값을 얻을 수 있다. 이 값이 XOR과 같다는 점에서 여러 개의 Logic Regression Units을 이용하면 XOR을 해결할 수 있음을 알 수 있다. 

 

 

Forward Propagation

위의 식을 종합적으로 표현하면 위와 같다. 이는 앞서 보았던 Neural Nets와 비슷한 형태이다. 

 

 

이런 식으로 텐서플로우로 구현이 가능하다. 2번째 최종적인 결과가 hypothesis이다. 

Neural Nets

 

 

하지만, 문제로 던져준, w1, b1, w2, b2는 비디오 상에서는 단지 주어진 값인데 자동적으로 계산할 수 있는 방법이

무엇일까?

 

 

How to get W, B?

cost 함수가 밥그릇 모양으로 생긴다면 그 점에서의 기울기를 구해서 점차적으로 global minimum에

최종적으로 도달할 수 있다. 

이 알고리즘을 적용하기 위해서는 "미분"을 알아야 한다. 연산 중 Sigmoid도 있고, 각각의 점에서 각각의 입력이 Y에 끼치는 영향을 알아야 w을 조절할 수 있는데 양이 너무 많기 때문에 수학적으로 계산하기가 어렵다. 

 

 

 

 

Backpropagtaion

Back Propagation (chain rule)은 cost 형태로 되는 것을 뒤에서부터 앞으로 거슬러 올라가

미분값과 실제값을 측정하는 방식이다. 

 

 

 

 

첫번째는 forward라 해서 w=-2, x=5, b=3 실제 값을 적용하여 보는 것이다. 아래와 같이 여러 연산을 거쳐서 미분의 값들을 얻어보자. 미분의 값의 의미가 무엇일까?

B에 미분한 값이 1이므로 f에 미치는 영향이 1:1로 비례하다는 의미이다. 

여기에서 w에 미분한 값이 5이므로 이 관계를 이용해서 f의 출력에 대해 영향이 크다는 것을 의미한다.

Back Propagation (chain rule)

 

 

Sigmoid

이것은 어떻게 미분할까? z가 미치는 영향을 알아보도록 하자. 그래프가 아래와 같이 그려지면

연산자가 1/x에 해당하는 미분, +1에 해당하는 미분값, exp의 미분값 등등 순차적으로 적용하면 된다.

 

 

Sigmoid

 

 

 

 

따라서 텐서플로우에서는 모든 것이 곱하기 이다. 텐서플로우에서는 각각을 그래프로 다 가지고 있다.

사실 COST 함수의 미분값이 중요한 것이다. Tensorflow는 각각을 그래프로 만들어서 텐서플로우가 back propagation을 하기 위해서다. 텐서플로우를 사용한다면 이것을 구현할 필요가 없다. 이미 TensorBoard에서 쉽게 볼 수 있다.

 

Back propagation을 통해서 미분을 이용하여 정확한 COST를 구할 수 있다는 것이 핵심이다.