옵티마이저Optimizer

기울기를 받아 값을 어떻게 옮길지 정하는 규칙

  • 심화
  • 4분 읽기
  • 그림 3개

핵심 정리

  • 옵티마이저는 기울기를 받아 값을 실제로 어떻게 옮길지 정하는 규칙이에요. 출발점이 되는 내리막 방향은 기울기가, 기본 폭은 학습률이 정하고, 옵티마이저는 이 둘을 다듬어 실제 걸음을 만들어요.
  • 첫 번째 요령은 관성이에요. 같은 쪽으로 계속 가고 있으면 지난 걸음의 속도를 이어받아 성큼 나아가요.
  • 두 번째 요령은 방향마다 보폭을 달리하기예요. 기울기가 크게 들어온 값은 보폭을 줄이고, 작게 들어온 값은 보폭을 키워서 값마다 걸음 크기를 고르게 맞추는 쪽으로 가요.
  • 이 요령 덕분에 좁고 긴 골짜기에서 좌우로 널을 뛰는 낭비가 줄고, 같은 시간에 훨씬 아래까지 내려가요.
  • 옵티마이저를 바꾼다고 학습률을 안 정해도 되는 건 아니에요. 기준이 되는 폭은 여전히 사람이 정해요.

비유로 이해하기

이어달리기에서 바통을 넘길 때 다음 주자가 출발선에 가만히 서 있으면 팀 기록이 크게 늦어져요. 받자마자 정지 상태에서 속도를 다시 올려야 하니까요. 그래서 앞 주자가 다가오는 것을 보고 미리 달리기 시작해 앞 주자의 속도를 그대로 이어받아요.

트랙을 도는 방식도 구간마다 달라요. 곡선 구간에서는 몸이 바깥으로 밀리니까 보폭을 줄이고 촘촘하게 딛고, 곧게 뻗은 직선에서는 크게 성큼성큼 뻗어요. 같은 트랙이라도 어디를 달리느냐에 따라 발놀림을 바꾸는 거예요.

옵티마이저가 하는 일이 이 두 가지예요. 지난 걸음의 속도를 이어받고, 구간에 따라 보폭을 달리해요. 내리막 쪽이라는 큰 방향은 기울기가 알려 주고, 옵티마이저는 그 길을 어떤 요령으로 달릴지를 맡아요. 그 요령 때문에 실제로 내딛는 방향도 조금씩 달라져요.

자세히 알아보기

방향만 알아서는 손해가 커요

기울기는 지금 자리에서 어느 쪽이 내리막인지 알려 줘요. 그런데 그 방향으로 곧이곧대로만 움직이면 낭비가 생겨요. 특히 한쪽으로는 가파르고 다른 쪽으로는 완만한 좁고 긴 골짜기에서 그래요.

이런 자리에서는 가파른 쪽으로 크게 튕겨 나갔다가 되돌아오기를 반복하면서, 정작 완만한 쪽으로는 아주 조금씩만 나아가요. 골짜기를 따라 쭉 내려가야 하는데 벽에 부딪히며 지그재그로만 움직이는 셈이죠. 걸음 수는 잔뜩 쓰는데 실제로 내려간 깊이는 얼마 안 돼요.

옵티마이저는 기울기를 그대로 쓰지 않고 한 번 손질해서 써요. 지난 걸음들을 기억해 두었다가 지금 기울기와 섞어 실제 이동량을 만들어요.

관성을 붙이면 흔들림이 줄어요

첫 번째 요령은 지난 걸음의 이동량을 일정 비율로 이어받는 거예요. 같은 방향으로 계속 가고 있었다면 이어받은 몫이 쌓여 걸음이 점점 커지고, 방향이 매번 뒤집히던 쪽은 서로 상쇄되어 잦아들어요.

골짜기에 대입하면 벽에 부딪혀 좌우로 흔들리던 움직임은 줄고, 골짜기를 따라 내려가는 움직임만 남아 속도가 붙어요. 얕은 자리를 만나도 실려 온 속도로 넘어가는 일이 생겨서, 어중간한 자리에 눌러앉을 위험도 줄어요.

이어받는 비율은 보통 지난 몫을 대부분 살리는 정도로 잡아요. 너무 크게 잡으면 방향이 바뀐 뒤에도 한참을 옛 방향으로 밀려가고, 너무 작게 잡으면 관성을 붙이지 않은 것과 다를 바가 없어져요.

방향마다 보폭을 다르게 잡아요

두 번째 요령은 값마다 걸음 폭을 따로 관리하는 거예요. 지금까지 그 값에 들어온 기울기가 얼마나 컸는지를 기록해 두었다가, 기울기가 크게 들어온 값은 폭을 줄이고 작게 들어온 값은 폭을 키워요.

이 요령은 자주 안 나오는 특징을 다룰 때 특히 도움이 돼요. 어쩌다 한 번 등장하는 특징에 붙은 값은 갱신될 기회가 적은데, 그럴 때 폭을 키워 주면 몇 안 되는 기회를 제대로 쓸 수 있어요. 널리 쓰이는 옵티마이저인 아담은 이 두 요령을 함께 써요.

그래도 기준 폭은 사람이 정해요

옵티마이저가 알아서 폭을 조절해 준다고 해서 학습률이 필요 없어지지는 않아요. 방향마다 조절하는 값은 어디까지나 배율이고, 그 배율이 곱해질 기준선은 여전히 사람이 적어 넣어요. 기준선이 크면 요령이 좋아도 널을 뛰어요.

그래서 실무에서는 널리 쓰이는 옵티마이저를 기본으로 두고 학습률만 몇 가지 바꿔 가며 맞추는 순서를 많이 써요. 옵티마이저를 바꾸는 것보다 학습률을 바로잡는 쪽이 결과를 더 크게 흔드는 일이 흔하거든요.

조금 더 정확하게

옵티마이저는 기울기와 지난 갱신 기록을 받아 이번 갱신량을 계산하는 규칙이에요. 가장 단순한 형태는 기울기에 학습률만 곱하는 확률적 경사하강법(SGD, Stochastic Gradient Descent)이고, 여기에 지난 이동량을 더하는 관성 항을 붙인 형태, 값마다 지난 기울기의 크기를 모아 폭을 나누는 형태가 차례로 나왔어요. 관성과 방향별 폭을 함께 쓰는 아담 계열이 지금 가장 널리 쓰여요.

비유가 어긋나는 지점도 있어요. 이어달리기 트랙은 곡선과 직선이 눈에 보이지만, 학습에서는 어느 방향이 가파른지 미리 알 수 없어요. 지금까지 받아 온 기울기의 크기 기록으로 짐작할 뿐이에요. 그리고 주자는 구간에 따라 보폭 하나를 바꾸지만, 옵티마이저는 같은 순간에도 값마다 다른 보폭을 써요. 수많은 다리가 제각각 보폭을 정하는 셈이에요. 또 관성이나 방향별 보폭을 쓰는 옵티마이저는 값마다 이런 기록을 따로 들고 있어서, 아담이라면 모델 값만큼의 메모리가 두 벌 더 들어요.

직접 해보기

흔한 오해

  • 옵티마이저를 좋은 것으로 바꾸면 학습률은 신경 쓰지 않아도 된다고 생각하기 쉽지만, 실제로는 기준이 되는 폭을 여전히 사람이 정해야 하고 그 값이 결과를 크게 흔드는 경우가 많아요.

  • 옵티마이저를 바꿔 학습 오차가 더 내려가면 새 자료에서도 반드시 더 잘한다고 여기기 쉽지만, 실제로는 지형 자체를 바꾸지는 못하고, 같은 지형에서 어느 길로 내려가 어디에 멈출지가 달라질 뿐이에요. 그래서 학습 오차는 더 낮아도 새 자료 성적은 오히려 나빠지는 경우도 있어요.

  • 가장 최신 옵티마이저가 항상 낫다고 생각하기 쉽지만, 실제로는 자료와 모델에 따라 오래된 단순한 방식이 더 잘 맞는 경우도 많아요.

한 줄 요약

그러니까

옵티마이저는 내리막 방향을 받아 지난 속도를 이어받고 방향마다 보폭을 달리하는, 값을 옮기는 요령이에요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정 2026-10-17