-
[딥러닝 학습 팁] Gradient checkingData miner 2020. 12. 12. 20:58728x90
- Gradinet checking은 Forward propagation, Backward propagation 이후, backward propagation으로 구해진 역전파값이 정확한지 점검하는 과정이다.
- 학습 단계에서 사용하는 것이 아니라 디버깅 단계에서 사용한다. 왜냐하면, 한 번 학습할 때마다 Gradient checking할 경우 시간이 너무 오래 소요되기 때문이다.
- 수식으로 정의된 Derivative(혹은 Gradient)값과 Backward progation으로 구해진 값이 동일하거나 근소한 차이를 보이는지 확인한다.
- 구체적으로, delta에 속하는 여러가지 파라미터들(W,b...)들을 각 레이어에 속한 각 뉴런값들을 n by 1차원의 메트릭스로 표현한다. (n=전체 모델이 학습시켜야 하는 파라미터의 총 개수)
- 여러 파라미터의 각 값의 grad, gradapprox, grad-gradapprox의 노름값을 numpy의 np.linalg.norm함수를 사용하여 구한다.
- 만약, gradient checking시 문제가 생겼다면, 순차적으로 레이어를 훑으면서 어느 값이 잘못되었는 찾아본다.
- Regularization을 적용하였을 때, 이 부분을 반영하여 gradient checking해야 한다.
- Drop-out을 적용하여 학습했을 때에는 Gradient checking을 실행할 수 없다. Dropout을 끈 상태에서 Gradient checking을 먼저 해보고, 이상이 없다면 drop-out시에도 이상이 없는 것으로 편의상 간주한다.
'Data miner' 카테고리의 다른 글
[Machine Learning] Time series data란? (0) 2021.01.18 [딥러닝 학습 팁] Drop out (0) 2020.12.09 [Pioneer_Hackathon] 참가 후기 (0) 2020.04.15 [python] [pandas] 객체에 함수 적용하기. apply (0) 2020.04.03 [python] [pandas] groupby (0) 2020.04.01