AI가 배우는 방법: 한밤중 스모키 졸로프 모험을 통한 Gradient Descent 설명
Source: Dev.to
현대 세계의 많은 측면이 인공지능에 의해 구동됩니다
인공지능(AI)은 이제 우리 삶의 수많은 측면을 주도하며 인류 문명을 급격히 가속화하고 있습니다.
- 더 빠른 질병 탐지
- 자동화된 의사결정
- 의료 영상 분야의 획기적 발전
- 법률 사무소와 사법 시스템에서 조용하고 빠른 AI 도입
- 농업의 미래 재구성
이 엄청난 발전에도 불구하고, 많은 사람들은 여전히 AI가 그 뛰어남을 어디서 얻는지 이해하지 못합니다. AI가 오류를 식별하고 반복적으로 개선하는 능력은 정말 놀랍습니다.
이 글에서는 부드럽게 여러분의 손을 잡고 AI와 머신러닝 뒤에 숨은 진정한 초능력, 그래디언트 디센트라는 간단한 수학 알고리즘을 설명합니다.
Gradient Descent란 무엇인가?
Gradient descent는 매우 다양한 문제에 대해 최적의 해를 찾을 수 있는 범용 수학 알고리즘입니다. 머신러닝에서는 파라미터를 빠르게 업데이트하여 손실(또는 비용) 함수를 신속하게 최소화하는 방식으로 작동합니다.
아주 간단히 말하면, gradient descent는 AI가 자신이 얼마나 틀렸는지와 어떻게 하면 덜 틀릴 수 있는지를 파악하도록 도와줍니다.
Gradient descent의 작동 원리, 복잡성, 그리고 목적을 이해하기 위해 “엔진을 들여다보고” AI 모델처럼 사고해 봅시다.
한밤중의 스모키 졸로프 모험
당신이 추수감사절 저녁 식사에 참석하고 있다고 상상해 보세요. 엄마가 특별하고 입맛을 사로잡는 나이지리아식 졸로프 라이스를 요리했습니다. 밤은 완벽하고, 형제자매들과 다시 연결되는 시간을 갖고, 모두 잠자리에 듭니다.
한밤중에 뇌와 혀가 계속해서 더 많은 것을 갈망합니다. 스모키 졸로프 라이스는 너무 매혹적이라 몇 피트 떨어진 곳에서도 그 향을 맡을 수 있습니다.
당신은 참으려 하지만, 결국 일어나서 완전한 어둠 속에서 부엌으로 향합니다. 잡히고 싶지 않고, 무엇에 걸려 넘어지고 싶지도 않습니다.
집을 그래프로 매핑하기
집 바닥을 그래프 용지라고 생각해 보세요:
| 축 | 의미 |
|---|---|
| X‑축 | 좌우 위치 |
| Y‑축 | 앞뒤 위치 |
당신의 위치는 좌표 ((x, y)) 입니다.
시작점은 ((1, 1)) 입니다.
손실 함수
우리는 요리(주방)까지 얼마나 가까운지를 측정할 방법이 필요합니다.
주방은 ((3, 4))에 있다고 하겠습니다.
간단한 거리 공식은
[ \text{Distance} = \sqrt{(x-3)^2 + (y-4)^2} ]
편의를 위해 제곱 거리를 손실 함수로 사용합니다:
[ \boxed{L(x, y) = (x-3)^2 + (y-4)^2} ]
손실은 우리가 얼마나 “틀렸는지”를 알려줍니다: 손실이 클수록 주방에서 멀리 떨어져 있다는 뜻입니다. 우리의 목표는 가능한 한 손실을 줄이는 것입니다.
시작 손실
((1, 1))에서:
[ L(1,1) = (1-3)^2 + (1-4)^2 = (-2)^2 + (-3)^2 = 4 + 9 = 13 ]
우리는 주방에서 꽤 멀리 떨어져 있습니다.
테스트 지침 (수동 조정)
| 새 위치 | 새 손실 | 변화 |
|---|---|---|
| ((1.001, 1)) | ((1.001-3)^2 + (1-4)^2 = 3.996 + 9 = 12.996) | (-0.004) |
| ((1, 1.001)) | ((1-3)^2 + (1.001-4)^2 = 4 + 8.994 = 12.994) | (-0.006) |
두 작은 움직임 모두 손실을 감소시켜, 올바른 방향으로 가고 있음을 보여줍니다.
수학적 요령 (미분)
각 방향을 일일이 시험하는 대신, gradient—편미분들의 벡터를 계산합니다.
For
[ L(x, y) = (x-3)^2 + (y-4)^2 ]
편미분은 다음과 같습니다:
[ \frac{\partial L}{\partial x} = 2(x-3) \qquad \frac{\partial L}{\partial y} = 2(y-4) ]
((x, y) = (1, 1))에서
[ \frac{\partial L}{\partial x}\bigg|{(1,1)} = 2(1-3) = -4 \ \frac{\partial L}{\partial y}\bigg|{(1,1)} = 2(1-4) = -6 ]
해석
- 아주 작은 오른쪽 단계 ((+\Delta x))마다 손실은 대략 (4\Delta x)만큼 감소합니다.
- 아주 작은 앞쪽 단계 ((+\Delta y))마다 손실은 대략 (6\Delta y)만큼 감소합니다.
Gradient 벡터
[ \mathbf{g} = \begin{bmatrix} -4 \ -6 \end{bmatrix} ]
학습률
우리는 학습률 (\eta)을 사용하여 단계 크기를 제어합니다. (\eta = 0.1) (너무 작지도, 너무 크지도 않게) 을 선택합니다.
업데이트 규칙
[ \mathbf{p}{\text{new}} = \mathbf{p}{\text{old}} - \eta , \mathbf{g} ]
이를 적용하면:
[ \begin{aligned} x_{\text{new}} &= 1 - 0.1(-4) = 1 + 0.4 = 1.4 \ y_{\text{new}} &= 1 - 0.1(-6) = 1 + 0.6 = 1.6 \end{aligned} ]
따라서 ((1, 1))에서 ((1.4, 1.6)) 로 이동합니다.
새로운 손실
[ L(1.4, 1.6) = (1.4-3)^2 + (1.6-4)^2 = (-1.6)^2 + (-2.4)^2 = 2.56 + 5.76 = 8.32 ]
손실이 13 → 8.32 로 감소했습니다 – 큰 개선입니다!
다음 반복
두 번째 업데이트
( (1.4, 1.6) )에서:
[ \frac{\partial L}{\partial x}=2(1.4-3) = -3.2 \ \frac{\partial L}{\partial y}=2(1.6-4) = -4.8 ]
Gradient (\mathbf{g}= \begin{bmatrix} -3.2 \ -4.8 \end{bmatrix})
[ \begin{aligned} x_{\text{new}} &= 1.4 - 0.1(-3.2) = 1.4 + 0.32 = 1.72 \ y_{\text{new}} &= 1.6 - 0.1(-4.8) = 1.6 + 0.48 = 2.08 \end{aligned} ]
( (1.72, 2.08) )에서의 Loss:
[ L = (-1.28)^2 + (-1.92)^2 = 1.6384 + 3.6864 \approx 5.3248 ]
Loss가 8.32 → 5.32 로 감소했습니다. 이제 당신은 부엌 문 앞에 있습니다!
손실 함수가 convex(볼록)하기 때문에, 반복적인 gradient‑descent 단계는 전역 최적점(가능한 가장 낮은 손실)으로 수렴하는 것이 보장됩니다. gradient가 0이 되면 critical point(임계점)에 도달한 것이며, 이 경우 최소점에 도달한 것입니다.
실제 머신러닝에서
- Parameters: 현대 모델은 수백만 또는 수십억 개의 가중치를 가지고 있으며, 두 개만 있는 것이 아닙니다.
- Loss Functions: 일반적인 선택으로는 교차 엔트로피, 평균 제곱 오차 등 다양한 손실 함수가 있으며, 단순한 제곱 거리와는 다릅니다.
- Optimization: 경사 하강법(및 그 다양한 변형)은 선택된 손실을 최소화하기 위해 모든 파라미터를 업데이트하는 핵심 엔진입니다.
본질적으로 경사 하강법은 파라미터 벡터 (\theta)에 대한 오류 함수의 지역 기울기를 측정하고 가장 가파른 하강 방향으로 이동합니다. 기울기가 0이 되면, 즉, 임계점에 도달한 것입니다—이상적으로는 최소점입니다.
이제 AI 뒤에 숨은 “초능력”을 명확하고 직관적으로 이해할 수 있습니다: 겸손한 수학 알고리즘이 단계별로 거대한 모델을 더 나은 성능으로 이끄는 과정입니다.
# Gradient Descent and Its Variants
Navigate a complex, multi‑dimensional *loss landscape* with hills, valleys, and plateaus.
But the core algorithm—the relentless optimization engine—remains **Gradient Descent** and its smarter variants (Adam, RMSProp).
This is exactly how gradient descent works and how artificial intelligence can learn patterns and improve its predictions.
경사 하강법의 종류
배치 경사 하강법
모든 훈련 예제를 사용해 기울기를 계산하고, 한 번의 업데이트 단계만 수행합니다.
[ \theta_{\text{new}} = \theta_{\text{old}} - \eta \cdot \frac{1}{m}\sum_{i=1}^{m}\nabla L(\theta, x_i, y_i) ]
- (m) = 훈련 예제 총 개수
- (\eta) = 학습률
- (\nabla L) = 주어진 예제에 대한 손실의 기울기
확률적 경사 하강법 (SGD)
전체 데이터셋을 사용하는 대신, SGD는 매 단계마다 훈련 세트에서 무작위 인스턴스 하나를 선택하고 해당 인스턴스만을 기반으로 기울기를 계산합니다. 이는 알고리즘을 훨씬 빠르게 만들지만 잡음도 많아집니다. 확률적 잡음은 지역 최소값을 탈출하는 데 도움이 될 수 있지만, 학습률을 일정하게 유지하면 정확히 수렴하기보다 최소값 주변을 진동하는 경향이 있습니다.
각 무작위 예제 (i)에 대해:
[ \theta = \theta - \eta , \nabla L(\theta, x_i, y_i) ]
미니배치 경사 하강법
작은 배치(예: 16개 또는 32개의 예제)를 사용해 기울기를 계산하고, 그 후 업데이트를 수행합니다. 이는 배치 경사 하강법의 안정성과 SGD의 속도 사이에서 균형을 이룹니다.
크기 (b)인 각 배치 (B)에 대해:
[ \nabla L_{\text{batch}} = \frac{1}{b}\sum_{i \in B}\nabla L(\theta, x_i, y_i) ]
[ \theta = \theta - \eta , \nabla L_{\text{batch}} ]
결론
그라디언트 하강법이 어떻게 작동하는지를 이해하는 것은 심오합니다. 이는 인공지능—그리고 일반적인 학습—이 처음부터 완벽함을 목표로 하는 것이 아니라, 덜 틀리게 빠르고 정확하게 될 수 있는 신뢰할 수 있는 방법을 갖는 것임을 보여줍니다.
이는 인간 학습을 닮았습니다: 심리학자들은 종종 실수를 반성하거나 명상하는 시간을 권장하여 그 실수를 논의하고 해결책을 고안하도록 합니다. 그라디언트 하강법은 인공지능과 인간 정신 사이의 개념적 다리 역할을 합니다.