CV(컴퓨터 비전)이든, LLM(거대언어모델)이든, 음성 인식이든, 심지어 알파고(강화학습)든 **"오차 역전파(Backpropagation)를 통한 경사 하강법(Gradient Descent)"**이라는 대원칙은 변하지 않습니다.
이 5단계 흐름은 모델의 종류와 상관없이 "학습(Training)"의 심장 박동과 같습니다.
[팩트 체크] CV vs LLM 학습 루프 비교
코드로 보면 더 명확합니다. 변수 이름만 다를 뿐, 로직은 완벽하게 똑같습니다.
| 단계 | CV (ResNet, EfficientNet) | LLM (GPT, Llama) | 의미 |
| 1. 초기화 | optimizer.zero_grad() | optimizer.zero_grad() | 이전 배치의 기울기 삭제 (안 하면 꼬임) |
| 2. 추론 | pred = model(images) | pred = model(tokens) | 문제 풀기 (Forward) |
| 3. 오차 | loss = criterion(pred, labels) | loss = criterion(pred, next_token) | 채점하기 (Loss Calculation) |
| 4. 역전파 | loss.backward() | loss.backward() | 틀린 이유(기울기) 찾기 (가장 중요) |
| 5. 갱신 | optimizer.step() | optimizer.step() | 뇌세포(가중치) 수정하기 |
[면접 대비] "왜 이 순서인가요?" (엔지니어가 꼭 알아야 할 디테일)
면접관이 "이 5단계에서 중요한 점이 뭐냐"고 물으면 이렇게 대답해야 합격입니다.
- zero_grad()가 왜 필요한가?
- 파이토치는 기본적으로 기울기(Gradient)를 **'누적(Accumulate)'**합니다.
- 초기화를 안 하면, 이전 배치의 기울기에 현재 배치의 기울기가 더해져서 학습 방향이 엉망이 됩니다.
- Tip: LLM처럼 메모리가 부족한 경우, 일부러 초기화를 안 하고 몇 번 모았다가(Gradient Accumulation) 업데이트하기도 합니다.
- backward()는 무엇을 하는가?
- 미분(Chain Rule)을 통해 **"이 오차에 대해 각 파라미터가 얼마나 책임이 있는지"**를 계산합니다. 책임이 큰 녀석일수록 많이 수정됩니다.
- step()은 무엇을 하는가?
- backward()가 찾아낸 책임(기울기)과 Learning Rate(학습률)를 곱해서 실제로 값을 빼줍니다. (내리막길로 한 발자국 이동)
[비유] 양궁 선수 훈련
이 과정을 양궁에 비유하면 완벽하게 이해됩니다.
- zero_grad: 이전 화살을 쏘고 나서 자세를 다시 바로잡는다. (리셋)
- forward: 활을 쏘아 과녁을 맞춘다.
- loss: 과녁 정중앙에서 얼마나 빗나갔는지 잰다. (오차 측정)
- backward: "아, 바람이 오른쪽에서 불었고 내 팔이 너무 낮았구나" 하고 원인을 분석한다.
- step: 다음 발을 위해 조준점을 왼쪽 위로 살짝 수정한다.
'AI 엔지니어준비' 카테고리의 다른 글
| dummy_data dummy_input 이란? (0) | 2026.01.31 |
|---|---|
| 딥러닝의 종류 (0) | 2026.01.30 |
| 머리에 박아둬야 할 것과 검색해서 갖다 써도 되는 (0) | 2026.01.30 |
| ONNX(Open Neural Network Exchange)🌐 (0) | 2026.01.30 |
| float16(FP16) vs bfloat16(BF16)🥊 (1) | 2026.01.30 |