상세 컨텐츠

본문 제목

[2주차 / DL 1팀 / 논문 리뷰] Neural Networks for Machine Learning

2023 Summer Session/DL

by Martin Hoffman 2023. 7. 20. 13:26

본문

Overview of mini-batch gradient descent

The error surface for a linear neuron

* error surface는 각 weight를 horizontal axis, error를 vertical axis로 두는 공간에 있음

=> quadratic bowl모양으로, vertical cross-section은 parabolas(포물선), horizontal cross-section은 ellipses(타원)형으로 나온다.

* multi-layer이며 non-linear인 net들의 error surface는 더 복잡하지만 보통 quadratic bowl로 좋은 예측이 가능하다.

 

* Learning rate가 클 경우 진폭이 튀게된다

-> 빠르게 움직이지만 작고 일정한 gradients로 움직이거나

-> 느리게 움직이지만 크고 일정하지않은 gradient로 움직이거나

 

Stochastic gradient descent

- full gradient를 계산하는 것이 아닌 mini-batch를 사용하여 계속해서 업데이트 해나가는 방법

- online: 각 case마다 weights를 갱신하는 극단적인 방법

- mini-batch가 보통 online보다 낫고 weights를 갱신하는데 less computation

 

A basic mini-batch gradient descent algorithm

- 초기 LR 추측 -> error가 나빠지거나 크게 튀면 learning rate를 줄이고, error가 일정하게 떨어지지만 느리다면 learning rate 높이기

- error이 더이상 떨어지지 않을 때 learning rate 낮추기 -> seperate validation set에 에러 적용

 

A bag of tricks for mini-batch gradient descent

  1. Be careful about turning down the learning rate
  2. Initializing the weights
  3. Shifting the inputs
  4. Scaling the inputs
  5. Decorrelate the input components

1. Learning rate 조절 시 유의

 

 

- turning down할 경우 에러의 random flunctuation을 줄여 다른방법보다 효율적이지만 학습이 느려진다

- 따라서 learning rate를 너무 빠르게 turning down하는 것은 위험

 

2. Initializing the weights

- two hidden units가 동일한 bias, incoming/outgoing weights를 가지면 항상 동일한 gradient를 얻게 되는데 weights를 initializing하여 symmetry 제거가능

- big fan-in(수용 가능한 최대 입력수)를 가지는 경우 작은 변화도 overshoot 학습을 야기할 수 있으므로 fan-in이 클 경우 incoming weights를 작게(proportional to sqrt(fan-in)) 만듦

 

3. Shifting the inputs

- 경사가 가파른 경우 input를 shifting함으로써 입력 벡터의 각 요소를 변형시켜 whole training set에서 zero mean을 가지게 할 수 있음

- hyperbolic tangent로 zero mean에 가까운 hidden activation 가능

 

4. Scaling the inputs

- 경사가 가파른 경우 input를 scaling함으로써 입력 벡터의 각 요소를 변형시켜 whole training set에서 unit variance를 가지게 할 수 있음

 

5. Decorrelate the input components

- 각각의 component를 decorrelate함으로써 효율적인 방법을 구사할 수 있다.

- Principal Components Analysis(PCA)

    * smallest eigenvalue를 가진 주성분을 drop시켜 차원축소 가능

    * 남은 주성분을 eigenvalue의 루트로 나눔으로써 elliptical error surface를 circular one으로 전환

    => circular error surface에선 gradient points가 minimum으로 바로 향하게 된다.

 

이외 mini-batch learning의 속도를 높이는 방법

- use momentum -> velocity를 바꾸는 데 gradient 사용

- 각 파라미터마다 적합한 LR 사용

- rmsprop

- curvature information에 적합한 다른 방법들 ..

 

The momentum Method

The equations & behavior of the momentum method

equations of momentum

  • 가중치를 갱신하기 전, 이전 기울기의 방향을 참고하여 관성을 획득
  • a(알파)는 모멘텀 계수로, 물체가 아무런 힘도 받지 않을 때 서서히 하강하도록 도움
    • 1에 가까워질수록 속도가 훨씬 빨라짐 
  • gradient가 매우 높은 경우엔 작은  모멘텀을 사용함 (e.g. a = 0.5)
  • gradient가 좀 줄어들고 계곡에 갇힌다면 높은 모멘텀을 사용함 (e.g. 0.9, 0.95 0.99)
  • overshoot의 위협
    • 이전 기울기 방향으로 너무 많이 이동해 최적점을 지나치는 문제 발생

A better type of momentum (Netrov 1983)

  • 기존의 모멘텀 
    • 현재 위치에서 gradient를 계산 후 축적된 gradient 방향으로 크게 점프

picture of the Neterov method

  • 관성 방향에 따라 먼저 움직인 후, 이동한 자리에서 기울기 계산 후 재이동

 

A separate, adaptive learning rate for each connection

The intuition

  • appropriate learning rate
    • 초기 가중치가 작은 경우 ~ 레이어마다 gradient 크기가 매우 다름
    • 유닛의 fan-in 크기에 따라 overshoot의 크기가 결정됨
      • overshoot: 동일 오류를 수정하기 위해 많은 가중치를 동시에 변경할 때 or 학습률이 너무 높을 때
    • global learning rate에 각 가중치 누적합을 고려해 계산하는건 어떨까? ~ Adaptive learning rate

One way to determine the individual learning rates

  • 모든 가중치의 local gain은 1로 시작
  • 만약 현재 시점과 이전 시점의 gradient의 부호가 같다면 조금 더해주고, 다르다면 곱하여 감소시킴
    • 진동이 시작되는 경우, 빠르게 변화량을 감소시킬 수 있음

individual learnig rates using signs of gradient

Tricks for making adaptive learning rates work better

  • full batch learning, big mini-batches를 사용
    • gradient의 부호 변화가 mini-batch를 샘플링하면서 발생하는 것이 아님을 보증
  • Adaptive learning rates는 momentum과 결합 가능
    • 가중치에 대한 현재 gradient와 속도의 부호의 결합을 통해 사용
  • Adaptive learning rates는 축 정렬 효과를 갖음
    • momentum은 축 정렬 효과 X

 

RMSprop: Divide the gradient by a running average of its recent magnitude

About Rprop : Using only the sign of the gradient

  • 가중치마다 gradient가 다 다를 수 있고 이는 학습 동안에 계속 변화할 수 있음
    • 하나의 global learning rate를 고르는 건 어려움
    • 부호만 고려하면 어떨까?
  • Rprop : Gradient의 부호 (방향성) + 개별적인 학습률 (step-size)
    • 기울기 방향이 동일하면 multiple로 increase
    • 기울기 방향이 반대라면 multiple로 decrease
    • 1/1,000,000 < step-size < 50
  • mini-batch는 각 배치마다의 gradient가 다르며 가중치 업데이트 또한 독립적으로 진행됨
    • 따라서 각 미니 배치마다 다른 gradient의 크기로 나누게 되어(부호만 사용하려면) 사용하기가 어려움
      • 경향성 반영이 안됨
        • ex) 10개의 미니 배치 중 9개에서 +0.1만큼, 마지막 10번째에서 -0.9만큼의 gradient를 얻었을 때, 부호만을 반영하는 rprop의 성질 때문에 -0.9라는 커다란 크기는 무시되고 부호만 고려되어 최종적으로 '증가'할 것
      • 인접한 mini-batch에 대해 나누는 숫자가 유사하다면 어떨까?

About RMSprop

  • 지수이동 평균(EMA)을 활용하여 최근 값을 더 잘 반영하도록 더 많은 가중치를 부여함
  • *Adagrad 옵티마이저에서 기울기의 누적합이 무한대로 커지게되면 학습이 정체되는 현상이 발생하는데, 이를 방지하고자 제안됨

지수이동평균, EMA
RMSprop 수식

관련글 더보기

댓글 영역