이번 단계에서는 역전파로 수행한 계산에 또 다시 역전파를 할 수 있는 double backpropagation을 구현합니다.
36.1 double backprop의 용도
미분이 포함된 식에 미분 계산을 할때 double backprop으로 게산할 수 있습니다.
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)

위 코드에서 y.backward(create_graph=True)는 미분을 하기위해 역전파 하는 코드 입니다. 여기서 새로운 계산 그래프를 생성하고 역전파가 만들어낸 계산 그래프를 사용해 새로운 계산을 하고 다시 역전파합니다.
즉, 미분의 식을 구하고, 그 식을 사용하여 계산한 다음, 또다시 미분하는 문제를 double backprop으로 해결할 수 있습니다.
36.2 딥러닝 연구에서의 사용 예시

wgan-gp논문에서 위의 수식을 최적화합니다.
최적화 하는 기울기(텐서 각 원소에 대한 미분 결과)가 있다는 것인데 이 기울기는 첫 번째 역전파에서 구할 수 있고 이 기울기를 사용하여 함수 L을 계산하고 함수 L을 최적화 하기 위해 두 번째 역전파를 합니다.
'Study 공부할레나' 카테고리의 다른 글
| [스터디/밑시딥3] 제 4고지 신경망 만들기_37. 텐서를 다루다 (1) | 2023.10.08 |
|---|---|
| [스터디/밑시딥3] 제 4고지 신경망 만들기_39. 합계 함수 (0) | 2023.09.19 |
| [스터디/밑시딥3] 제 3고지 고차미분계산_35. 고차 미분 계산 그래프 (0) | 2023.09.11 |
| [스터디/밑시딥3] 제 3고지 고차미분계산_34. sin 함수 고차 미분 (0) | 2023.09.11 |
| [스터디/밑시딥3] 제 3고지 고차미분계산_33. 뉴턴 방법으로 푸는 최적화(자동계산) (0) | 2023.09.10 |