이차함수 두 개로 다른 함수를 가둔다는 발상
혹시 머신러닝 라이브러리에서 옵티마이저를 쓸 때, gradient descent니 Adam이니 하는 게 "왜 잘 동작하는지" 궁금했던 적 있으세요? 그 안쪽을 들여다보면 "quadratic sandwich(이차함수 샌드위치)"라는 개념이 자주 등장해요. 어떤 복잡한 함수를 위아래로 두 개의 이차함수 사이에 가둬 두고 분석하는 기법이에요. 글쓴이는 이걸 친근한 수식과 직관적인 설명으로 풀어 두었는데, 한번 이해하면 최적화 이론이 훨씬 잘 보여요.
왜 이차함수냐면
이차함수, 그러니까 f(x) = ax² + bx + c 같은 모양은 수학자들이 가장 좋아하는 도구예요. 미분도 쉽고, 최솟값을 닫힌 형태로 바로 구할 수 있고, 그래프 모양도 직관적이거든요. 문제는 우리가 실제로 다루는 손실함수(loss function)는 이차함수처럼 예쁘게 생기지 않았다는 거예요. 신경망의 loss는 울퉁불퉁하고 비선형이죠.
그래서 수학자들이 쓰는 트릭이, "비록 실제 함수는 복잡하지만, 어떤 점 근처에서는 이차함수로 위에서 누르고 아래에서 받칠 수 있다"고 가정하는 거예요. 위에서 누르는 이차함수를 upper quadratic bound, 아래에서 받치는 걸 lower quadratic bound라고 해요. 그 사이에 진짜 함수가 끼어 있으니 샌드위치죠.
구체적인 두 가지 조건
글쓴이가 강조하는 두 가지 조건이 L-smoothness와 μ-strong convexity예요. 이름은 무섭지만 뜻은 간단해요.
L-smoothness는 함수의 기울기가 너무 갑자기 변하지 않는다는 뜻이에요. 그래디언트의 변화율이 L이라는 상수 안에 갇혀 있다는 거죠. 이 조건이 있으면 함수 위에 "이 이상 가파를 수는 없다"는 이차함수 천장을 씌울 수 있어요. 수식으로는 f(y) ≤ f(x) + ∇f(x)ᵀ(y-x) + (L/2)‖y-x‖² 꼴이에요. 여기서 우변이 바로 이차함수 천장이에요.
μ-strong convexity는 반대로 함수가 "어느 정도 이상은 휘어 있다"는 조건이에요. 너무 납작한 골짜기가 아니라, 적어도 어떤 곡률 μ를 가진 그릇 모양이라는 거죠. 이 조건이 있으면 f(y) ≥ f(x) + ∇f(x)ᵀ(y-x) + (μ/2)‖y-x‖² 라는 이차함수 바닥이 받쳐줘요.
이 두 부등식을 동시에 만족하면, 진짜 함수는 위아래 두 이차함수 사이에 끼인 샌드위치 모양이 되는 거예요.
왜 이게 강력하냐
그래서 뭐가 좋냐고요? 진짜 함수의 최솟값을 직접 못 찾아도, 샌드위치의 위쪽 이차함수의 최솟값을 계산해서 거기로 내려가면 진짜 함수도 적어도 그 만큼은 줄어든다는 게 보장돼요. 이게 gradient descent가 수렴한다는 증명의 핵심이에요.
또 step size(학습률)를 어떻게 잡아야 하는지도 자연스럽게 나와요. 1/L 정도로 잡으면 위쪽 이차함수의 최솟값에 정확히 도달하거든요. 우리가 PyTorch에서 lr=0.001 같은 걸 정할 때, 이론적으로는 "내가 다루는 손실함수의 L이 대략 1000쯤 되겠지"라고 추정하는 셈이에요.
수렴 속도도 두 상수의 비율인 조건수 κ = L/μ로 결정돼요. 이 값이 1에 가까우면 함수가 동그란 그릇이라 한 번에 바닥으로 갈 수 있고, 이 값이 크면 길쭉한 골짜기라 지그재그로 내려가게 돼요. ML 실무자들이 "loss landscape이 이상하다"고 할 때 사실은 이 조건수 얘기를 하는 거예요.
업계에서의 위치
이런 분석 틀은 Yurii Nesterov가 1980년대부터 발전시킨 convex optimization 이론의 근간이에요. Nesterov의 가속 경사하강법(accelerated gradient)이 1/k² 속도로 수렴한다는 유명한 결과도 이 샌드위치 부등식 위에서 증명돼요. 최근에는 비볼록(non-convex) 함수에도 "국소적으로는 샌드위치가 성립한다"는 변형들이 연구되고 있고, Adam이나 AdamW 같은 옵티마이저의 수렴성 분석에도 비슷한 기법이 쓰여요.
한국 개발자에게 주는 시사점
ML 엔지니어라면 옵티마이저를 "마법 상자"로 두지 말고 한 번쯤 안을 들여다볼 가치가 있어요. 학습이 안 되는 모델을 디버깅할 때, "loss landscape가 너무 가파른가? 너무 평평한가?"를 떠올리면 lr이나 정규화 전략이 다르게 보이거든요. 또 LLM 파인튜닝이 유행이지만, 그 안쪽의 수렴 보장은 결국 이런 이론에 빚지고 있어요.
수학을 깊게 안 해도 괜찮아요. 이 샌드위치 그림 하나만 머릿속에 넣어 두면, 최적화 논문을 읽을 때 "아, 지금 위쪽 bound로 step size를 잡는구나" 같은 패턴이 보여요.
마무리
복잡한 걸 다루는 가장 우아한 방법은 "잘 아는 단순한 것 사이에 가두는 것"일지도 몰라요. 여러분이 자주 쓰는 옵티마이저는 무엇인가요, 그리고 그게 잘 동작하는 이유를 한 번이라도 의심해 본 적 있으세요?
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공