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) 파라미터 업데이트
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
- 정규 분포 노이즈 추가(현실적으로 하기 위해)
- 어떻게 하면 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
- Nesterov 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를 둠
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 알고리즘
'Computer Science > Artificial Intelligence' 카테고리의 다른 글
[인공지능] SP09. Regularization (0) | 2023.12.09 |
---|---|
[인공지능] SP05. Loss functions (0) | 2023.10.21 |
[인공지능] SP04. Deep neural networks (0) | 2023.10.18 |
[인공지능] SP03. Shallow neural networks (0) | 2023.10.18 |
[인공지능] 6장/ 7장/ 8장 (2) | 2023.10.17 |