AI 기초

경사 하강법이란 무엇인가?

mm
Unite.AI를 Google의 선호 소스에 추가

경사 하강법은 목표 함수를 감소시키기 위해 모델 파라미터를 조정하는 최적화 방법입니다. 신경망 학습에서는 이 목표가 보통 예제들에 대해 계산된 손실(loss)입니다. 기울기는 가장 가파른 지역 증가 방향을 가리키므로, 경사 하강법은 반대 방향으로 한 걸음 내딛습니다.

기울기는 지역 민감도를 설명하지만, 그 크기가 모델이 얼마나 빨리 “학습”하고 있는지를 직접적으로 측정하는 것은 아닙니다. 실제 진행 상황은 학습률, 곡률, 노이즈, 파라미터화, 옵티마이저 상태 및 데이터에 따라 달라집니다.

핵심 요점

  • 역전파는 기울기를 계산하고, 경사 하강법은 이를 사용해 파라미터를 업데이트합니다.
  • 미니배치 최적화는 딥러닝에서 표준적인 실용적 접근 방식입니다.
  • 학습률은 업데이트 규모를 제어하며 매 단계마다 감소하기보다 스케줄을 따를 수 있습니다.
  • 모멘텀, AdamW, 클리핑, 정규화는 각각 다른 최적화 문제를 해결합니다.
Loss contours with optimization paths for an appropriate learning rate, a rate that is too small, and a rate that is too large and oscillates
학습률 선택은 손실 표면을 통한 경로를 바꾸며 최적화가 진행되는지를 결정할 수 있습니다.

기본 업데이트 규칙

파라미터 벡터 θ, 학습률 η, 그리고 손실 L에 대해:

θ ← θ - η∇L(θ)

기울기 ∇L(θ)는 각 파라미터에 대한 편미분 하나씩을 포함합니다. 이를 빼면 지역적으로 하강합니다. 정 stationary point는 기울기가 0이지만 최소점, 최대점, 안장점 또는 평평한 영역일 수 있습니다. 딥러닝 손실 표면은 비볼록이므로 훈련이 고유한 전역 최소점이나 손실 0을 찾는 것이 보장되지 않습니다.

배치, 확률적, 그리고 미니배치 방법

배치 경사 하강법

배치 경사 하강법은 매 업데이트마다 전체 훈련 데이터를 사용해 기울기를 계산합니다. 추정값은 안정적이지만 시간과 메모리 비용이 많이 들 수 있으며, 한 번의 업데이트로는 최신 가속기를 충분히 활용하지 못할 수 있습니다.

확률적 경사 하강법

엄격한 확률적 경사 하강법은 매 업데이트마다 무작위로 선택된 하나의 예제를 사용합니다. 이때의 기울기는 노이즈가 섞여 있어 손실 표면 탐색에 도움이 될 수 있지만, 단일 예제 연산은 병렬 하드웨어에서 비효율적일 수 있습니다.

미니배치 경사 하강법

미니배치 훈련은 일부 예제들의 부분집합으로부터 기울기를 추정합니다. 이는 통계적 노이즈와 효율적인 행렬 연산 사이의 균형을 맞추며 딥러닝에서 일반적인 접근 방식입니다. 배치 크기는 메모리, 처리량, 기울기 노이즈, 정규화, 그리고 때때로 일반화에 영향을 줍니다.

학습률 선택하기

너무 큰 학습률은 유용한 영역을 넘어가거나 발산을 일으킬 수 있습니다. 너무 작은 학습률은 훈련을 비현실적으로 느리게 만들거나 평평한 영역에서 멈출 수 있습니다. 최적의 규모는 옵티마이저, 배치 크기, 모델, 초기화, 그리고 목표에 따라 달라집니다.

스케줄은 점진적으로 워밍업하거나, 특정 단계에서 감소시키거나, 코사인 곡선을 따르거나, 검증 진행에 반응하도록 할 수 있습니다. 학습률은 매 업데이트마다 단조롭게 감소할 필요는 없습니다. 워밍 리스타트와 순환 스케줄은 훈련의 일부 구간에서 학습률을 의도적으로 증가시킵니다.

모멘텀

모멘텀은 과거 기울기의 지수 이동 평균을 유지합니다. 이는 일관된 방향으로 진행을 가속화하고 가파르고 좁은 방향에서의 진동을 감소시킬 수 있습니다. 네스테로프 스타일 모멘텀은 모멘텀 방향을 미리 살펴본 뒤 기울기를 평가하거나 근사합니다.

적응형 옵티마이저

RMSProp은 제곱된 기울기의 이동 평균을 사용해 업데이트를 스케일링합니다. Adam은 모멘텀과 유사한 1차 모멘트와 2차 모멘트 스케일링을 결합합니다. AdamW는 가중치 감쇠를 적응형 기울기 업데이트와 분리하며 트랜스포머에 널리 사용됩니다.

적응형 옵티마이저는 초기 훈련을 더 쉽게 만드는 경우가 많지만, 모든 모델이나 최종 일반화 목표에 자동으로 우수한 것은 아닙니다. 옵티마이저를 비교할 때는 동일한 스케줄과 신중한 튜닝이 필요합니다.

기울기 클리핑 및 누적

기울기 클리핑은 기울기의 노름이나 값을 제한해 폭발하는 기울기의 영향을 줄이며, 특히 순환 신경망이나 불안정한 훈련에서 유용합니다. 기울기 누적은 업데이트 전에 여러 작은 배치의 기울기를 합산해 메모리가 제한될 때 더 큰 유효 배치를 근사합니다.

최적화 모니터링

훈련 및 검증 손실, 작업 메트릭, 학습률, 기울기 노름, 파라미터 노름, 그리고 수치 오류를 추적합니다. 훈련 손실은 감소하지만 검증 성능이 악화되는 경우는 과적합을 나타내며, 자동으로 계속되어야 할 최적화 성공이 아닙니다.

최적화는 주어진 목표를 최소화합니다. 낮은 손실이 데이터, 메트릭, 혹은 실제 동작이 적절함을 증명하지는 않습니다. 데이터 누수, 부실한 라벨, 목표와의 불일치는 잘 최적화되었지만 해로운 모델을 만들 수 있습니다.

최적화 기하학 및 업데이트 규칙

경사 하강법은 손실의 기울기와 반대 방향으로 파라미터를 업데이트합니다. 전체 배치 하강법은 매 단계마다 모든 훈련 예제를 사용하고, 확률적 하강법은 하나를 사용하며, 미니배치 방법은 부분집합으로부터 기울기를 추정하고 딥러닝을 지배합니다. 학습률은 단계 규모를 정합니다. 너무 작으면 계산이 낭비되거나 멈추고, 너무 크면 진동하거나 발산합니다. 모멘텀은 이동 방향을 누적하고, Adam과 같은 적응형 방법은 기울기 모멘트를 사용해 좌표를 스케일링합니다. 이들의 서로 다른 암묵적 편향은 유사한 훈련 손실을 갖지만 일반화가 다른 모델을 만들 수 있습니다.

신경망의 손실 표면은 평평하고 날카로운 영역, 안장점, 대칭성, 그리고 조건이 좋지 않은 방향을 포함합니다. 특성 스케일링, 정규화, 초기화, 잔차 연결, 그리고 전처리는 옵티마이저가 보는 기하학을 변화시킵니다. 스케줄은 워밍업, 감소, 순환, 혹은 플래토에 반응할 수 있습니다. 가중치 감쇠는 일부 적응형 옵티마이저에서 단순히 L2 페널티를 추가하는 것과는 다릅니다. 배치 크기는 노이즈, 메모리, 병렬성, 학습률 체계에 영향을 주므로 옵티마이저 비교는 동일한 훈련 예산과 신중한 튜닝이 필요합니다.

진단, 재현성 및 중단

훈련 및 검증 손실, 작업 메트릭, 기울기와 파라미터 노름, 학습률, 처리량, 그리고 수치 경고를 추적합니다. 발산은 손상된 배치, 잘못된 라벨, 불안정한 혼합 정밀도, 혹은 잘못된 손실 감소 방식에서 발생할 수 있습니다. 플래토는 용량 부족, 포화된 활성화, 부실한 특성, 과도한 정규화, 혹은 스케줄 문제를 나타낼 수 있습니다. 과적합을 해결하려면 데이터, 증강, 정규화, 혹은 조기 중단이 필요하며, 이는 옵티마이저가 실패했다는 주장이 아닙니다. 대표적인 오류를 검사하고 훈련 복잡성을 늘리기 전에 간단한 베이스라인과 비교합니다.

재현성을 위해서는 시드, 데이터 순서, 코드, 설정, 하드웨어 및 라이브러리 버전이 필요하지만 일부 가속기 커널은 비결정적일 수 있습니다. 옵티마이저와 스케줄러 상태를 포함한 체크포인트를 저장해 훈련을 일관되게 재개할 수 있게 합니다. 사전에 정해진 검증 기준에 따라 체크포인트를 선택하고, 손대지 않은 테스트 세트를 확보합니다. 분산 훈련에서는 유효 배치 크기, 기울기 평균화, 실패한 워커 처리 등을 확인합니다. 최적화는 사용 가능한 데이터에 대해 선택된 목표를 최소화하지만, 보정된 확률, 인과 추론, 공정성, 안전성 또는 실제 활용을 보장하지는 않습니다.

실제 예시: 언어 모델을 위한 옵티마이저 튜닝

팀은 토크나이저, 데이터 순서, 모델, 유효 배치, 그리고 훈련 토큰 예산을 고정한 뒤, 합리적인 학습률 스케줄에 따라 모멘텀을 적용한 SGD와 AdamW를 비교합니다. 워밍업, 감소, 가중치 감쇠, 클리핑, 정밀도가 기록됩니다. 각 후보는 여러 시드로 실행되며, 검증은 보류된 시간 구간과 작업 평가를 사용합니다. 처리량과 에너지는 손실과 함께 보고되어 약간 더 좋은 옵티마이저가 과도한 비용으로 선택되지 않도록 합니다.

진단을 통해 불안정성이 하나의 데이터 샤드, 과도한 단계 크기, 언더플로우, 혹은 모델 아키텍처에서 비롯된 것인지 밝혀냅니다. 체크포인트는 옵티마이저와 스케줄러 상태를 보존하고 테스트에서 재개됩니다. 최종 선택은 가장 낮은 훈련 손실이 아니라 검증 품질과 견고성을 기반으로 합니다. 선택 후에는 봉인된 테스트 세트를 한 번 실행합니다. 프로덕션 추론은 별도로 보정 및 모니터링되는데, 이는 사전 훈련 중 옵티마이저 성공이 안전하거나 진실된 동작을 보장하지 않기 때문입니다.

구현 증거 및 운영 준비성

프로덕션 결정을 내리려면 성공적인 시연 이상의 것이 필요합니다. 의도된 사용자, 운영 환경, 입력, 출력, 종속성, 소유자, 그리고 각 중요한 실패의 결과를 정의합니다. 튜닝 전에 재현 가능한 베이스라인과 버전 관리된 평가 세트를 구축합니다. 일반적인 경우, 경계 조건, 잘못된 또는 누락된 입력, 분포 변화, 종속성 장애, 오용, 그리고 소외될 가능성이 높은 그룹이나 환경을 테스트합니다. 작업 품질을 보정 또는 불확실성, 지연 시간, 처리량, 자원 비용, 접근성, 프라이버시, 보안과 함께 측정합니다. 모든 변환과 임계값을 기록해 독립적인 검토자가 결과를 재현하고 매력적인 프로토타입과 증거를 구분할 수 있게 합니다.

출시 전에 릴리스, 예외, 변경, 롤백, 퇴역에 대한 권한을 지정합니다. 단계적 롤아웃을 사용하고 안전한 폴백을 유지하며, 의도적으로 삽입된 실패를 통해 모니터링을 검증합니다. 운영 텔레메트리는 입력 품질, 출력 동작, 모델 또는 규칙 버전, 종속성 상태, 인간 개입, 확인된 결과를 불필요한 민감 데이터 수집 없이 보여줘야 합니다. 알림 임계값과 대응 담당자를 정의하고, 오프라인 성능이 지속될 것이라고 가정하지 말고 배포 후 실제 증거를 검토합니다. 데이터 소스, 사용자, 모델, 공급업체, 정책, 하드웨어, 목표가 변경될 때마다 재평가합니다. 유지되는 시스템은 문서화된 복구, 사고 학습, 삭제 및 보존 절차, 그리고 비활성화 또는 교체 시점을 명확히 해야 합니다.

자주 묻는 질문

경사 하강법이 항상 전역 최소점에 도달합니까?

아니요. 볼록한 목표에 대해서는 적절한 조건이 강력한 보장을 제공합니다. 그러나 딥 네트워크의 목표는 비볼록이며, 실제 옵티마이저는 고유한 전역 최소점을 찾았다고 증명하기보다 유용한 해를 찾는 데 초점을 둡니다.

왜 0 기울기가 오해를 불러올 수 있나요?

0이거나 아주 작은 기울기는 최소점, 최대점, 안장점, 포화 상태, 혹은 평평한 플래토를 의미할 수 있습니다. 훈련 진단에서는 손실 이력, 곡률, 파라미터 규모, 그리고 검증 성능을 함께 고려해야 합니다.

주요 참고문헌

블로거이자 프로그래머로 Machine Learning과 Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.