AI & Data/Deep Learning

[딥러닝] Gradient Descent (경사하강법)

테드리 2024. 4. 4. 00:55

1. ML as an Optimization Problem

기계학습이 해야 할 일을 식으로 정의하면, 주어진 cost function $J(\theta)$에 대해, $J(\theta)$를 최소로 하는 $\hat{\theta}$를 찾는 것.

$$ \hat{\theta} = argmin_{\theta}J(\theta)$$

출처: Visual Media Lab

 

2. Iterative Optimization

2.1 General Prinicples

  • Training Dataset $D$
  • Model & Predicted Output: $\hat{y} = h_{\theta}(x)$
  • Cost Function : $J(\theta)$

1) 파라미터 $\theta$ 초기화

2) 모든 epoch에 대해

  1. 출력값 $\hat{y}$ 예측, cost $J(\theta)$ 계산하기
  2. 만약 $J(\theta)$가 최적이라면, 학습 종료
  3. 최적이 아니라면, 파라미터 $\theta$ 업데이트, 1번 반복

출처: Visual Media Lab

 

2.2 Parameter Update

1) $L(\theta)$가 작아지도록 $\Delta{\theta}$를 구한다.

2) $\theta$를 업데이트 : $\theta =  \theta + \Delta{\theta}$

 

 

2.3 Learning Modes

  • On-line mode: 모든 training sample에 대해 파라미터 업데이트
  • Batch mode: 모든 training epoch에 대해 파라미터 업데이트
  • Mini-Batch mode: 모든 훈련집합의 부분집합에 대해 파라미터 업데이트

출처: Visual Media Lab

 

3. Gradient Descent

Gradient는 "기울기"이다. 경사하강법의 목적은 모델의 Weight $w$를 어떻게 바꿔야 Cost를 줄일 수 있을까?

$$Cost = J(\theta)$$

 

- Gradient $g \geq 0$인 경우 : $\Delta J \leq 0$ 이려면 $\theta$ 감소

- Gradient $g \leq 0$인 경우 :  $\Delta J \leq 0$ 이려면 $\theta$ 증가 

 

따라서 경사하강법은 경사 $\frac{dJ}{dw}$의 반대 방향으로 weight를 변화시키는 것

 

 

◈ Parameter Update

 

Cost Function의 Gradient에 기반하여:  $${\color{Blue}{\theta = \theta - \alpha\frac{dJ}{d\theta}}}$$

 

- $\alpha$ : Learning Rate (학습률), 학습을 얼마나 빠르게 진행할 지를 결정해주는 값

 

◈ Batch Learning Modes

출처: Visual Media Lab

 

Gradient Descent는 매 훈련 샘플마다 파라미터의 업데이트를 수행하기 때문에 샘플들의 순서에 의존할 수 있다. 따라서 결과가 training example의 순서에 의존하지 않도록 example들의 순서를 임의로 선택해서 파라미터를 업데이트하는데, 이를 Stochastic Gradient Descent (SGD) 라고 한다.

출처: Visual Media Lab

 

4. GD vs. SGD

출처: Visual Media Lab

 

5. Minibatch Gradient Descent (Minibatch GD)

◈ Minibatch Learning Modes

  • 모든 훈련집합의 부분집합에 대해 파라미터 업데이트
    • Training set을 여러 개의 minibatch로 나누고, minibatch에 속한 모든 training example의 Gradient를 평균한 후 한꺼번에 갱신
  • Online mode와 Batch mode의 중간으로 볼 수 있음

 

◈ Minibatch Learning Modes are most commonly used in ML & DL

  • 부분집합 (subset)을 선택하면 Vectorization을 활용할 수 있다.
  • 온라인"보다 업데이트 횟수가 적기 때문에 업데이트 시 노이즈가 적다.
  • 배치"보다 더 많은 업데이트/에포크를 수행하므로 더 빠르게 수렴한다.

'AI & Data > Deep Learning' 카테고리의 다른 글

[딥러닝] PyTorch - Transforms  (1) 2024.08.17
[딥러닝] PyTorch - Dataset and Data Loader  (0) 2024.08.17
[딥러닝] PyTorch - Tensor  (0) 2024.08.16
[딥러닝] DL 실무 기초 개념  (0) 2024.08.16
[딥러닝] Neural Network  (1) 2024.07.15