본문 바로가기
Computer Science/Artificial Intelligence

[인공지능] SP06. Fitting Models

by na1-4an 2023. 11. 8.

0. Review

  •  Shallow network, Deep network
  •  Loss function
  •  Learning model -> loss를 줄이는 파라미터 값을 어떻게 찾냐!
  • 학습 과정
  • (1) 파라미터 초기값 설정
  • (2) 손실에 대한 기울기(gradient, derivatices, 도함수) 계산
  • (3) 기울기로 손실 감소를 위해 파라미터 조정
  • (2), (3) 과정 반복

▶ 이번 단원에서는 파라미터를 어떻게 조정해서 손실을 줄이는지 다룰 예정.

6-1. Gradient descent

1. Gradient descent

  • 모델 fit을 위해서는 training set {xi, yi}가 필요.
  • 입력 xi를 출력 yi로 잘 매핑하는 모델 f[xi, ϕ]의 매개변수 ϕ를 찾아야함.
  • 이를 위해 손실함수 L[ϕ]을 정의. 이로 loss 정도를 하나의 숫자로 표현.
  • Optimization algorithm - loss를 줄이는 파라미터 찾기!

  <<경사하강법 2단계>>

  step1) 파라미터에 대한 손실 gradient 계산

  step2) 파라미터 업데이트

스칼라 a는 learning rate

 

2. Linear regression example

  • 선형회귀 예제
  • y = f[x, ϕ] = ϕ0 + ϕ1x.
  • ϕ0는 y절편, ϕ1x는 기울기.
  • I개의 입출력의 쌍이 주어진 경우,
  • 최소 제곱 손실 함수 선택

어떻게 해야 위의 단계를 단축해서 빠르게 minimum값에 도달할까!?

 

3. Gabor model

  • 사인 함수와 exp함수가 조합된 함수.
  • non-convex loss 함수

  • ϕ0 - 중심 위치 결정. (커질수록 왼쪽으로)
  • ϕ1 -폭 결정.(커질수록 폭이 작음)

 

4. Gabor model example

  • 28개의 입출력 쌍 [xi, yi].
  • xi를 [-15, 15] 사이로 균일하게 생성.
  • ϕ = [0.0, 16.6]T
  • 정규 분포 노이즈 추가(현실적으로 하기 위해)

data

  • 어떻게 하면 saddle point에서 global minimum으로 갈까??

 

5. Local minima and saddle points

  • Local minima: 기울기는 0, 어느 방향으로 움직여도 loss는 커짐. 그러나 함수의 전체 최솟값은 아님.
  • Global minimum: loss가 가장 작은 지점
  • Saddle point: 기울기는 0, 어떤 방향으로 움직이면 loss가 증가하고, 어떤 방향으로는 감소하는 지점

 

6-2. Stochastic gradient descent (SGD)

1. Stochastic gradient descent(SGD - 확률적 경사하강법)

  • 문제점1: 최솟값을 찾아도 그 값이 global minimum인지 몰라.
  • 문제점2: 경사하강법은 시작점에 따라 결정됨.(시작점 - 중요)
  • SGD: 각 단계에서 noise를 추가해서 문제를 해결.
  • noise를 추가해도 평균적으로는 하강하지만, 
  • 선택된 특정 방향은 반드시 가장 가파른 하강 방향이 아닐 수 있음.
  • SGD는 골짜기에서 벗어날 수 있는 가능성이 있음.

 

2. Batches and epochs

  • 매 반복에서 전체 훈련 데이터를 사용하는 대신, 무작위로 선택된 minibatch를 사용해 모델 업데이트.
  • 한 번 사용한 것은 다시 사용하지 않음.
  • 모든 데이터를 사용할 때까지 훈련 예제 처리.
  • 모든 데이터가 한 번 통과 → 1 epoch
  • Full batch = 일반적인 경사하강
  • (ℓi: i번째에서 계산된 손실)
  • (Bt: 현재 배치에 있는 입출력 쌍의 인덱스를 포함하는 집합.)
  • ex. batch size가 3. 이는 12개의 데이터 중 3개를 무작위로 뽑아 loss계산

 

3. SGD 특성(6)

  • 업데이트는 항상 최적은 아니더라도 합리적인 값임.
  • 훈련 예제를 랜덤으로 선택하고, 데이터셋을 반복하기 때문에 훈련예제는 모두 동일하게 기여.
  • 훈련 데이터의 일부만 기울기를 계산하므로 비용이 덜 듦.
  • local minima에서 벗어날 수 있음.
  • saddle point 근처에 갇히는 가능성을 줄임.
  • 새로운 데이터에 대해 더 잘 일반화됨.

 

4. Learning rate

  • 매 에포크마다 줄어듦.
  • 초기 단계) 높은 학습률, 합리적인 영역을 찾기 위해 골짜기에서 골짜기로 이동.
  • 나중 단계) 대략적으로 올바른 위치에 있으면 fine-tuning(정밀 튜닝). 학습률을 줄여나감.

 

6-3. Momentum

1. Maximtm likelihood

  • 파라미터 업데이트: 현재 배치에서 계산된 기울기와 이전 단계에서 이동한 방향의 가중 조합을 사용.
  • 베타 값이 크면 과거에 더 의존하는 것.
  • 알파 값은 고정된 학습률 

 

2. Momentum의 효과

  • 기울기는 이전 단계들의 가중 합계.(가중치는 시간이 지남에 따라 작아짐.)
  • 경로를 부드럽게 함.(지그재그로 가는 진동 행동 감소)
  • 수렴속도를 증가 시킴.
  • 모멘텀을 추가하므로써 실질적으로 학습률을 증가시킴.(실제 학습률은 고정.)
    • 기울기가 동일한 방향으로 연속될 때: 높은 학습률이 효과적임.(성큼 성큼)
    • 기울기 방향이 반복적으로 변경될 때: 낮은 학습률이 효과적임.

 

3. Nesterov(네스테로브) accelerated momentum

  • 현재 상황만 고려하는 것이 아니라 미래의 내 위치에서 기울기를 고려하자!
  • 현재 지점이 아닌, 예측 지점에서 기울기를 계산.

 

4. Source

  • Momentum

사실 상수라서 (1-a)해주든 말든 상관 없음.

  • Nesterov momentum

그냥 momentum과 기울기를 계산하는 부분이 윗부분에서 추가된 것만 다름.

 

8-5. Algorithms with Adaptive Learning Rates

  - 파라미터들에 대해 각각의 다른  learning rate을 적용하는 것이 어떨까??

1. AdaGrad

  • : 각 파라미터의 학습률을 개별적으로 조절.
  • 히스토리의 제곱값의 합의 반비례하게 스케일링함.
  • partial derivative의 손실이 큰 파라미터: 학습률 크게 감소
  • partial derivative의 손실이 작은 파라미터: 학습률 작게 감소
  • 문제점1: 초기부터 제곱된 기울기 값의 누적으로  학습률이 조기에 과도하게 감소될 수도 있다.
  • 문제점2: AdaGrad는 일부 모델에서는 잘 수행이 안될 수 있다.

 

2. Adadelta

  • 최근에 뭘 했는지만 기억하자!

 

3. RMSProp

  • AdaGrad를 수정하여 non-convex에서 더 잘 수행되도록 함.
  • 과거에 대해서는 작게, 현재에 대해서는 크게 weghit를 둠

RMSProp + Nesterov momentum

 

4. Adam

  • Adaptive moments
  • RMSPrp과 momentum을 합친 것.
  • 첫 번째 및 두 번째 모멘트 추정이 처음에 0에서 시작.

 

5. 올바른 최적화 알고리즘 선택

  • 어떤 알고리즘 선택?!
  • 요즘은 SGD, RMSProp, 모멘텀을 적용한 RMSProp, AdaDelta, Adam 5가지가 많이 사용됨.

 

6-5. Trainging algorithm hyperparameters

1. 하이퍼파라미터 종류(4) -> 하이퍼파라미터 탐색!

  • 학습 알고리즘 선택
  • 배치 사이즈
  • 학습률 스케줄
  • 모멘텀 계수
1. 비선형 함수의 경우 local minima와 saddle point가 존재할 수 있음.
2. SGD는 이러한 문제를 완화하는데에 도움.
3. Momentum은 수렴을 더 효율적으로 만듦.
4. Adam 알고리즘