한국어에는 묘한 단어가 있다. 빨리빨리.
외국인이 한국에 와서 가장 먼저 배우는 말이고, 한국인이 해외에 나가서 가장 먼저 답답해하는 감각이다. 배달은 30분 안에, 인터넷은 1기가 이상, 택시 기사님은 신호가 바뀌기 0.5초 전에 출발한다. 빨리빨리는 한강의 기적을 만들었고, 반도체 강국을 만들었고, K-팝을 세계에 퍼뜨렸다.
그런데 이 빨리빨리를 자기 자신에게 적용하면 이상한 일이 벌어진다.
───
기계학습에는 학습률(Learning Rate)이라는 설정값이 있다. 모델이 한 번 실수를 교정할 때 얼마나 세게 고칠 것인가를 정하는 숫자다.
비유를 들어보자. 당신이 다트를 던졌는데 과녁 왼쪽에 박혔다. 다음 던지기에서 오른쪽으로 얼마나 보정할 것인가? 이것이 학습률이다.
학습률이 적절하면, 조금씩 보정하면서 점점 과녁 중심에 가까워진다. 열 번 던지면 꽤 가운데 근처에 모인다. 이것을 수렴(Convergence)이라고 부른다.
학습률이 너무 높으면? 왼쪽에 박혔으니까 오른쪽으로 확 꺾는다. 이번엔 오른쪽 끝에 박힌다. 그래서 다시 왼쪽으로 확 꺾는다. 왼쪽 끝. 과녁 중심을 사이에 두고 양쪽 벽을 번갈아 때리는 꼴이다. 던질수록 점수가 나빠진다. 이것이 발산(Divergence)이다.
핵심은 이거다. 발산하는 모델은 방향을 모르는 게 아니다. 방향은 매번 맞다. 왼쪽에 박히면 오른쪽으로 가야 한다는 건 정확히 안다. 교정의 강도가 과한 것이다. 너무 세게 고치니까 매번 반대쪽으로 튕겨나간다.
───
이걸 알고 나면, 우리가 흔히 겪는 어떤 패턴이 다르게 보이기 시작한다.
다이어트를 한다. 일주일 만에 3킬로를 빼고 싶다. 굶는다. 사흘째 폭식한다. 죄책감에 다시 굶는다. 또 폭식한다. 몸무게 그래프가 톱니바퀴처럼 위아래로 튄다. 두 달 뒤, 시작할 때보다 2킬로가 늘어 있다.
주식 투자를 한다. 오늘 5% 빠졌다. 패닉셀. 다음 날 반등한다. 뒤늦게 다시 산다. 또 빠진다. 또 판다. 매매 내역이 심전도 그래프처럼 요동친다. 수수료만 쌓인다.
이것이 발산이다. 매번 교정 방향은 맞는데, 반응의 크기가 너무 크다. 결과에 과잉 반응하고, 과잉 반응에 다시 과잉 반응한다. 진동 폭이 점점 커지다가 결국 시스템 전체가 무너진다.
───
왜 우리는 학습률을 높게 잡을까?
남의 속도가 보이기 때문이다.
SNS를 열면 누군가는 3개월 만에 몸을 만들었고, 누군가는 6개월 만에 부업으로 월 천만 원을 벌고, 누군가는 1년 만에 책을 냈다. 타임라인은 타인의 결과만 보여주고 과정은 보여주지 않는다. 우리 뇌는 자동으로 계산한다. '저 사람이 3개월이면, 나도 3개월 안에 해야 하지 않나?'
이 비교가 학습률을 끌어올린다. 자기 상황, 자기 체력, 자기 출발점은 무시한 채 남의 수렴 속도에 내 학습률을 맞추려 한다. 하지만 모든 모델은 데이터가 다르고, 구조가 다르고, 최적의 학습률이 다르다. 이미지 인식 모델에 적합한 학습률을 자연어 처리 모델에 그대로 넣으면 발산한다. 당연한 이야기인데, 우리는 자기 인생에서는 이 당연한 사실을 잊는다.
───
기계학습 엔지니어들이 오랜 시행착오 끝에 발견한 교훈이 몇 가지 있다.
첫째, 최적 학습률은 모델마다 다르다.
어떤 모델은 0.1에서 잘 수렴하고, 어떤 모델은 0.001이어야 한다. 정답은 없다. 자기 모델에 맞는 값을 실험으로 찾아야 한다. 인간도 마찬가지다. 어떤 사람은 강도 높은 변화를 소화하는 체질이고, 어떤 사람은 천천히 스며드는 쪽이 맞다. 남의 학습률을 복사하는 순간 발산이 시작된다.
둘째, 학습률은 고정값이 아니다.
최신 기법 중 하나인 코사인 어닐링(Cosine Annealing)은 학습률을 물결처럼 올렸다 내렸다 반복한다. 빠르게 탐색하는 구간과 천천히 정착하는 구간을 번갈아 배치하는 것이다. 인간의 리듬도 이와 닮았다. 에너지가 넘치는 주가 있고, 회복이 필요한 주가 있다. 문제는 우리가 느린 구간을 '나태'로 해석한다는 것이다. 기계는 그걸 '스케줄'이라고 부르는데.
셋째, 발산의 신호를 빨리 읽어라.
엔지니어는 학습 곡선(loss curve)을 실시간으로 모니터링한다. 손실값이 줄어드는 대신 요동치기 시작하면, 그것은 발산의 전조다. 즉시 학습률을 낮추거나 학습을 멈춘다. 우리에게도 이 신호가 있다. 짜증이 비정상적으로 늘었다면. 수면의 질이 급격히 나빠졌다면. 하고 있는 일이 싫어진 게 아니라 모든 것이 한꺼번에 싫어졌다면. 이것은 게으름이 아니라 발산 경고다. 학습률을 낮춰야 한다는 시스템의 비명이다.
───
한 가지 역설적인 이야기를 하고 싶다.
2012년, 딥러닝의 폭발적 성장을 이끈 알렉스넷(AlexNet)의 학습률은 0.01이었다. 세상을 바꾼 모델이 한 걸음에 고작 1%만 교정하면서 학습한 것이다. 이후 등장한 트랜스포머, GPT, 대규모 언어 모델들도 대부분 0.001 이하의 학습률로 수천억 개의 데이터를 학습한다. 세상에서 가장 강력한 AI가, 세상에서 가장 느리게 배운다.
느린 게 아니다. 안정적으로 빠른 것이다.
한 번에 1%를 고치는 걸 1만 번 반복하면, 방향이 맞는 한 반드시 도착한다. 한 번에 90%를 고치려다 발산하면, 1만 번의 기회 자체가 사라진다.
───
조급함의 가장 교활한 점은, 그것이 열정처럼 보인다는 것이다.
"빨리 결과를 내고 싶어"는 "나는 열정적이야"와 구별하기 어렵다. 학습률 0.9를 설정한 사람은 스스로를 의욕 넘치는 사람이라고 생각한다. 학습률 0.01을 설정한 사람은 스스로를 게으른 것 아닌가 의심한다. 하지만 3개월 뒤 결과를 보면, 0.01이 꾸준히 수렴하고 있는 동안 0.9는 진작에 발산해서 프로젝트 자체를 포기한 상태다.
엔지니어들 사이에 이런 말이 있다.
"학습률을 잘 고르는 것이 모델 구조를 바꾸는 것보다 중요할 때가 많다."
인생도 마찬가지다. 거창한 계획을 세우는 것보다, 지속 가능한 보폭을 찾는 것이 더 중요하다. 최고의 전략은 가장 빠른 전략이 아니라, 끝까지 갈 수 있는 전략이다.
───
빨리빨리가 나쁜 게 아니다. 배달과 인터넷과 반도체에서 그것은 미덕이다. 하지만 자기 변화에는 다른 속도가 필요하다. 배달 앱은 30분 만에 치킨을 보내줄 수 있지만, 당신의 몸과 습관과 사고방식은 30분 만에 바뀌지 않는다. 그것은 버그가 아니라 사양이다.
조급함이 속삭인다. "더 빨리, 더 세게, 지금 당장." 하지만 학습률의 교훈은 정반대다.
천천히 고쳐라. 방향만 맞으면 된다. 속도는 반복이 만들어준다.
그리고 마지막으로, 학습률에 대한 가장 위로가 되는 사실 하나. 기계학습에서 발산이 일어나면 엔지니어는 학습률을 낮추고 처음부터 다시 시작한다. 그리고 이건 실패가 아니라 디버깅이라고 부른다. 설정값을 조정하는 것이지, 모델 자체가 잘못된 게 아니다.
당신의 계획이 무너졌다면, 당신이 나쁜 모델인 게 아니다. 학습률이 너무 높았을 뿐이다. 낮춰라. 다시 시작하면 된다. 몇 번이든.
발산은 끝이 아니다. 학습률을 조정하라는 신호다.