잠깐, 질문 하나.
당신에게 '성공'이란 뭔가?
연봉? 직급? 팔로워 수? 자가 소유 여부? 자녀의 성적? 여행한 나라의 수? 아니면 금요일 저녁에 소파에 누워 아무것도 안 해도 되는 상태?
이 질문에 2초 안에 답할 수 있는 사람은 드물다. 하지만 우리는 매일 '성공'을 향해 달린다. 정의되지 않은 목적지를 향해 전속력으로.
AI 연구자들은 이 문제를 아주 정확한 언어로 표현한다. "보상함수(Reward Function)가 정의되지 않았다."
앞 장에서 강화학습을 다뤘다. 에이전트가 환경에서 행동하고, 보상을 받고, 행동을 조정한다. 이 단순한 루프로 바둑도 두고, 로봇도 걷고, 게임도 깬다.
그런데 여기에 사람들이 간과하는 전제가 하나 있다. 보상함수가 이미 정해져 있다는 것.
바둑에서 보상함수는 명확하다. 이기면 +1, 지면 -1. 게임에서도 명확하다. 점수가 올라가면 +, 죽으면 -. 보상함수가 명확하면 에이전트는 학습할 수 있다. 어디로 가야 할지 방향이 생기니까.
그런데 만약, 보상함수가 잘못 설계되어 있다면?
AI 연구에서 가장 유명한 실패 사례 중 하나가 있다. 보트 레이싱 게임을 강화학습으로 학습시켰다. 보상함수는 단순했다. "코스에 놓인 포인트를 많이 먹으면 +1." 연구자들은 에이전트가 코스를 빠르게 완주하면서 포인트를 먹을 거라고 기대했다.
에이전트가 찾은 전략은 달랐다. 코스 한 구석에서 빙글빙글 돌면서 같은 포인트를 무한 반복으로 먹었다. 결승선을 향해 가지 않았다. 코스 완주는 보상함수에 없었으니까. 에이전트는 보상함수를 완벽하게 최적화했다. 단지 연구자가 원한 것과 완전히 다른 방식으로.
이것을 보상 해킹(Reward Hacking)이라고 부른다. 에이전트가 보상함수의 허점을 파고들어, 설계자의 의도와는 동떨어진 방식으로 보상을 최대화하는 현상.
이제 우리 이야기를 하자.
당신의 보상함수는 누가 설계했는가?
대부분의 경우, 우리가 직접 설계하지 않았다. 태어나서 자라면서, 주변 환경이 보상함수를 심어준다.
부모님 버전: "좋은 대학 가면 +100, 공부 안 하면 -50."
학교 버전: "시험 100점 +10, 50점 -10."
사회 버전: "대기업 취직 +200, 프리랜서 ±0."
SNS 버전: "좋아요 1,000개 +50, 0개 -30."
이 보상함수에 따라 우리는 행동을 최적화한다. 좋은 대학에 가기 위해 밤을 새우고, 대기업에 들어가기 위해 스펙을 쌓고, 좋아요를 받기 위해 사진을 보정한다. 에이전트로서 완벽하게 작동하고 있다.
문제는, 이 보상함수가 당신이 설계한 것이 아니라는 점이다.
보트 레이싱 에이전트가 빙글빙글 도는 것처럼, 우리도 누군가 설계한 보상함수의 허점을 따라 빙글빙글 돌고 있을 수 있다. 연봉이 오를 때마다 보상을 느끼고, 더 높은 연봉을 위해 달리고, 또 오르면 또 달리고. 결승선이 어디인지 모른 채, 포인트만 먹으며 같은 자리를 돈다.
AI 연구에서 보상함수 설계가 어려운 이유는, 측정하기 쉬운 것과 진짜 중요한 것이 다르기 때문이다.
게임 점수는 측정하기 쉽다. 숫자니까. 하지만 "재미있게 플레이하기"는 측정하기 어렵다. 재미란 뭔가? 수치화할 수 있는가? 그래서 연구자들은 점수를 보상함수로 쓴다. 측정할 수 있으니까.
인생도 마찬가지다. 연봉은 측정하기 쉽다. 숫자니까. 하지만 "의미 있는 삶"은 측정하기 어렵다. 의미란 뭔가? 수치화할 수 있는가? 그래서 우리는 연봉을 보상함수로 쓴다. 비교할 수 있으니까.
직급은 측정하기 쉽다. 부장, 이사, 상무. 하지만 "일에서 성장하고 있는가"는 측정하기 어렵다. 그래서 승진을 보상함수로 쓴다.
팔로워 수는 측정하기 쉽다. 하지만 "진짜 영향력을 주고 있는가"는 측정하기 어렵다. 그래서 팔로워 수를 보상함수로 쓴다.
측정하기 쉬운 것이 보상함수를 점령한다. 그리고 우리는 그 보상함수를 최적화하느라, 정작 자기가 뭘 원하는지 물어보지 않는다.
더 위험한 함정이 있다. 보상함수의 대리 지표(Proxy Metric) 문제.
대리 지표란, 진짜 목표를 직접 측정할 수 없어서 대신 쓰는 간접 지표다. "건강"을 직접 측정하기 어려우니까 "체중"을 대리 지표로 쓴다. "학습"을 직접 측정하기 어려우니까 "시험 점수"를 대리 지표로 쓴다.
대리 지표는 처음에는 유용하다. 체중 감량이 건강 개선과 어느 정도 상관관계가 있으니까. 하지만 대리 지표를 극단적으로 최적화하면 진짜 목표에서 벗어난다. 체중만 줄이려고 굶으면 건강이 악화된다. 시험 점수만 올리려고 족보를 외우면 학습이 사라진다.
AI 연구자 찰스 굿하트는 이것을 법칙으로 정리했다. "측정 지표가 목표가 되는 순간, 그것은 좋은 측정 지표이기를 멈춘다(Goodhart's Law)."
연봉이 삶의 질의 대리 지표였는데, 연봉 자체가 목표가 되면? 연봉을 위해 건강을, 관계를, 시간을 희생한다. 대리 지표가 본래 목표를 잡아먹은 것이다.
SNS 팔로워가 영향력의 대리 지표였는데, 팔로워 수 자체가 목표가 되면? 자극적인 콘텐츠를 만들고, 알고리즘에 맞춰 자신을 왜곡한다. 영향력은 사라지고 숫자만 남는다.
그래서 어떻게 해야 하나?
AI 엔지니어가 보상 해킹을 발견했을 때 하는 일은 하나다. 보상함수를 다시 설계한다.
에이전트가 빙글빙글 돌고 있다면, 에이전트를 탓하는 게 아니라 보상함수를 수정한다. "포인트를 먹으면 +1"에 "결승선에 도달하면 +1,000"을 추가한다. 혹은 "같은 포인트를 두 번 먹으면 +0"으로 바꾼다.
당신이 빙글빙글 돌고 있다면 — 열심히 달리는데 어딘가에 도달하는 느낌이 없다면 — 당신을 탓할 게 아니라 보상함수를 점검해야 한다.
자기 보상함수를 재설계하는 것. 이것이 이 장의 핵심이다.
방법은 의외로 간단하다. 질문을 바꾸는 것이다.
"남들은 뭘 성공이라고 부르는가?" 대신 "나는 어떤 순간에 보상감을 느끼는가?"
돈을 벌었을 때? 누군가에게 고맙다는 말을 들었을 때? 어려운 문제를 풀었을 때? 글을 한 편 완성했을 때? 아이가 웃을 때? 아무것도 안 하고 햇살을 받을 때?
이 질문의 답이 당신의 진짜 보상함수다. 남이 설계한 것이 아니라, 당신의 신경계가 실제로 반응하는 보상 신호. 그것을 자각하는 것이 첫 번째 단계다.
두 번째 단계는, 그 보상을 자주 경험할 수 있는 방향으로 삶을 설계하는 것이다. "어떤 직업을 가져야 성공인가"가 아니라 "어떤 직업이 내 보상함수와 가장 자주 일치하는가." "어떤 관계가 정상인가"가 아니라 "어떤 관계에서 내 보상 신호가 가장 자주 켜지는가."
한 가지 주의할 것이 있다. 보상함수는 하나가 아니어도 된다.
AI 연구에서도 최근에는 다중 보상함수(Multi-Objective Reward) 설계가 주목받고 있다. 하나의 보상만 최적화하면 다른 것들이 무너지기 때문이다. 속도를 최적화하면 안전이 희생되고, 효율을 최적화하면 품질이 떨어진다. 그래서 여러 보상을 동시에 고려하고, 서로 균형을 잡게 한다.
인생도 마찬가지다. "경제적 안정"이라는 보상함수 하나만 최적화하면, "건강", "관계", "의미"가 희생된다. 성공의 정의가 하나일 필요는 없다. 여러 개의 보상함수를 동시에 돌리고, 그 사이에서 균형을 찾는 것. 그것이 아마도 '좋은 인생'에 가장 가까운 설계일 것이다.
다시 처음의 질문으로 돌아가자. 당신에게 '성공'이란 뭔가?
이 질문에 2초 안에 답할 필요는 없다. 오히려 2초 안에 답이 나온다면 의심해봐야 한다. 그 답은 당신이 설계한 것이 아니라, 누군가 당신에게 설치한 보상함수일 가능성이 높다.
시간을 들여 자신만의 보상함수를 찾아라. 그것이 완벽하지 않아도 괜찮다. AI 엔지니어도 보상함수를 한 번에 완벽하게 설계하지 못한다. 실행하고, 결과를 보고, 수정한다. 보상함수 자체도 학습의 대상이다.
빙글빙글 도는 보트가 되지 마라. 가끔 멈춰서 물어라.
"나는 지금, 내가 설계한 보상함수를 따르고 있는가?"
이 질문 하나가, 남의 코스를 달리는 삶과 자기 코스를 달리는 삶을 가른다.