Lecture 7 | Training Neural Networks II

2022. 2. 13. 15:25

Lecture 7 | Training Neural Networks II

Optimization

다음과 같이 손실함수를 나타냈을때 Optimization은 loss를 어떻게 줄이는지에 대한 방법이다.

 

SGD(Stochastic Gradient Descent)

우리가 잘 알고있는 SGD에는 몇 가지 문제점들이 있다.

문제점

  • High condition number problem
  • Local minima, Sandle point
  • Noisy estimate

 

1. High condition number problem

SGD의 첫 번째 문제점은 Loss가 수직 방향의 가중치 변화에 훨씬 더 민감하게 반응한다는 것이다.

  • SGD는 다음과 같은 gradient vector를 갖는다.
  • 이렇게 gradient가 수직 방향의 더 민감하게 반응하기 때문에 loss의 최적값을 찾기 위해 수직방향으로는 빠르게 변화하지만 수평방향으로는 느리게 업데이트되서 loss를 찾는데 시간이 오래걸리게 된다.

  • 2차원에서의 SGD Weight update 과정은 위와 같이 지그재그로 수행된다.

이러한 SGD의 문제점은 높은 차원일수록 더욱 더 큰 문제인데 그 이유는 높은 차원일수록 가중치가 수천, 수억개 일수 있고 이는 불균형의 가능성이 올라간다는 뜻이기 때문이다.

 

2. Local minima, Sandle point

SGD의 두 번째 문제점은 Local minima와 Sandle point에서 gradient의 update가 멈춰버릴수 있다는 것이다.

  • Local minima: 증가 → 감소
  • Sandle point: 감소 → 감소 or 증가 → 증가
  • SGD는 gradient가 0인 Local minima와 Sandle point에서 멈춰버린다.
  • 또한 Sandle point주변도 gradient가 0과 가깝기 때문에 느리게 update가 수행된다.

(참고: 차원이 증가할 수록 Sandle point가 Local minima보다 더 문제이다.)

 

3. Noisy estimate

SGD의 세 번째 문제점은 정확한 gradient를 구하는개 아니라 noisy estimate만 구할 뿐이라는 것이다.

  • SGD는 N(input)이 커지면 Loss를 게산하기 어렵기 때문에 batch단위로 Loss를 구하여 gradient를 계산하는 방법이다.
  • 따라서 정확한 gradient를 구하기 어렵고 noisy estimate만을 구한다.

(그림은 임의의 noise를 섞어 SGD를 시행한 결과: 학습이 제대로 이뤄지지 않음)

 

SGD + Momentum

이러한 SGD의 문제점들을 보완한 방법이 Momentum이다.

 

Momentum Idea

Momentum의 기본적인 아이디어는 속도(Velocity)를 사용하는 것이다.

  • p(코드에서는 rho)는 Velocity의 비율, 즉 속도를 조절하는 역할을 한다.

 

과정

  • 현재 gradient vector를 구한후 Velocity vector를 더해준다. 이것을 update vector로 사용한다.

 

Momentum’s 장점

  • Momentum은 SGD의 문제점 1,2를 극복하였다. (High condition number problem, Local minima & Sandle point)
  1. High condition number problem: gradient vector만을 이용하는 대신 Velocity vector를 결합하여 사용하여 수직방향의 변동은 줄어들고 수평방향의 움직임은 점차 가속화하여 약간의 상쇄역할을 수행한다.

  1. Local minima, Sandle point: gradient가 0이어도 이전에 남아있는 Velocity는 남아 있기 때문에 앞으로 전진 할수 있다.

 

Nesterov Momentum

  • Original Momentum: 현재 gradient를 계산 후에 Velocity와 합친다.
  • Nesterov Momentum: Velocity로 이동한 후 그 지점에서 gradient를 계산하고 원점으로 돌아와 두 벡터를 합친다.

 

특징

  • convex optimization문제에서는 성능이 좋지만 non-convexoptimization 문제에서는 성능을 보장할 수 없다.

  • Nesterov Momentum은 다음과 같은 수식을 따른다.
  • Nesterov Momentum의 기존 수식은 서로 다른 지점에서 gradient와 velocity를 구해야하기 때문에 번거롭다. 하지만 수식을 조금만 바꾸면 같은 지점에서 gradient와 velocity를 구할 수 있다.

(Nesterov Momentum은 현재와 이전의 velocity간의 에러보정(Error-correcwting term)이 추가된것이다.)

 

성능 비교

  • Momentum은 이전 velocity의 영향을 받기 때문데 minima를 지나치게 된다.
  • Nesterov는 모멘텀보다 overshooting이 적다. (velocity의 방향이 잘못됬을 경우 현재의 gradient 방향을 좀 더 활용하기 때문에) → ???????

 

AdaGrad

AdaGrad는 SGD의 문제점을 Momentum과는 다른 방향으로 극복한 방법이다.

 

AdaGrad Idea

AdaGrad의 아이디어는 훈련도중 계산되는 gradient를 활용한는 것이다.

  • gradient의 제곱을 하여 Learning rate에 나눠준다.

 

AdaGrad’s 장점

AdaGrad는 gradient가 높은 차원에서는 큰 값으로 나누고 gradient가 작은 차원에서는 작은 값으로 나눠 각기 다른 차원에서의 gradient가 한 차원의 더 민감하게 반응하지 않고 고루 반응할 수 있도록 한다.

 

AdaGrad의 문제점

  • AdaGrad는 위와 같이 계속해서 gradient의 제곱값(정확히는 누적 gradient의 합)을 나눠주기 때문에 Learning late가 감소하여 step size가 줄어들게 된다.
  • 이는 convex case에서는 좋은 것이지만, non-convex에서는 멈춰버릴수 있다.

 

RMSProp

  • 위와 같은 AdaGrad의 문제점을 보완한것이 RMSProp이다.
  • RMSProp는 AdaGrad의 gradient제곱항을 그대로 사용하지만 계속해서 누적시키는 것이 아니라 일정한 비율을 주어 계산한다.

(decay_rate는 보통 0.9 or 0.99를 사용한다.)

 

성능

  • Momentum은 overshooting하지만 RMSProp는 각 차원마다의 상황에 맞도록 적절하게 궤적(tradjectory)를 수정시킨다.

 

Adam

Adam은 Momentem의 아이디어 velocity와 Adagrad, RMSProp의 학습률 감소 방법을 모두 사용한 방법이다.

 

Adam first form

  • Adam의 초기 수식은 다음과 같다.

 

문제점

  • 1회 update를 한 후에도 second_mement는 여전히 0에 가까운값을 갖게 된다. 따라서 update step에서 나눠주는 값이 크기 때문에 초기 step이 엄청나게 커지게 된다.
  • 이것은 최기화가 엉망이 되게하고 엉뚱한 곳으로 이동할 수 있다. 또한 결국 수렴을 할 수 없게 된다.
  • 여기서 중요한 것은 커진 step은 손실함수가 가파르기 때문이 아니라 인공적인 현상이라는 것이다.

 

Adam full form

따라서 Adam은 다음과 같은 수식을 사용한다.

??????

(beta1은 보통 0.9, beta2는 보통 0.99, learning rate는 1e-3~5e-4를 사용한다.)

 

성능

  • Adam은 Momentum처럼 overshooting 하지만 엄청 심하지는 않다. (velocity)
  • 또한 각 차원의 상황을 다로 고려해 step을 이동한다. (learnng rate decay)

 

Learning rate

어떤 optimizer를 선택하는 지도 중요하지만 learning rate를 어떻게 주는지도 중요하다.

  • 위와 같이 loss그래프를 그려 알맞은 learning rate를 선택할 수 있다.

 

Learning rate decay over time

학습도중에 학습률을 낮추는 방법

  • learning rate decay는 학습초기부터 고려하지 않고 먼저 learning rate decay를 사용하지않고 수행한 후loss curve를 보면서 decay가 필요한 부분이 어느곳인지 고려해 사용한다.

 

N-Order optimization

First-order Optimization

  • first-order optimization은 gradient의 정보를 이용해서 손실함수를 선형함수로 근사하는 방법이다.
  • 이러한 first-order optimization방식은 한 step으로는 멀리 갈수 없다.

 

Second-order Optimization

  • second-order optimization은 first-order방식과는 달리 2차한수로 근사하는 방법이며 이를 이용하면 한번의 step으로 멀리 갈 수 있게 된다.

 

Second-order optimization 특징

  • second-order optimization방식은 위와 같은 수식을 따른다.
  • second-order optimization은 learning rate를 사용하지 않는다는 특징을 가지고 있다.
  • 하지만 second-order optimization에서 사용하는 Hessian metrix는 NxN 행렬이라 너무 크기 때문에 딥러닝에서 사용할 수 없다.

 

L-BFGS

Hessian metrix를 근사하는 방법을 사용한다.

 

  • L-BFGS는 fill batch update가 가능하고 stochasticity이 적은 경우면 매우 잘 동작한다.

 

정리


Overfitting

  • 우리의 최종 목표는 traing의 loss를 줄이는 것이 아니라 새로운 데이터에 loss를 줄이고 accuracy를 높이는 것이다.

 

Model Ensembles

  • Ensemble의 기본적인 방법은 여러 모델들을 independent하게 train시키고 test할때 그들의 평균을 사용하는 것이다.

 

Tips and Tricks

  • Ensemble은 여러모델을 독립적으로 train하는것대신에 하나의 모델의 여러 snapshot을 사용할 수도 있다.
  • 이때 cyclic learning rate schedule을 사용하여 각기 다른 learning rate를 사용한다.

 

Regularization

하나의 모델에서 overfitting을 막는 방법

 

Add term to loss

  • Loss함수 뒤에 L1, L2 regularization을 넣어서 사용한다.

 

Dropout

  • Dropout은 랜덤하게 몇개의 뉴런들만 골라 학습하는 방법이다.
  • FC layer에서 주로 사용하지만 Conv layer에서는 여러 channel이 있기 때문에 channel자체가 dropout되는 것을 방지하기 위해 fearture map에서 dropout을 시행한다.

이러한 Dropout방법은 네트워크가 일부 feature에만 의존하는 것을 방지한다.

 

Dropout: Test time

  • Dropout에서 적분을 통해 randomness를 marginalize out 시키는 것으로 생각할 수 있는데 적분을 하는 것을 상당히 까다롭다.
  • 따라서 간단한 방법 중하나는 샘플링을 통해서 적분을 근사시키는 것이다.

 

A common pattern

이러한 많은 Regularization방법들은 일정한 패턴을 가지고있다.

 

Data Augmentation

  • Data Augmentation기법은 input 데이터를 affine변환을 통해 다양한 특징을 변형시키는 것이다.
  • 이렇게 하면 input data의 랜덤성을 부여할 수있다.


Transfer Learning

  • Transfer Learning이란 이미 학습 시킨 파라미터를 가져와 다른 모델에서 사용한는 것이다.
  • 이렇게하면 적은 데이터로도 좋은 성능을 낼 수 있다.


Syllabus

Youtube

BELATED ARTICLES

more