
최적화의 최고 수준: 기계학습에서 목표 최대화를 위한 경험을 배우다
글쓴이:DAN SHIPPER
번역: Ines
Midjourney 프롬프트: "거대하고 위험한 협곡을 가로지르는 밧줄다리의 건너편에 선 사람의 시점에서 수채화처럼 상상해보세요."
나는 어디까지 최적화해야 할까? 나는 자주 스스로에게 이 질문을 한다. 당신도 아마 마찬가지일 것이다. 세대를 이어가는 회사를 만들기 위해, 완벽한 인생 파트너를 찾기 위해, 혹은 완벽한 운동 계획을 설계하기 위해 목표를 향해 최적화하려고 할 때, 우리는 완벽함을 향해 열심히 노력하게 된다.
최적화란 완벽함을 추구하는 것이다. 우리는 타협하지 않기 위해 목표를 향해 최적화한다. 하지만 무조건적으로 완벽을 추구하는 것이 더 나은 걸까? 즉, 어느 정도까지 최적화하는 것이 지나친 것일까?
오랫동안 사람들은 최적화의 난이도를 파악하려 애써왔다. 그들을 하나의 스펙트럼에 놓아보자.
한쪽 끝에는 존 메이어(John Mayer)가 있다. 그는 '적게 갖는 것이 더 좋다'고 주장한다. 대표곡 『Gravity』에서 그는 이렇게 노래한다:
「오, 두 배의 좋은 것은 진짜로 두 배만큼 좋지 않고 / 절반만큼 오래가지도 못하며 / 더 많은 것을 원하는 욕망이 나를 굴복시킨다.」
돌리 패튼(Dolly Parton)은 반대로 생각한다. 그녀의 명언은 "적음은 많음을 의미하지 않는다. 많음이 곧 많음이다."이다.
아리스토텔레스는 이 둘 다 동의하지 않았다. 그는 2000년 전 이미 황금 중용을 제시했다. 어떤 목표를 향해 최적화할 때, 너무 많이 하거나 너무 적게 하는 사이의 중간 지점을 찾아야 한다는 것이다.
그렇다면 우리는 누구의 말을 따라야 할까? 지금은 2023년이다. 우리는 이런 문제에 대해 더 구체적인 계량적 접근과 덜 추상적인 논의를 원한다. 이상적으로는 목표 최적화의 효과를 어떤 방식으로든 측정할 수 있기를 바란다.
요즘 우리는 종종 기계의 도움을 받을 수 있다. 목표 최적화는 머신러닝과 인공지능 연구자들이 집중적으로 연구하는 주제 중 하나다. 신경망이 유용한 일을 하도록 하려면, 반드시 목표를 설정하고 그 목표 달성을 위해 노력하게 만들어야 한다. 컴퓨터 과학자들이 신경망에서 찾아낸 해답은 우리가 일반적인 최적화에 대해 배울 수 있는 많은 교훈을 준다.
최근 머신러닝 연구자인 야샤 소흘-딕스타인(Jascha Sohl-Dickstein)이 발표한 글은 특히 흥미로웠다. 그는 다음과 같은 주장을 펼쳤다:
머신러닝은 우리에게 너무 과도하게 목표를 최적화하면 일이 엉망이 된다는 것을 보여준다. 이를 정량적으로 확인할 수 있다. 머신러닝 알고리즘이 목표를 과도하게 최적화할 때, 전체 맥락을 간과하게 되며 연구자들이 말하는 '과적합(overfitting)' 현상이 발생한다. 실제로 특정 프로세스나 과제에 지나치게 집중하여 완벽하게 만들려 할 때, 우리는 해당 과제에만 지나치게 적응하게 되어 변화나 새로운 도전에 효과적으로 대처하지 못하게 된다.
따라서 최적화의 관점에서 보면, 사실 '많음'이 '많음'을 의미하지 않는 것이다. 받아라, 돌리 패튼.
이 글은 내가 야샤(Jascha)의 글을 요약하고, 그의 견해를 쉽게 풀어 설명하려는 시도다. 이를 이해하기 위해 머신러닝 모델의 학습 과정을 살펴보자.
Mindsera는 인공지능을 활용해 숨겨진 사고 패턴을 발견하고, 사고의 맹점을 드러내며, 자신을 더 잘 이해하도록 돕는다.
당신은 유용한 프레임워크와 마음가짐 모델을 바탕으로 일지 템플릿을 활용해 자신의 사고를 구축함으로써 더 나은 결정을 내리고, 건강을 개선하며, 업무 효율을 높일 수 있다.
Mindsera 인공지능 멘토는 마르쿠스 아우렐리우스(Marcus Aurelius), 소크라테스(Socrates) 등 사상 거장들의 사고 방식을 모방해 새로운 통찰의 길을 제공한다.
지능형 분석은 당신의 글쓰기를 바탕으로 독창적인 작품을 생성하고, 감정 상태를 측정하며, 성격을 반영하고, 개인 맞춤형 조언을 통해 성장을 돕는다.
자기 인식을 키우고, 생각을 정리하며, 점점 더 불확실한 세상에서 성공하자.
지금 시작하세요.
자원봉사자가 되고 싶으신가요? 여기를 클릭하세요.
👉https://www.passionfroot.me/every
지나치게 효율적이면 모든 것이 더 나빠진다
개 사진을 분류하는 데 탁월한 성능을 보이는 머신러닝 모델을 만든다고 상상해보자. 개 사진을 입력하면 해당 개의 품종을 정확히 알려주는 모델을 원한다. 하지만 평범한 개 사진 분류기가 아니라, 비용과 시간을 아끼지 않고, 수없이 많은 커피를 마시며 프로그래밍해서라도 이루고자 하는 전례 없는 머신러닝 분류기를 원한다. (결국 우리는 최적화를 하고 있으니까.)
그렇다면 어떻게 이 꿈을 실현할 수 있을까? 여러 가지 전략이 있지만, 아마도 감독 학습(supervised learning)을 선택할 가능성이 크다. 감독 학습은 마치 머신러닝 모델에게 한 명의 지도교수를 붙여주는 것과 같다. 지속적으로 질문을 던지고 틀릴 때마다 바로잡아주면서, 모델이 서서히 문제의 답을 익히도록 돕는다. 이 훈련 과정에서 모델은 점점 더 정확하게 답을 맞출 수 있게 된다.
먼저 모델을 훈련시킬 이미지 데이터셋을 준비해야 한다. 각 이미지에 미리 라벨을 붙인다. 예를 들어 '푸들', '코카푸들', '단디딘몬 테리어' 등이다. 그런 다음 이 이미지들과 해당 라벨을 모델에 입력해 학습을 시작한다.
모델의 학습 방식은 '시행착오'와 비슷하다. 이미지를 보여주고, 모델이 그 라벨을 추측하게 한다. 틀렸다면 모델을 약간 조정해 다음에는 더 정확한 답을 내도록 유도한다. 이런 방식을 계속하면, 시간이 지남에 따라 모델이 훈련 데이터셋 내 이미지의 라벨을 점점 더 잘 맞추는 것을 볼 수 있다.

이제 모델은 훈련셋 내 이미지 라벨 예측에서 점점 더 잘해지고 있다. 이제 새로운 과제를 부여하자. 훈련 중 본 적 없는 개 사진에 라벨을 붙이라고 요구한다.
이것은 중요한 시험이다. 만약 이전에 본 적 있는 이미지만 물어본다면, 마치 시험에서 부정행위를 하는 것과 같다. 따라서 모델이 확실히 본 적 없을 개 사진들을 추가로 가져온다.
처음에는 모두 잘 진행된다. 훈련을 더 많이 할수록 모델의 성능이 좋아진다:

하지만 계속해서 훈련을 이어가면, 모델은 AI 버전의 '양탄자 위에 실수'를 하기 시작한다. 도대체 무슨 일이 벌어진 걸까?

여기서 무슨 일이 일어난 걸까?
일부 훈련은 모델이 목표를 달성하는 데 더욱 최적화되도록 한다. 그러나 어느 지점을 넘어서면, 과도한 훈련은 오히려 상황을 악화시킨다. 이것이 바로 머신러닝에서 '과적합(overfitting)'이라 불리는 현상이다.
왜 과적합이 일을 더 나쁘게 만드는가
모델 훈련 과정에서는 매우 섬세한 작업을 수행하고 있다.
우리는 모델이 임의의 개 사진에 대해 잘 라벨링하기를 원한다—이것이 우리의 진짜 목표다. 하지만 모든 가능한 개 사진을 수집할 수는 없으므로, 이를 직접 최적화할 수 없다. 대신 대리 목표(proxy goal)를 설정해 최적화한다. 즉, 실제 목표를 대표할 수 있다고 기대되는 작은 개 사진 부분집합에 대해 최적화하는 것이다.

대리 목표와 실제 목표 사이에는 많은 공통점이 있다. 그래서 초기에는 모델이 두 목표 모두에서 진전을 이룬다. 하지만 모델 훈련이 깊어질수록 이 유용한 유사성은 점점 줄어든다. 결국 모델은 훈련셋에만 능숙해지고, 다른 것은 잘 처리하지 못하게 된다.
모델을 계속 훈련시키면, 훈련에 사용한 데이터셋의 세부사항에 지나치게 의존하게 된다. 예를 들어 훈련 데이터에 노란색 라브라도 리트리버가 지나치게 많을 수 있다. 모델이 과도하게 훈련되면, 모든 노란색 개는 라브라도 리트리버라고 잘못 배울 수 있다.
모델이 훈련 데이터셋과 특성이 다른 새로운 이미지를 접하게 되면, 이러한 과적합된 모델은 매우 나쁜 성능을 보인다.
과적합은 우리가 목표 최적화를 탐구하는 데 있어 중요한 통찰을 제공한다.
첫째, 어떤 것을 최적화하려 할 때 거의 결코 그 자체를 직접 최적화하지 않는다. 대신 그것과 비슷하지만 약간 다른 대리 척도(proxy measure)를 최적화한다. 개 분류 문제에서 우리는 모든 가능한 개 사진에 대해 모델을 훈련시킬 수 없다. 대신 개 사진의 부분집합에 대해 최적화를 시도하고, 이것이 효과적으로 일반화되기를 바란다. 처음에는 그렇게 되지만, 우리가 지나치게 최적화하면 더 이상 그렇지 않게 된다.
둘째, 대리 함수를 지나치게 최적화하면, 오히려 원래의 목표에서 멀어진다는 점이다.
이런 머신러닝의 메커니즘을 이해하게 되면, 이제 어디에서나 이 현상을 관찰할 수 있게 된다.
현실 세계에 과적합 개념을 적용하는 방법
학교를 예로 들어보자:
학교에서는 우리가 배우는 과목에 대한 학문적 지식의 습득을 최적화하길 원한다. 하지만 특정 지식을 얼마나 깊이 이해했는지를 측정하는 것은 어렵다. 그래서 표준화 시험을 실시한다. 표준화 시험은 어느 정도로는 당신이 그 과목을 얼마나 이해했는지를 잘 나타낼 수 있다.
하지만 학생과 학교가 표준화 시험 성적에 너무 큰 압박을 가하면, 시험 성적을 최적화하려는 노력이 진정한 학습을 해칠 수 있다. 학생들은 시험 점수를 높이는 과정에 지나치게 적응하게 된다. 과목 지식을 진정으로 배우는 대신, 시험을 치는 법(혹은 부정행위)을 배워 점수를 극대화하게 된다.
비즈니스 세계에도 과적합이 존재한다. 『불확실성의 착각(Fooled by Randomness)』이라는 책에서 나심 탈렙(Nassim Taleb)은新兴市场 채권을 다루는 멋지게 차려입은 은행원 카를로스(Carlos)에 대해 썼다. 그의 거래 스타일은 저점 매수였다. 1995년 멕시코 통화가 평가절하될 때, 카를로스는 저점에서 매수했고, 위기가 해소되며 채권 가격이 오르자 이익을 얻었다.
이러한 저점 매수 전략은 그의 회사에 8천만 달러의 순이익을 가져왔다. 하지만 카를로스는 자신이 접했던 시장에 '지나치게 적응'하게 되었고, 수익 극대화를 향한 그의 추구는 결국 그의 몰락으로 이어졌다.
1998년 여름, 그는 저점에서 러시아 채권을 매수했다. 여름이 지나면서 하락세가 심화되었고—카를로스는 계속해서 매수를 이어갔다. 그는 계속해서 투자를 두 배로 늘렸고, 채권 가격이 매우 낮아졌을 때 결국 3억 달러를 손실했다—당시까지 그가 생애 동안 번 돈의 세 배에 달하는 금액이었다.
탈렙이 책에서 지적했듯이, "시장에서 가장 성공한 트레이더는 가장 최근 사이클에 가장 잘 적응한 사람들일 수 있다."
즉, 수익을 지나치게 최적화하는 것은 현재 시장 사이클에 지나치게 적응하는 것을 의미할 수 있다. 단기적으로 성과는 크게 향상될 수 있다. 하지만 현재의 시장 사이클은 시장 행동 전반의 일부일 뿐이다—사이클이 변할 때, 이전에 성공했던 전략이 갑자기 당신을 파산시킬 수도 있다.
같은 통찰이 내 사업에도 적용된다. Every는 구독 기반 미디어 비즈니스를 운영하고 있으며, 나는 MRR(월간 반복 수익)을 늘리고 싶다. 이를 위해 작가들에게 더 많은 페이지 조회수를 유도하는 보상을 제공해 트래픽을 늘릴 수 있다.
이건 분명 효과가 있을 것이다! 트래픽 증가는 어느 정도까지는 유료 구독자 수를 늘릴 것이다. 하지만 그 지점을 넘어서면, 작가들이 클릭 유도형 기사나 자극적인 내용으로 조회수를 늘리기 시작할 것이고, 이는 유료 전환 의지가 강한 참여도 높은 독자들을 끌어들이지 못하게 될 것이다. 결국 Every를 클릭 유도형 공장으로 만들면, 유료 구독자는 오히려 줄어들 가능성이 크다.
당신의 삶이나 사업을 계속 관찰하면, 분명 같은 패턴을 발견하게 될 것이다. 문제는, 우리는 어떻게 해야 할까?
그렇다면 우리는 어떻게 해야 할까?
머신러닝 연구자들은 과적합을 방지하기 위해 다양한 기술을 사용한다. 야샤(Jascha)의 글은 우리가 취할 수 있는 세 가지 조치를 알려준다: 조기 종료(early stopping), 임의 노이즈 도입(introducing random noise), 정규화(regularization).
조기 종료
이는 항상 모델이 진정한 목표에서의 성능을 점검하고, 성능이 하락하기 시작하면 훈련을 중단하는 것을 의미한다.
카를로스의 경우, 채권 하락 시 매수하다 모든 자금을 잃은 트레이더라면, 누적 손실이 일정 금액에 도달하면 강제로 포지션을 청산하도록 하는 엄격한 손실 관리 체계가 필요했을 것이다.
임의 노이즈 도입
머신러닝 모델의 입력 또는 파라미터에 노이즈를 추가하면 과적합이 더 어려워진다. 같은 원칙이 다른 시스템에도 적용될 수 있다.
학생과 학교의 경우, 표준화 시험을 무작위 시간에 실시해 암기식 준비를 어렵게 만드는 것이 될 수 있다.
정규화
머신러닝에서 정규화는 모델이 너무 복잡해지는 것을 방지하기 위해 패널티를 주는 기법이다. 모델이 복잡할수록 데이터에 과적합되기 쉽다. 기술적 세부사항은 중요하지 않지만, 머신러닝 외의 다른 시스템에서도 마찬가지로 시스템 내 마찰을 증가시키는 개념을 적용할 수 있다.
Every의 모든 작가들에게 페이지 조회수를 늘려 월간 반복 수익을 증가시키도록 동기부여하고자 한다면, 조회수가 일정 임계값을 초과하면 그 이후 조회수는 점차 감소된 비율로 인정되도록 보상 방식을 수정할 수 있다.
이러한 것들은 과적합 문제를 해결할 수 있는 잠재적 대안이며, 다시 처음의 질문으로 돌아간다: 최적화의 최적 수준은 무엇인가?
최적의 최적화 수준
우리가 배운 주요 교훈은, 거의 언제나 목표를 직접 최적화할 수 없다는 점이다. 대신 목표와 비슷하지만 약간 다른 것을 최적화하게 된다. 그것이 바로 대리 척도다.
대리 척도를 최적화해야 하므로, 지나치게 최적화하면 대리 목표를 극대화하는 데 지나치게 능숙해지고, 이는 종종 진정한 목표에서 멀어지게 만든다.
따라서 기억해야 할 핵심은: 당신이 무엇을 위해 최적화하고 있는지 아는 것이다. 목표의 대리 척도가 목표 자체가 아님을 알아야 한다. 최적화 과정에서 유연성을 유지하고, 대리 목표와 실제 목표 사이의 유용한 유사성이 소진되고 있다는 느낌이 들면, 중단하거나 전략을 바꿀 준비를 해야 한다.
최적화에 대한 존 메이어(John Mayer), 돌리 패튼(Dolly Parton), 아리스토텔레스(Aristotle)의 지혜를 비교한다면, 나는 상을 아리스토텔레스와 그의 황금 중용에 주어야 한다고 생각한다.
어떤 목표를 향해 최적화할 때, 최적의 수준은 지나치게 하거나 너무 적게 하는 사이에 있다. 그것은 바로 '딱 맞는 정도(just right)'다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News











