Data_study/Deep Learning

[Deep learning] Backpropagation & Chain Rule 개념

onsemiro 2023. 4. 4. 02:25

학창시절에 배운 미분을 통해 이 딥러닝에서는 어떻게 적용되어 학습되는지 확인해보자. 학창시절에는 실수를 활용해서 함수를 통해 미분을 하여 y'=0일때의 x의 값을 구하는 문제를 많이 접해봤다. 이 Deep Learing에서는 어떤 차이점이 있는지 확인해보자. 또한 미분계수가 주는 의미가 무엇인지 알아보자.
 

Gradient - Based Learning

 
학창시절 때 부터 배워온 미분을 통해 학습을 한다는 말로
x 값을 계속해서 dy/dx를 통해 업뎃하면서 최솟값을 찾는 학습기법을 말한다.
 
딥러닝에서 미분계수의 의미는

+ : (-) 방향으로 가야 최솟값을 찾을 수 있다.               - : (+) 방향으로 가야 최솟값을 찾을 수 있다.

의 의미를 갖고 있다.
 
즉 " -dy/dx : x값이 움직여야하는 방향이다!" 라고 말할 수 있다.
 
이 미분계수의 역할을 활용하여 아래와 같은 간단한 식을 찾아 냈다.

x:=x - f'(x)  ( : 기호는 계속해서 업뎃한다는 의미다.)

 
하지만 이 식에는 단점이 하나 있다. 바로 업뎃이 너무 큰 폭으로 진행되다보니 최솟값을 건너서 학습이 되어 멀리 학습이 되는 것이다.

x := x-dy/dx 의 한계점

이를 해결하기 위해 learning rate를 dy/dx에 곱해줌으로써 촘촘히 줄어들도록 유도할 수 있었다.

x:=x-α f'(x)

예를 들어 learning rate를 0.1로 두면 
x := x -0.1 f'(x)를 통해,
미분계수를 어느정도 작게 만들어서 최솟값을 넘어가지 않고 촘촘히 탐색할 수 있도록 한다.
 
!!!??? 여기서 의문점을 갖어야하는 부분이 있다!
 

Q : 그냥 학창시절때처럼 y'=0일때의 x값을 구하면 되지 않나?
A : 딥러닝에서는 그렇게 할 수 없다. 왜냐하면 실제 딥러닝에서는 어떤 함수인지를 모른다. 비유를 하자면 , 깜깜한 밤에서 현재 바닥의 기울어져있는 정도만을 가지고 산을 내려가는 것과 같다고 생각하면 된다. 함수계형을 모르고 미분계수만을 통해 최소값을 찾아가는 것이다.

 
딥러닝에서는 f(x)값이 Loss function이다.
그 이유는 Loss function을 줄이기 위해 학습하는 것이므로 f(x)=J가 되어야한다.

딥러닝에서 사용되는 변수들의 업뎃 식

모든 변수들의 각 미분계수를 통해 J를 줄이려면 각 변수가 어떻게 업데이트되어야하는지 학습하는 것이 딥러닝에서 미분계수가 가지는 의미가 된다.
 
 

Backpropagation

각 layer들을 통과하여 마지막 layer를 통해서 loss 값을 연산하고 그 연산된 loss값을 최솟값으로 만들기 위해 연산되어 흘러왔던 길을 다시 돌아가면서 loss값이 최소화되도록 W,b값을 업뎃하는 과정을 말한다.

Chain Rule

Chain Rule은 학창시절때 배운 합성함수의 미분법과 동일하다.

chain Rule

 
아래 그림을 보면 맨 마지막 layer에서 loss calculator를 진행하고 나온 식J를 y hat으로 미분해준다. 미분된 값을 이전 layer에게 넘겨주고 이전 layer는 그 넘겨받은 미분계수를 통해 

이와 같이 Chain Rule 을 적용하여 dJ/dZ[5]를 만들어 낸다. 만들어낸 미분계수는 그 전 layer에게 넘겨준다.
 
이후 그 전 layer인 Dense layer를 미분해줄 건데, Dense layer는 Z = A · W + B 이기때문에 각 변수들을 각자 미분해줘서 update를 진행해줘야한다.

위와같이 각자 Chain Rule을 적용하여 미분을 진행해주고 W와 b로 미분한 계수는 변수들을 update 해주는데 사용하고 A로 J를 미분한 미분계수는 이 Dense layer전의 layer로 전달해줘서 이 전 layer에서 활용할 수 있도록 한다. 이 과정들이 계속반복되는 것이 Backpropagation이다.
 

Backpropagation

 

반응형