728x90
과제를 하며 momentum 에 대해 다시 고민해보았다.
W[l]은 층별로 모두 다른 parameter이며 이를 iteration과 헷갈리면 안된다.
즉, Vdw[l] = beta * Vdw[l-1] + (1-beta)dw[l] 가 아니고
Vdw[l] := beta * Vdw[l] + (1-beta)dw[l] 이다. 이것은 코딩형식이므로 런던 온도의 예시와 같게 만들어준다면,
Vdw[l](1) = beta * Vdw[l](0) + (1-beta)dw[l]
=> update( W[l] := W[l] - a*VdW[l])
Vdw[l](2) = beta * Vdw[l](1) + (1-beta)dw[l]
=> update
Vdw[l](3) = beta * Vdw[l](2) + (1-beta)dw[l]
=> update
Vdw[l](4) = beta * Vdw[l](3) + (1-beta)dw[l]
=> update
... 이다.
이 때, 온도예시는 theta1~theta365의 변수가 있었는데, 여기서는 그것이 dw[l]로 대체 되었다.
주목할 점은 Vdw가 갱신될 때마다 W가 update되어야 한다는 것이다.
이 update를 통해 dW는 새로운 값으로 정의되며 매번 다른 값을 가진다.(코드 형식에서 그냥 dW라고 표현되어 헷갈릴 수 있음. 쉽게 말하면 같은 값이 재활용되지 않는 것. dW라고 표현되어 있지만 이것은 매 iteration마다 다른 값이 업데이트 되어 다른 값을 가짐)
알아보기 쉽게 첫번째 dw[l] = theta(1) 이라고 한다면
Vdw[l](1) = beta * Vdw[l](0) + (1-beta)theta(1)
=> update( W[l] := W[l] - a*VdW[l]
Vdw[l](2) = beta * Vdw[l](1) + (1-beta)theta(2)
=> update
Vdw[l](3) = beta * Vdw[l](2) + (1-beta)theta(3)
=> update
Vdw[l](4) = beta * Vdw[l](3) + (1-beta)theta(4)
=> update
라고 표현할 수 있다. 즉, 앞서 살펴보았던 온도-day 에서의 모멘텀과 마찬가지로 적용되는 것.
위의 식을 코드화한다면 과제 혹은 강의에서 확인할 수 있듯이
Vdw[l] := beta * Vdw[l] + (1-beta)dw[l]
W:= W-a*Vdw
가 된다.
728x90
'DeepLearning Specialization(Andrew Ng) > Improving Deep Neural Networks' 카테고리의 다른 글
[Week 3] 2. Batch Normalization (0) | 2020.10.24 |
---|---|
[Week 3] 1. Hyperparameter tuning (0) | 2020.10.24 |
[Week 2] 1. Optimization Algorithms (0) | 2020.10.23 |
[Week 1] Programming Assignments (0) | 2020.10.23 |
[Week 1] 3. Setting up your Optimization problem (0) | 2020.10.19 |