Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

study

CS231n 4강 Backpropagation and neural networks 본문

CS231n

CS231n 4강 Backpropagation and neural networks

채승완 2020. 10. 31. 18:15

gradient를 이용하여 어떻게 가중치를 업데이트 시키는지 자세히 배울 것인데요. 

 

이장에서는 역전파(Backpropagation)에 대해 배울 것입니다

 

역전파의 경우 미분을 활용하기 때문에 미분 개념을 간단하게 설명하겠습니다

미분을 간략하게 표현하면 한 점의 기울기를 구하기 위해 사용되는 개념입니다

 

 

제가 정리한 미분공식을 바탕으로 역전파 과정을 직접 계산해보겠습니다

f = qz의 경우 미분하면 서로  반대의 값이 나옵니다(미분 규칙)

 

빨간 네모 박스와 파란 네모 박스는 우리는 이미 알고 있습니다. 우리가 궁금한 것은 Want에 해당하는 값들입니다

 

이 값들을 이제 직접 계산하는 과정에 데해 설명하겠습니다

 

f는 자기 자신을 미분하기 때문에 f의 기울기는 1이 됩니다

 

z의 기울기는 이미 주어져 있습니다(파란색 네모 박스)

 

여기서 3이라는 값이 의미하는 바는 z의 값을 h만큼 증가시키면 f의 값은 3h만큼 증가한다는 것을 의미한다

 

 

 

q의 기울기도 이미 주어져 있습니다(파란색 네모 박스)

 

q를 h만큼 증가시키면 f는 4h만큼 감소한다는 것을 의미한다

 

 

y의 기울기는 주어지지 않기 때문에 직접 구해야 한다(Chain rule 활용)

 

df / dq = z(-4)  ,   dq/dy = 1      =>         -4 * 1 = -4

 

local gradient의 경우 forward pass(순전파)과정에서 구할 수 있다는 것을 참고하길 바랍니다

X의 기울기 또한 주어지지 않기 때문에 Chain rule을 활용해서 구할 수 있다

 

df / dq = z(-4) ,  dq/dx = 1     =>   -4 * 1 = -4

 

 

local gradient는 앞서 설명했듯이 순전파 과정에서 구할 수 있으며 global gradient는 역전파 과정에서 구할 수 있다

 

따라서 X의 기울기는 (dL/dz) * (dz/dx)가 된다

 

Y의 기울기도 (dL/dz) * (dz/dy)가 된다

 

앞서 간략하게 역전파 과정을 설명하였는데 이번에는 조금 더 복잡한 연산에서 역전파 과정을 설명하겠습니다

 

자기 자신을 미분하면 1이 나오기 때문에 마지막 단계에서는 역시 1이 나옵니다

 

 

dL / da를 편미분하면 (dL/db) * (db/da)가 된다. 여기서 db/da는 local gradient로 -1/x2 즉 -1/1.372 가 된다

 

dL/db는 global gradient로 앞에서 구한 기울기인 1이 된다

 

즉 1 * -1/1.372로 기울기는 -0.53이 된다

 

 

local gradient인 db/da = 1

 

global gradient는 역전파 과정에서 구한 -0.53으로 두 gradient를 곱하면 -0.53이 된다

 

local gradient인 db/da는 e-1을 의미

 

global gradient는 역전파 과정에서 구한 -0.53으로 두 gradient를 곱하면 -0.20이 된다

 

 

local gradient인 db/da는 a이므로 -1을 의미

 

global gradient는 역전파 과정에서 구한 -0.20으로 두 gradient를 곱하면 0.2가 된다

 

더하기 연산을 미분하면 1이 되기 때문에 빨간색 네모박스 두 가지 모두 local gradient는 1이 되며 역전파 과정에서

구한 기울기(global gradient, 0.2)와 곱하면 0.2가 된다

 

즉 더하기 연산의 경우 gradient를 그대로 전달해준다고 생각하면 됩니다

 

곱하기 연산의 경우 앞서 설명했듯이 global gradient는 서로 반대의 값을 가지게 된다

 

local gradient는 역전파 과정에서 구한 0.2로 곱하면 기울기를 구할 수 있습니다

 

W1, X1도 마찬가지로 구하게 되면 -0.4, -0.6이라는 것을 구할 수 있다

 

파란색 네모 박스를 sigmoid gate라고 부릅니다

 

수식을 보면 (1-시그모이드 함수) * (시그모이드 함수)로 손 쉽게 해당 값을 구할 수 있습니다

더하기 연산의 경우 gradient를 전달

곱하기 연산의 경우 local gradient는 서로 반대의 값을 가진다

max값의 경우 1보다 크면 local gradient는 1 작으면 0으로 계산된다

구체적인 예로 더하기 연산의 경우 두 개의 노드가 구성되어 있다면 그 값을 더해준 값 즉 0.7이 해당 노드의 기울기가 된다

 

 

해당 함수는 활성화 함수로 추후 강의에서 자세하게 다룰 예정입니다

 

활성화 함수라고 부르는 이유는 일부 값에만 반응하기 때문입니다

 

relu의 경우 음수에 대해서 반응하지 않습니다

 

 

역전파 과정에 대해 적다보니 글이 길어졌네요..ㅎㅎ 이번강의는 여기서 마무리 하겠습니다