Google ML Bootcamp(181)
-
16. Mini-batch Gradient Descent
m개의 훈련 예제를 벡터화를 통해 for문 없이 한번에 수행할 수 있게 되었다. = 더 빠른 학습이 가능하다. - but, 모든 훈련 예제에 대해 기울기(gradient)를 계산하기 전에 일부 데이터에 대해서 gradient descent를 수행하는 것이 더 빠른 학습이 가능함이 밝혀졌다. Notation x(i) : 소괄호는 i 번째 훈련 예제. a[l] : 대괄호는 l 번째 layer. x{t} : 중괄호는 t번째 batch set. - x(i).shape : (nx,m) - x{t}.shape : (nx,batch_size ) Mini-batch Gradient Descent != Batch Gradient Descent - 하지만 미니 배치를 주로 사용한다. 무엇이 다른지는 다음 동영상에서 알아보자.
2023.09.11 -
15. Gradient Checking Implementation Notes
Gradient Checking은 계산비용이 크므로 훈련시에 사용하지말고 디버깅시에만 사용할것. if gradient fail, look at components to try to identify bug. - dW[l] 와 dW(approximate)[l]의 차이가 클 것이다. 이때 l을 찾는 것이 목적. - 따라서 문제인 layer를 찾으러 가야하고 거기서 버그를 해결해야 한다. 기울기 검사를 할 때 정규화를 수행하는지 여부를 항상 확인할 것! - 이 중 dropout은 수행하지 말것 - L2의 정규 Cost function에 들어가는 정규화 항을 반영해야 한다. **중요 : Dropout -> Keep_prob=1 로 설정하고 Gradient Checking. 이후 올바르게 알고리즘이 동작되는 것이 ..
2023.09.10 -
13. Gradient Checking
기울기 검사. 이전 강의에서 two-sided difference가 어떻게 사용되는지 중점적으로 관찰해보자. 현재 gradient가 정확하다면 엡실론 크기만큼 변화를 주었을 때 생성되는 approximate gradient와 기존의 gradient의 차이 또한 엡실론과 비슷해야한다. 크게 차이난다면 현재 gradient 계산. 즉 미분이 잘못 진행되고 있는 것이다. - 아직은 잘 모르겠지만 이후 버그를 찾는데 도움이 되지 않을까
2023.09.10 -
12. Numerical Approximation of Gradients
기울기 계산에 있어서 two-sided difference 또한 세타에서 미분값과 근사함을 확인할 수 있었는데 미분학적 기울기의 정의로 보았을 때 대략적인 오차를 구할 수 있었다. 하지만 이걸 어디에 왜 쓴다는건지는 다음 비디오에 알 수 있다고 한다.
2023.09.10 -
11. Weight Initialization for Deep Networks
Vanishing or Exploding 문제를 해결할 수 있는 방법(완벽히 해결하는 것은 아니지만 굉장한 효과가 있음) - Weight Initialization randomly * np.sqrt(1/n[l-1]) - activation function이 relu인 경우 np.sqrt(2/n[l-1]) 이 더 잘 작동함. 가중치 초기 설정에 분산을 설정하는 방법인데 이가 hyperparameter 순위에 있어서 아래쪽에 속하지만 Vanishing , Exploding 문제를 해결함에 있어서는 좋은 방법이 되었다.
2023.09.10 -
10. Vanishing / Exploding Gradients
이때 W가 1에 근사하는 어느 값이라도 L이 커질수록 Exploding or Vanishing 문제가 발생함을 확인할 수 있다.
2023.09.10