AI/딥러닝 프레임워크 개발

36단계) backpropagation 연결의 고차 미분 이외의 용도

채채씨 2021. 7. 15. 16:41
728x90
반응형

지난 포스팅에서 backpropagtion 계산에서도 연결을 만들었다. 역전파의 계산 그래프는 고차 미분을 가능하게 하는 것뿐만 아니라 다른 용도로도 활용할 수 있다. 오늘은 다른 활용법에 대해 설명할 것이다.

 

1. double backprop의 용도

 

아래의 미분 계산 문제를 보면, 계산해야 하는 식에 이미 미분이 포함되어 있다. 즉, 미분이 포함된 식을 다시 미분해야 한다. 이 문제도 double backprop으로 계산할 수 있다.

 

 

먼저 이 식을 직접 계산해보면 다음과 같다.

 

마지막 식에 x = 2를 대입하면 100이 나온다.

 

주의할 점은 위의 z식에서 x에 대한 y의 미분은 값이 아니라 식이다. 따라서 x = 2일 때 x에 대한 y의 값을 찾고, 그 값을 z에 대입하면 올바른 결과를 얻을 수 없다.

 

이 내용을 DeZero를 사용하여 풀면 다음과 같다.

 

import numpy as np
from dezero import Variable

x = Variable(np.array(2.0))
y = x ** 2
y.backward(create_graph=True)
gx = x.grad
x.cleargrad()

z = gx ** 3 + y
z.backward()
print(x.grad) #variable(100.0)

 


 

 

728x90
반응형