cs230_lec4_C2W2
Updated:
(From : deeplearningai https://www.youtube.com/watch?time_continue=386&v=AwQHqWyHRpU)
Minibatch Gradient Descent
- 데이터의 개수가 엄청 클때 (m이 클 때 ) 경사하강법을 쓰기에는 시간이 오래 걸림
- Notation : $X^{{1} }$
- 전체 $X$ 데이터를 split 한 것
- 전체 프로세스는 다음과 같다.
- epoch: 훈련세트를 거치는 한 반복
- Gradient descent를 하면 각자 다른 미니배치에서 가져온 거라 노이즈가 있음(전체적으로는 감소함)
- 가장 극단적인 예
- minibatch size=m : Batch Gradient Descent
- 정확하지만 반복에 오래걸림
- minibatch size=1 : Stochastic gradient descent
- noise가 많을 수도 있지만 최솟값으로 곧바로 가진 않는다
- Vectorization의 이점을 얻을 수 없다
- 적절한 크기의 mimibath size
- Vectorization 가능
- 전체 훈련 세트가 진행되기를 기다리지 않고 진행가능
- 그러면 적절한 크기의 minibatch size를 어떻게 설정할까?
- Training set가 작다면(m $\leq$ 2000)) : batch gradient descent 사용하기
- 일반적인 경우 : 64~512가 가장 일반적
- 미니배치가 CPU/GPU 메모리에 맞는지 확인하기(아니라면 더 성능이 안좋아질 수 있음)
- minibatch size=m : Batch Gradient Descent
Exponentially weighted Average
- 일반적으로 $v_t$는 $\frac{1}{1-\beta}$날 동안의 온도의 평균과 동일함
- $\beta$가 커지면 이전 값들에 가중치를 더 주기 때문에 선이 더 smooth해짐
Bias correction
- 초기부분에 이전 데이터가 없어서 이동평균을 할 수 없음
- $\frac{v_t}{1-\beta^t}$ 이용
Gradient descent with Momentum
- 이동 평균을 통해 경사 하강법을 보다 부드럽게 만들어줌
- 편향보정은 잘 하지 않는데 왜냐하면 해당되는 반복 이후에 gradient descent가 잘 진행되기 때문
- 시작 전에 $V_{db},V_{dw}=0$으로 초기화해줘야 함
- 일반적으로는 $1-\beta$를 생략해서 씀
- 모멘텀이 없는 경사 하강법보다 일반적으로 잘 작동함
- 두가지 방식이 있는데 원래의 방식인 왼쪽 방식을 앤드류 옹은 더 선호함
RMSprop
- 경사하강법을 더 빠르게 하는 방법 중 하나
- 현재의 미니배치에 대해 dW,db 계산
- 진동을 줄이는 방식이라는 점에서 모멘텀과 비슷함
- 큰 학습률을 사용해서 학습하지만 발산하지 않음
- 제곱근을 0으로 나누지 않게 작은 값을 추가해 주기도 함($\epsilon$)
- 제프리 힌튼이 가르친 코세라 강의에서 나왔음
Adam 최적화 알고리즘
- Adaptive moment estimation
- 넓은 범위의 딥러닝 아키텍처에 잘 작동하는 알고리즘
- ‘RMSprop + 모멘텀’
- 저자가 추천하는 하이퍼파라미터 값
- $\alpha$ : tuning해야 됨
- $\beta_1(dw)$=0.9
- $\beta_2(dw^2)$=0.99
- $\epsilon$=10^{-8}
Learning rate decay
- noise가 있기 때문에 일정ㅎ란 learning rate 를 사용하면 해 근방에서 알고리즘 반복이 끝나질 않음
- $\alpha=\frac{1}{1+(decay-rate)*(epoch-num) }\alpha_0$
- Exponential decay : $\alpha=0.95^{epoch-num}\alpha_0$,
- Discrete staircase : $\alpha=\frac{1}{\sqrt}\alpha_0$
- Manual decay : 데이터 수가 적을때 가능
Leave a comment