손실 곡면이 파라미터에게 내려갈 방향을 가리킵니다 | DAKER 커뮤니티

학습은 손실 숫자를 작게 만드는 일입니다. 그 숫자를 줄이려면 파라미터를 어느 쪽으로 얼마나 움직여야 하는지 알아야 합니다. 그 안내판이 기울기(gradient)입니다. 이 글은 미분 기호를 최소화하고, 손실 곡면에서 내려가는 방향이라는 그림으로 경사하강을 설명합니다. 앞글의 행렬이 무엇을 계산하는지를 다루었다면, 이번 글은 그 행렬의 숫자를 어떻게 고치는지를 다룹니다.

경사하강과 기울기 썸네일

손실 L은 모델 파라미터 θ의 함수입니다. θ를 조금 바꾸면 L도 조금 바뀝니다. 그 변화율의 모음이 ∇L(θ) 입니다. 벡터의 각 성분은 이 가중치를 아주 조금 키우면 손실이 얼마나 오르는가입니다. 양의 성분이면 그 방향으로 가면 손실이 커지고, 음의 성분이면 그 방향으로 가면 손실이 작아집니다. 따라서 손실을 줄이려면 기울기의 반대 방향으로 한 걸음 갑니다. 대회 제출물을 튜닝할 때도 결국 같은 문장을 반복합니다. 어떤 신호가 파라미터를 밀고 있는가.

미분은 아주 조금의 변화율입니다

한 변수 함수 f(x)에서 미분 f′(x)는 x를 아주 조금 키울 때 f가 얼마나 민감하게 변하는지를 말합니다. 기울기가 가파르면 같은 보폭에도 함숫값 변화가 큽니다. 평평하면 거의 안 변합니다. 접선의 기울기라는 고전 그림이 그대로 유효합니다. 다변수로 확장하면 각 축마다 그런 변화율이 생기고, 그것들을 모아 둔 벡터가 기울기입니다. 고차원이라고 해서 의미가 바뀌지는 않습니다. 성분만 많아질 뿐입니다.

편미분 ∂L/∂θᵢ 는 다른 파라미터를 고정한 채 θᵢ만 움직일 때의 변화율입니다. 모델에서는 파라미터가 수백만·수십억 개일 수 있습니다. 그래도 개념은 같습니다. 각 파라미터에 대한 편미분을 모은 것이 ∇L 입니다. 자동미분이 그 계산을 대신해 주지만, 빌더가 알아야 할 문장은 단순합니다. 지금 위치에서 손실이 가장 가파르게 증가하는 방향이 기울기이고, 학습은 그 반대 방향으로 이동합니다.

수치미분으로 검산하는 습관도 유용합니다. 파라미터를 ε만큼 흔들어 손실 차이를 ε로 나누면 근사 기울기가 나옵니다. 자동미분 결과와 크게 어긋나면 구현 버그 신호입니다. 작은 모델·작은 배치에서 한 번만 확인해도, 이후 디버깅 시간이 줄어듭니다. 대회 마감이 가까울수록 이런 기초 검산이 점수를 지킵니다.

경사하강은 반대 방향으로 한 걸음입니다

갱신식은 θ ← θ − η · ∇L(θ) 입니다. η(에타)는 학습률입니다. 보폭입니다. 너무 크면 최솟값 근처에서 진동하거나 발산합니다. 너무 작으면 학습이 매우 느립니다. 스케줄러가 η를 시간에 따라 줄이는 이유도, 초반에는 넓게 탐색하고 후반에는 섬세하게 맞추기 위함입니다. 워밍업은 초반 보폭을 천천히 키워 초기 불안정에서 폭주를 줄입니다. 코사인 스케줄·계단 스케줄은 그 보폭을 언제 줄일지의 설계입니다.

전체 데이터로 기울기를 매번 계산하면 정확하지만 비용이 큽니다. 그래서 미니배치의 평균 기울기로 근사합니다. 이것이 SGD(확률적 경사하강)의 핵심입니다. 노이즈가 생기지만, 그 노이즈가 얕은 지역 최솟값을 빠져나오게 돕는 경우도 있습니다. 모멘텀은 이전 걸음의 방향을 기억해 진동을 줄이고 가속을 만듭니다. Adam 같은 적응형 최적화는 각 파라미터마다 실효 보폭을 조절하지만, 여전히 기울기 정보를 써서 손실을 줄이는 쪽이라는 뼈대는 같습니다. 새 옵티마이저 논문을 읽을 때도 이 뼈대 위에 무엇을 덧씌웠는지 보면 됩니다.

손실 곡면과 기울기 반대 방향 갱신을 보여주는 다이어그램

손실 곡면을 상상하는 방법

파라미터를 가로축, 손실을 세로축으로 두면 언덕과 골짜기가 있는 곡면이 됩니다. 실제로는 차원이 높아 그릴 수 없지만, 2차원 접시 모양을 떠올리면 충분합니다. 현재 θ에 점을 찍고, 기울기 화살표를 그립니다. 학습 한 스텝은 그 화살표의 반대쪽으로 점을 옮깁니다. 여러 스텝이 모이면 점이 골짜기 바닥 근처로 미끄러집니다. 이 비유는 정확한 지형도가 아니라, 방향을 잡는 나침반입니다.

안장점·고원·날카로운 최솟값 같은 용어는 곡면의 형태를 말합니다. 고원에서는 기울기가 거의 0에 가까워 학습이 멈춘 것처럼 보입니다. 배치 정규화·잔차 연결·좋은 초기화가 이런 지형을 덜 험하게 만드는 설계로 읽히면, 논문의 학습 안정성 문장이 덜 추상적입니다. 손실이 계단처럼 갑자기 떨어지는 구간은, 학습률·데이터 커리큘럼·정규화 강도가 맞물리며 지형이 바뀐 때로 해석하는 경우가 많습니다.

빌더가 디버깅할 때 기울기를 봅니다

손실이 안 줄어들면 학습률·데이터·라벨·손실식·기울기 폭주를 의심합니다. 기울기 노름이 폭발하면 클리핑을 검토합니다. 기울기가 사라지면(거의 0) 활성화 포화·너무 깊은 경로·잘못된 동결을 점검합니다. 프레임워크의 loss.backward() 이후 param.grad가 채워지는 흐름을 한 번이라도 출력해 보면, 학습이 곧 기울기 반영임을 체감합니다. 로그에 손실만 남기고 기울기를 한 번도 안 보면, 원인 후보가 너무 넓어집니다.

검증 손실은 줄지 않는데 학습 손실만 줄면 과적합 신호입니다. 기울기 자체는 학습 데이터 기준에서 내려가는 방향을 알려 줄 뿐, 일반화를 보장하지 않습니다. 정규화·더 많은 데이터·단순한 모델·조기 종료는 그 다음 층위의 대응입니다. 또한 손실 스케일이 바뀌면 실효 학습률도 바뀝니다. 손실을 재정의했다면 η를 함께 재검토하십시오.

전이학습에서는 일부 층을 동결합니다. 동결된 파라미터의 기울기는 갱신에 쓰이지 않거나 계산을 생략합니다. 파인튜닝 범위를 정한다는 말은, 어느 좌표축을 움직일지 고른다는 말과 같습니다. LoRA처럼 저랭크 행렬만 학습하는 방법도, 움직일 방향을 작은 부분공간으로 제한하는 설계로 읽을 수 있습니다. 25만 빌더가 쌓은 실전에서도, 전 층을 한꺼번에 큰 학습률로 흔들기보다 범위를 나누는 편이 안전한 경우가 많습니다.

학습률을 고르는 실전 감각

학습률 탐색은 로그 스케일로 시도하는 경우가 많습니다. 1e-1, 1e-2, 1e-3, 1e-4처럼 자릿수를 바꿔 가며 짧은 구간만 돌려 보고, 손실이 부드럽게 내려가는 구간을 고릅니다. 한 에폭도 안 되어 손실이 NaN이 되면 보폭이 너무 큰 신호입니다. 반대로 수십 스텝에서도 손실이 거의 평평하면 보폭이 너무 작거나, 기울기가 거의 없는 상태입니다. 데이터 파이프라인 버그로 라벨이 섞여도 같은 증상이 나올 수 있으므로, 학습률만 탓하지 마십시오.

층마다 학습률을 다르게 주는 차등 학습률도 같은 원리입니다. 이미 잘 학습된 하위 층은 작게 움직이고, 새로 붙인 헤드는 더 크게 움직입니다. 이는 좌표축마다 보폭을 다르게 주는 일에 해당합니다. 스케줄러와 함께 쓰면, 시간에 따른 전역 보폭과 층별 상대 보폭이 곱해져 실효 이동량이 결정됩니다. 로그에 실효 학습률을 남기면 재현이 쉬워집니다.

배치 크기를 키우면 기울기 추정이 덜 시끄러워집니다. 어떤 경험 법칙은 배치가 커질 때 학습률도 함께 키웁니다. 다만 과제·정규화·옵티마이저에 따라 예외가 많으므로, 규칙보다 검증 곡선을 우선합니다. 분산 학습에서 글로벌 배치가 커질수록 이 튜닝이 더 중요해집니다. 작은 단일 GPU 실험에서 고른 η를 그대로 대형 배치에 옮기면 실패하는 경우가 있습니다.

손실 곡선의 읽기

학습 손실이 단조 감소만 한다고 성공이 아닙니다. 검증 손실·검증 메트릭이 함께 개선되는지 봐야 합니다. 학습 손실은 내려가는데 검증이 올라가면 과적합입니다. 둘 다 안 내려가면 과소적합·버그·보폭 문제 후보입니다. 초반 몇 스텝의 손실이 랜덤 수준보다 의미 있게 내려가는지 확인하는 것만으로도, 라벨 연결 오류를 빨리 잡을 수 있습니다.

부드러운 이동평균으로 손실을 보면 추세가 잘 보입니다. 다만 이동평균이 문제를 가릴 수도 있습니다. 특정 배치에서만 손실이 폭주한다면 데이터 이상치·잘못된 augmentation·수치 불안정 후보입니다. 기울기 노름을 같은 그래프에 올려 두면, 손실 스파이크가 기울기 스파이크와 동반되는지 바로 보입니다. 동반되면 클리핑·학습률·혼합정밀도 설정을 우선 점검합니다.

오늘 빌더가 가져갈 체크리스트

이 글이 아닌 것

이 글은 헤세 행렬·2차 최적화·수렴 증명 강의가 아닙니다. 빌더가 학습 루프를 읽을 때 필요한 1차 직관만 다룹니다.

이 글은 특정 옵티마이저의 하이퍼파라미터 튜닝 가이드가 아닙니다. 기본식과 의미만 고정합니다.

이 글은 데이터셋별 권장 학습률표를 제공하는 글이 아닙니다. 과제마다 검증 곡선으로 고르십시오.

한 줄로 줄이면 이렇습니다. 손실 곡면이 파라미터에게 내려갈 방향을 가리킵니다. 그 화살표의 반대가 학습의 한 걸음입니다.