본문 바로가기
AI

딥러닝 01 - 기초 정리 XOR 문제 해결 과정

by Wonryeol 2020. 3. 22.

머신러닝 개념이 발전하던 도중 중요한 문제점이 하나 발견이 되었다. 

 

그 문제점은 어떻게 XOR 문제를 해결할 것인가? 라는 문제이다.

XOR 문제는 0 1 일때 True 값, 0 0 일때 False 값을 출력하는 컴퓨터 연산자인데, 상단의 그래프에 어떠한 선을 그어도 절대 XOR 개념에 만족하는 선을 확립할 수 없다는 것이 발견된다. 

 

이는 어느 한 수학자가 수학적으로 linear regression 으로는 저 문제점을 풀 수 없다는 것을 증명해 내고 이 문제는 머신러닝, ai 학문에 큰 난관이 되었다. 

 

그리고 세월이 지난 후에, 딥러닝 개념이 등장하면서 이러한 xor 문제를 해결할 수 있다는 것을 발견하였다.

 

간단히 딥러닝 개념을 설명하자면 여러개의 머신러닝을 합쳐 하나의 연산으로 만든다고 해석 가능하다.

즉, 여러 층의 linear Regression 을 가지고 하나의 논리 연산자를 만드는 것이다. 

 

간단히 예를 들어

 

다음과 같은 하나의 레이어 ( 머신러닝 ) 층에서 나오는 아웃풋 , y1 과 

 

 

 

 

다음과 같은 하나의 레이어에서 나오는 아웃풋 , y2 를 조합하여 

 

 

 

 

레이어에 인풋값으로 넣은 후 ,Y hap 을 결과값으로 제공하는 것이다.

 

 

 

 

 

이를 그림으로 나타내어 보면

딥러닝 - 간단한 그림 형식

이 된다.

 

즉 여러 머신러닝의 조합인 것이다.

 

그렇다면 어떻게 각 레이어의 W, B 의 값을 조절하며 들어갈까?

 

딥러닝은 일종의 머신러닝과 일맥 상통 한 것이기 때문에 결국 Gradient Decent Algorithm 의 형식을 빌린다.

 

 

즉 cost 함수를 계속 learning rate 로 변형 시켜 학습을 계속 시켜주는 것이다.

 

 

 

하지만 이러한 방법은 제일 상단의 layer 의 w, b 의  값은 알 수 있어도 속 함수의 w , b 의 값은 알지 못한다. 

 

 

 

 

 

이를 해결하기 위해 chain rule 을 이용한 Back propagation 을 활용한다.

 

Back Propagation( 역전파 ) 

 

Backpropagation 알고리즘은 다음과 같이 두가지 스텝으로 구성된다.

  1. 트레이닝 데이터(Training Data)를 Input으로 집어넣어서 전방향 연산(Forwardpropagate)을 수행한다. 이 결과로 나온 Neural Networks의 Prediction값과 실제 Target Value값과 차이인 에러(Error)를 계산한다.
  2. 에러(Error)를 Neural Networks의 각각의 Node들에 역전파(Backpropagate)한다.

 

즉  Back Propagation 은 오류를 역전파, 즉 속함수에 에러값을 계속 보내는 것이다.

해석을 하자면, a20 의 오류값을 한번 수정하면, 자동적으로 편미분을 통해 속 함수의 w, b 의 값이 수정 된다는 것이다.

 

이를 예를 들어 해석하자면, 

E 값은 다음과 같이 나오며 각 레이어를 수정 하기 위해서는 각 레이어가 에러에 미친 영향을 알아야 한다. 

 

 

현재 a_20 ( Projection ) 의 값은 0.57 , True value 는 0.2 dlek.

 

이를 가장 바깥 식 부터 편미분 하여 해석하면, 

이며, 총 에러중 a_20은 0.37만큼 에러에 영향을 줬다는 것으로 볼 수 있다. 

 

이와 같이 계속 해서 역추적 해 나아 가 보면, 

z_20은 총 에러중 0.25만큼, w_10은 총 에러중 0.049만큼 영향을 줬다는 것을 확인할 수 있다.

 

이 영향을 준 비율을 learning rate 와 조합하여 각 식을 재조정 하여야 한다.

 

원래라면 각 w 를 비율에 맞춰 수정해야 하지만 대표를 들어 하나만을 한다면, 

 

이며 w_10 은 0.4( 기존 weight ) - (0.3( learning rate ) * 0.049 ( 에러 비중 ) ) 을 처리한 값인 0.3855로 수정된다는 것을 확인할 수 있다.

 

즉 이렇게 .minimize(cost) 를 진행한다면, 계속해서 각 w, b 들이 갱신되며 결국 특정 값에 수렴될 것이다.

 

 

이와 같은 과정을 deep learning 의 cost를 수정하는 알고리즘, Gradient decent algorithm 을 활용하기 위해 만들어진 알고리즘. Back  Propagation 이라 일컫는다. 

댓글