머신러닝에서 최적화가 필요한 이유

모델이 실제로 학습하는 방법 — 순수 경사 하강법에서 Adam까지

머신러닝은 겉으로 예측, 분류, 생성, 추천처럼 보입니다. 하지만 그 속을 들여다보면 하나의 수학적 동작이 반복될 뿐입니다. 숫자를 고르고, 그 숫자가 얼마나 나쁜지 측정한 다음, 나쁨을 줄이는 방향으로 숫자를 바꾸는 것입니다. 이것이 바로 최적화입니다.

그 숫자들은 모델의 파라미터이며, 보통 하나의 거대한 벡터 θ에 모여 있습니다. 나쁨을 나타내는 점수는 손실이며, L(θ)로 씁니다. 훈련이란 그 손실을 작게 만드는 설정을 찾아 파라미터 공간을 뒤지는 일입니다. 아래 표기가 정확히 그 뜻입니다. argmin은 이기는 입력값(손실을 가장 작게 만드는 θ)을 돌려줄 뿐 이기는 점수 자체를 돌려주지 않으며, θ⋆의 별표는 그것이 바로 그 최적의 설정임을 표시합니다.

온실의 관개 제어판에는 수천 개의 작은 스프링클러 구역이 있을 수 있습니다. 각 설정은 식물이 얼마나 건강해지는지를 바꾸지만, 물을 다 준 뒤에야 비로소 최종 수확 점수를 볼 수 있습니다. 신경망도 비슷합니다. 파라미터는 스프링클러 설정이고, 손실은 개선하고 싶은 수확 점수이며, 최적화는 수많은 설정을 한꺼번에 바꾸는 규칙입니다.

머신러닝에서의 위치바로 이런 이유로 최적화는 머신러닝의 중심에 자리합니다. 역전파는 ∇L을 계산합니다. SGD, 모멘텀, RMSProp, Adam은 그것을 어떻게 사용할지 결정합니다. 스케줄은 걸음 크기를 조절하고, 정규화는 목적함수의 형태를 다시 빚습니다. 훈련이 곧 L(θ)를 최소화하는 일이 되고 나면, 핵심 질문은 단순해집니다. 파라미터는 어떻게 움직여야 하는가?
▶ 머신러닝에서 최적화가 필요한 이유
← 집중 부등식 (간단히)학습률 →