경사하강법은 마치 산 정상에서 가장 낮은 곳을 찾아 내려가는 것과 같습니다. 조금씩, 그러나 꾸준히, 가장 효율적인 길을 찾아 최적의 해를 향해 나아갑니다.
경사하강법 (선형 모델 기준) 순서도
딥러닝 경사하강법의 전체 흐름은, 예측 → 오차 → 미분 → 업데이트를 반복하여 오차를 최소화하는 방향으로 가중치와 편향을 조정하는 것입니다.
경사하강법은 머신러닝 모델을 학습시키는 핵심 알고리즘으로, 아래 과정을 여러 번 반복하며 최적의 가중치($w$)와 편향($b$)을 찾아나갑니다.
1. 초기화
- $w$, $b$를 랜덤한 값으로 설정합니다.
- $\alpha$ (학습률)을 설정합니다. 학습률은 가중치와 편향을 업데이트할 때 얼마나 크게 변화시킬지 결정하는 중요한 하이퍼파라미터입니다.
2. 순전파 (Forward Propagation)
- 모델에 입력 $x$를 넣고 예측값($\hat{y}$)을 계산합니다.
- 선형 모델의 경우:
$$
\hat{y} = w \cdot x + b
$$
3. 손실(Loss) 계산
머신러닝 모델이 예측을 얼마나 잘하는지 평가하기 위해 손실(Loss)을 계산합니다. 손실은 모델의 예측값($\hat{y}$)과 데이터의 실제 정답($y$) 사이의 오차를 정량화한 값입니다. 이 손실 값을 최소화하는 방향으로 모델을 학습시키는 것이 머신러닝의 핵심 목표 중 하나입니다.
개별 샘플에 대한 손실: 평균 제곱 오차(Mean Squared Error, MSE)
가장 대표적인 손실 함수 중 하나는 평균 제곱 오차(Mean Squared Error, MSE)입니다. 하나의 데이터 샘플에 대한 MSE는 다음과 같이 정의됩니다:
$$\text{Loss} = \frac{1}{2}(y - \hat{y})^2$$
여기서 $\frac{1}{2}$이라는 항은 미분 시 계산의 편의성을 위해 일반적으로 곱해줍니다. 이 항이 없더라도 손실을 최소화하는 모델 파라미터는 동일하게 찾아지지만, 미분 과정에서 발생하는 2를 상쇄시켜 수식을 깔끔하게 만들어줍니다.
전체 데이터셋에 대한 MSE 계산
하나의 샘플이 아닌, 전체 $m$개의 데이터에 대한 모델의 성능을 평가하기 위해서는 평균 손실을 계산합니다.
1. 단순히 평균만 계산할 경우:
전체 데이터셋에 대한 MSE는 각 샘플의 오차 제곱을 합산하여 전체 샘플 수 $m$으로 나눈 값입니다.
$$\text{MSE} = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2$$
2. 미분 편의성까지 고려한 형태 (학습 시 자주 사용):
머신러닝 모델을 학습시킬 때는 손실 함수를 미분하여 모델의 파라미터를 업데이트합니다. 이때 미분 과정을 더욱 편리하게 하기 위해 다음과 같은 형태의 MSE를 자주 사용합니다:
$$\text{MSE} = \frac{1}{2m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2$$
여기서 $\frac{1}{2m}$은 다음 두 가지 의미를 가집니다:
- $m$: 전체 샘플 개수로 나누어 평균을 계산합니다.
- $\frac{1}{2}$: 개별 손실에서와 마찬가지로, 제곱 항을 미분할 때 생기는 2를 약분하여 미분 계산을 편리하게 합니다.
정리: 다양한 손실 수식의 목적
목적 수식 | 설명 |
---|---|
$\frac{1}{2}(y - \hat{y})^2$ | 한 샘플에 대한 오차 |
$\frac{1}{m} \sum (y_i - \hat{y}_i)^2$ | 전체 데이터셋에 대한 평균 제곱 오차 |
$\frac{1}{2m} \sum (y_i - \hat{y}_i)^2$ | MSE 학습 시 미분 편의성을 고려하여 자주 사용되는 형태 |
4. 기울기(Gradient) 계산 (역전파 Backpropagation)
- 손실($\text{Loss}$)을 $w$와 $b$에 대해 각각 미분하여 기울기(gradient)를 계산합니다. 이 기울기는 손실을 최소화하기 위해 $w$와 $b$를 어떤 방향으로 얼마나 움직여야 하는지 알려줍니다.
- $w$에 대한 손실의 기울기:
$$
\frac{\partial \text{Loss}}{\partial w} = (\hat{y} - y) \cdot x
$$ - $b$에 대한 손실의 기울기:
$$
\frac{\partial \text{Loss}}{\partial b} = (\hat{y} - y)
$$
5. 가중치, 편향 업데이트
- 계산된 기울기와 학습률($\alpha$)을 사용하여 $w$와 $b$를 업데이트합니다. 기울기가 가리키는 반대 방향으로 이동하여 손실을 줄이는 방향으로 나아갑니다.
- $w$ 업데이트:
$$
w \leftarrow w - \alpha \cdot \frac{\partial \text{Loss}}{\partial w}
$$ - $b$ 업데이트:
$$
b \leftarrow b - \alpha \cdot \frac{\partial \text{Loss}}{\partial b}
$$
6. 위 과정 반복 (학습)
- 위 2단계부터 5단계까지의 과정을 미리 정해둔 Epoch(에포크) 수만큼 반복하거나, 손실(Loss)이 더 이상 크게 줄어들지 않을 때까지 반복합니다. 이 반복 과정이 바로 모델의 "학습"입니다.
경사하강법 요약 순서
- $w$, $b$ 초기화
- 입력 $x$를 사용하여 예측값($\hat{y}$) 계산 (순전파)
- 예측값($\hat{y}$)과 정답($y$)으로 손실($\text{Loss}$) 계산
- 손실($\text{Loss}$)을 $w$, $b$에 대해 미분하여 기울기 계산 (역전파)
- $w$, $b$ 업데이트
- 위 과정을 반복
'머신러닝&딥러닝' 카테고리의 다른 글
[머신러닝·딥러닝]파이썬 시각화의 시작, matplotlib 필수 문법 총정리 (4) | 2025.07.02 |
---|---|
[머신러닝·딥러닝] Pandas 기초 정리 - Series와 DataFrame의 개념부터 실습까지 한 눈에! (0) | 2025.07.01 |
[머신러닝·딥러닝]NumPy 기초 정리 - 배열 생성부터 axis 개념까지 명확하게 (0) | 2025.07.01 |
[머신러닝·딥러닝]머신러닝·딥러닝 입문자를 위한 필수 파이썬 문법 정리 (2) | 2025.06.30 |
[딥러닝]딥러닝 처음 시작할 때 반드시 알아야 할 환경 정리: Colab, PyTorch, TensorFlow (6) | 2025.06.30 |