Skip to main content
Summary

강화학습은 문제를 푸는 기술이기 전에 문제를 보는 방식이다

강화학습을 처음 배우면 자연스럽게 알고리즘 이름에 눈이 갑니다. Q-learning, DQN, Policy Gradient, PPO 같은 이름은 멋져 보입니다. 마치 이 알고리즘만 알면 게임도 풀고, 로봇도 움직이고, 언어 모델도 사람의 의도에 맞게 정렬할 수 있을 것 같습니다.

하지만 실제 강화학습에서 가장 먼저 해야 할 일은 알고리즘을 고르는 것이 아닙니다. 문제를 강화학습 문제로 제대로 바꾸는 일입니다.

같은 현실 문제라도 어떻게 정의하느냐에 따라 쉬운 문제가 되기도 하고, 거의 풀 수 없는 문제가 되기도 합니다. 에이전트가 무엇을 볼 수 있는지, 어떤 행동을 할 수 있는지, 어떤 보상을 받는지, 언제 한 번의 시도가 끝나는지를 잘못 정하면 아무리 좋은 알고리즘을 써도 이상한 행동을 배웁니다.

예를 들어 청소 로봇에게 "집을 깨끗하게 하라"는 목표를 주었다고 해 봅시다. 말로는 간단합니다. 하지만 강화학습 문제로 만들려면 훨씬 더 구체적으로 물어야 합니다. 로봇은 먼지의 위치를 정확히 아는가? 방의 지도를 가지고 있는가? 한 번에 움직일 수 있는 거리는 얼마인가? 충전량은 상태에 포함되는가? 보상은 먼지를 치울 때 주는가, 방 전체가 깨끗해졌을 때 주는가? 가구에 부딪히면 얼마만큼의 벌점을 줄 것인가?

이 질문에 답하지 않은 채 "강화학습으로 청소 로봇을 만들자"라고 말하면, 아직 문제를 만든 것이 아닙니다. 그냥 희망을 말한 것에 가깝습니다.

강화학습에서 문제 정의는 성능의 절반입니다. 때로는 그 이상입니다.

강화학습 문제를 보는 법

먼저 경계를 그어야 한다

현실 세계는 너무 복잡합니다. 강화학습은 이 복잡한 세계 전체를 한 번에 다루지 않습니다. 대신 선을 긋습니다. 이 선 안쪽에는 에이전트가 있고, 바깥쪽에는 환경이 있습니다.

에이전트는 행동을 선택하는 주체입니다. 환경은 그 행동을 받아들이고, 새로운 상태와 보상을 돌려주는 세계입니다. 이 구분이 흐릿하면 강화학습 문제도 흐릿해집니다.

게임을 생각해 봅시다. 플레이어 캐릭터가 미로 안에 있습니다. 에이전트는 캐릭터를 조종합니다. 위, 아래, 왼쪽, 오른쪽으로 움직일 수 있습니다. 벽의 위치, 함정의 위치, 도착 지점은 환경입니다. 에이전트가 벽을 마음대로 없앨 수 없다면 벽은 통제 대상이 아닙니다. 에이전트는 벽을 바꾸는 것이 아니라, 벽을 피해 행동해야 합니다.

이 경계는 간단해 보이지만 실제 문제에서는 꽤 중요합니다. 예를 들어 배달 로봇을 만든다고 해 봅시다. 로봇은 자기 속도와 방향은 조절할 수 있습니다. 하지만 비가 오는지, 보행자가 갑자기 튀어나오는지, 신호등이 언제 바뀌는지는 직접 통제할 수 없습니다. 그러면 로봇의 속도와 방향은 행동이고, 날씨와 보행자와 신호등은 환경의 일부입니다.

이렇게 물어보면 도움이 됩니다. "에이전트가 버튼을 눌러 직접 바꿀 수 있는 것은 무엇인가?" 직접 바꿀 수 있다면 행동 후보입니다. 직접 바꿀 수 없지만 관찰할 수 있다면 상태 후보입니다. 관찰조차 할 수 없지만 결과에 영향을 준다면 환경의 숨은 요소입니다.

문제 정의의 첫 단계는 멋진 알고리즘이 아니라 이 경계선입니다. 에이전트가 통제하는 것과 통제하지 못하는 것을 나누어야 합니다.

에이전트가 통제하는 것과 통제하지 못하는 것

강화학습 문제를 만들 때 가장 흔한 실수 중 하나는 에이전트가 통제할 수 없는 것을 목표 행동처럼 정의하는 것입니다.

예를 들어 주식 거래 에이전트를 만든다고 해 봅시다. 에이전트는 시장 가격을 직접 움직일 수 없습니다. 에이전트가 할 수 있는 일은 매수, 매도, 보유 같은 행동입니다. 가격 상승은 에이전트가 선택하는 행동이 아니라 환경에서 일어나는 결과입니다. 따라서 "가격을 올린다"는 행동이 될 수 없고, "매수한다" 또는 "매도한다"가 행동이 됩니다.

게임에서도 마찬가지입니다. 적 캐릭터가 어디로 움직일지는 내 에이전트가 직접 정할 수 없습니다. 내가 정할 수 있는 것은 내 캐릭터의 이동, 공격, 방어입니다. 적의 움직임은 상태로 관찰할 수 있을 뿐입니다. 만약 에이전트가 적을 마음대로 움직일 수 있다고 정의하면 그건 더 이상 원래 게임 문제가 아닙니다. 문제 자체를 바꿔 버린 것입니다.

이 차이를 명확히 해야 합니다. 강화학습 에이전트는 마법사가 아닙니다. 세계 전체를 조종하지 않습니다. 제한된 정보 안에서 제한된 행동을 선택할 뿐입니다. 그리고 그 선택이 시간이 지나며 어떤 결과를 낳는지 배웁니다.

문제를 정의할 때는 다음 세 가지를 구분해 보면 좋습니다.

  • 에이전트가 직접 선택할 수 있는 것

  • 에이전트가 볼 수는 있지만 바꿀 수 없는 것

  • 에이전트가 보지도 못하지만 결과에 영향을 줄 수 있는 것

첫 번째는 행동이 됩니다. 두 번째는 상태 또는 관찰이 됩니다. 세 번째는 불확실성으로 남습니다. 강화학습은 이 불확실성까지 포함한 세계에서 더 나은 선택을 찾아가는 방식입니다.

상태를 정의한다는 것

상태는 에이전트가 결정을 내릴 때 참고하는 정보입니다. 앞 장에서 상태는 "지금 상황을 설명하는 정보"라고 했습니다. 그런데 현실 문제에서는 이 말이 곧바로 답이 되지 않습니다. 무엇을 상태에 넣고, 무엇을 뺄지 정해야 합니다.

미로 게임에서는 캐릭터의 현재 위치만으로도 충분할 수 있습니다. 벽의 위치가 고정되어 있고, 도착 지점도 고정되어 있다면 현재 위치만 알아도 다음 행동을 고를 수 있습니다. 하지만 적이 움직이는 게임이라면 이야기가 달라집니다. 적의 위치, 적의 방향, 남은 체력 같은 정보도 상태에 들어가야 할 수 있습니다.

청소 로봇이라면 현재 위치, 배터리 잔량, 먼지가 많은 구역, 이미 청소한 구역, 장애물 위치가 중요할 수 있습니다. 만약 배터리 정보를 상태에서 빼면 로봇은 충전소로 돌아가야 할 타이밍을 배우기 어렵습니다. 먼지 정보가 없으면 어디를 청소해야 할지 알 수 없습니다.

좋은 상태는 행동 선택에 필요한 정보를 담고 있어야 합니다. 하지만 모든 정보를 다 넣는다고 좋은 것도 아닙니다. 상태가 너무 복잡해지면 학습이 어려워집니다. 카메라 이미지 전체를 상태로 쓰면 풍부한 정보를 얻을 수 있지만, 그만큼 딥러닝 모델이 필요하고 데이터도 많이 필요합니다. 반대로 위치 좌표 몇 개만 쓰면 단순하지만 중요한 단서를 놓칠 수 있습니다.

상태 정의는 지도 그리기와 비슷합니다. 등산을 할 때는 산길과 고도 정보가 중요하고, 지하철을 탈 때는 노선도와 환승역이 중요합니다. 모든 지도를 하나로 합치면 완벽해 보이지만 사용하기 어렵습니다. 문제에 맞는 지도를 골라야 합니다.

행동은 에이전트의 손과 발이다

행동은 에이전트가 환경에 가할 수 있는 선택입니다. 행동을 어떻게 정의하느냐에 따라 문제의 난이도가 크게 달라집니다.

격자 세계에서는 행동이 단순합니다. 위, 아래, 왼쪽, 오른쪽. 네 가지면 충분합니다. 이처럼 선택지가 몇 개로 나뉘어 있으면 이산 행동 공간이라고 부릅니다. 나중에 Q-learning을 배울 때는 이런 이산 행동 공간이 특히 다루기 쉽습니다. 각 상태에서 각 행동이 얼마나 좋은지를 Q값으로 저장하고 비교할 수 있기 때문입니다.

반면 로봇 팔을 움직이는 문제는 훨씬 복잡합니다. 로봇 팔의 각 관절을 몇 도로 움직일지, 얼마나 빠르게 움직일지 정해야 합니다. 자동차 운전에서는 핸들을 몇 도 꺾을지, 가속 페달을 얼마나 밟을지, 브레이크를 얼마나 밟을지 결정해야 합니다. 이런 행동은 연속적인 값입니다. 선택지가 "왼쪽, 오른쪽"처럼 딱 끊어지지 않습니다.

행동을 너무 크게 잡으면 학습이 거칠어집니다. 예를 들어 게임 캐릭터의 행동을 "목표 지점까지 알아서 간다"로 정의하면 에이전트가 실제로 무엇을 배우는지 알기 어렵습니다. 반대로 행동을 너무 작게 잡으면 한 번의 의미 있는 결과를 얻기까지 너무 많은 단계가 필요합니다. "오른쪽으로 1픽셀 이동" 같은 행동만 허용하면 목적지까지 가는 데 수천 번의 선택이 필요할 수 있습니다.

좋은 행동 정의는 에이전트가 배워야 할 선택의 단위를 적절히 나눕니다. 너무 추상적이면 학습할 내용이 사라지고, 너무 세밀하면 학습이 지치도록 길어집니다.

보상은 목표를 숫자로 번역한 것이다

강화학습에서 보상은 에이전트에게 주는 신호입니다. "방금 행동은 좋았어" 또는 "그 행동은 별로였어"를 숫자로 알려줍니다. 그래서 보상은 목표를 숫자로 번역한 것이라고 볼 수 있습니다.

하지만 이 번역은 조심해야 합니다. 사람이 원하는 목표와 숫자로 만든 보상이 어긋나면 에이전트는 숫자를 잘 받는 법을 배울 뿐, 우리가 원하는 행동을 배우지 않을 수 있습니다.

미로 게임에서 도착 지점에 도달하면 +10을 주고, 한 걸음 움직일 때마다 -1을 준다고 해 봅시다. 이 보상은 꽤 자연스럽습니다. 목적지에 도달하면 좋고, 불필요하게 돌아다니면 손해입니다. 에이전트는 짧은 경로를 찾으려 할 것입니다.

그런데 만약 "움직일 때마다 +1"을 준다면 어떨까요? 에이전트는 도착하지 않고 계속 돌아다니는 편이 더 많은 보상을 얻을 수 있습니다. 사람은 "목적지에 가라"고 생각했지만, 보상은 "많이 움직여라"라고 말하고 있었던 셈입니다.

청소 로봇도 마찬가지입니다. 먼지를 발견할 때마다 보상을 준다면 로봇이 깨끗한 곳보다 더러운 곳을 좋아하는 것처럼 행동할 수 있습니다. 충돌 벌점이 너무 작으면 가구에 자주 부딪히면서도 빠르게 청소하는 전략을 선택할 수 있습니다. 반대로 충돌 벌점이 너무 크면 로봇이 아무것도 하지 않는 것이 가장 안전하다고 배울 수도 있습니다.

보상 설계는 강화학습의 핵심이자 함정입니다. 보상은 에이전트에게 보내는 편지와 같습니다. 애매하게 쓰면 에이전트는 엉뚱하게 읽습니다.

종료 조건은 한 판이 끝나는 순간이다

강화학습에서는 에이전트가 환경과 상호작용하는 과정을 에피소드라고 부르는 경우가 많습니다. 에피소드는 게임으로 치면 한 판입니다. 시작이 있고 끝이 있습니다.

미로 게임에서는 출발점에서 시작해 도착 지점에 도달하면 에피소드가 끝납니다. 캐릭터가 함정에 빠져도 끝날 수 있습니다. 제한 시간 안에 도착하지 못하면 실패로 끝낼 수도 있습니다.

이 종료 조건은 학습에 큰 영향을 줍니다. 도착했는데도 에피소드를 끝내지 않으면 에이전트는 도착 후에도 계속 움직이며 이상한 보상을 받을 수 있습니다. 실패했는데 끝내지 않으면 위험한 행동의 결과가 흐려질 수 있습니다.

종료 조건은 "언제 한 번의 시도가 끝났다고 볼 것인가?"에 대한 답입니다. 이 답이 있어야 에이전트는 한 번의 시행착오를 경험으로 정리할 수 있습니다.

하지만 모든 문제가 깔끔하게 끝나지는 않습니다. 로봇이 창고 안에서 계속 물건을 나르는 문제를 생각해 봅시다. 하루 종일 작업이 이어질 수 있고, 실제로는 명확한 마지막 장면이 없습니다. 서버 자원을 자동으로 조절하는 에이전트도 마찬가지입니다. 서비스는 계속 운영됩니다. 이런 문제는 계속 이어지는 문제로 볼 수 있습니다.

에피소드형 문제와 계속 이어지는 문제를 구분하는 것은 중요합니다. 게임처럼 한 판이 끝나는 문제인지, 로봇 운행이나 시스템 운영처럼 계속되는 문제인지에 따라 보상을 계산하는 방식과 평가 방식이 달라집니다.

에피소드형 문제와 계속 이어지는 문제

에피소드형 문제는 시작과 끝이 분명합니다. 체스 한 판, 미로 찾기 한 번, CartPole에서 막대가 쓰러지기 전까지의 한 번의 시도, 게임 스테이지 하나가 여기에 속합니다. 이런 문제에서는 에피소드가 끝났을 때 성공 또는 실패를 비교하기 쉽습니다. "이번 판에서 이겼는가?", "목적지에 도착했는가?", "몇 초나 버텼는가?"처럼 평가할 수 있습니다.

계속 이어지는 문제는 끝이 뚜렷하지 않습니다. 물류 로봇이 창고에서 계속 이동하고, 추천 시스템이 사용자에게 계속 콘텐츠를 보여 주고, 데이터센터 냉각 시스템이 하루 종일 온도를 조절하는 경우가 그렇습니다. 이런 문제에서는 어느 순간을 잘라 하나의 에피소드로 볼지 정하거나, 긴 시간 동안의 평균 보상을 살펴봐야 합니다.

게임과 로봇 운행을 비교해 보면 차이가 선명해집니다.

게임에서 에이전트는 출발점에서 시작합니다. 보물을 먹고 출구에 도달하면 한 판이 끝납니다. 실패하면 다시 시작할 수 있습니다. 에이전트는 여러 판을 반복하면서 "어떤 선택이 결국 승리로 이어지는지" 배웁니다.

반면 창고 로봇은 계속 움직입니다. 물건 하나를 옮겼다고 세계가 초기화되지 않습니다. 배터리는 줄어들고, 다른 로봇들은 계속 돌아다니며, 새로운 주문이 들어옵니다. 여기서는 "한 판 끝"이라는 감각이 약합니다. 로봇은 장시간 안정적으로 좋은 결정을 내려야 합니다.

실무에서는 계속 이어지는 문제도 학습을 위해 인위적으로 에피소드로 자르곤 합니다. 예를 들어 하루를 하나의 에피소드로 보거나, 배터리가 일정 수준 이하로 떨어질 때까지를 한 에피소드로 볼 수 있습니다. 중요한 것은 자르는 방식이 문제의 목표와 맞아야 한다는 점입니다.

강화학습 문제 정의 체크리스트

현실 문제를 강화학습 문제로 바꾸기 전에 다음 질문을 차례대로 던져 보면 좋습니다. 이 질문에 답하지 못하면 아직 알고리즘을 적용할 준비가 되지 않은 것입니다.

  • 에이전트는 누구인가? 행동을 선택하는 주체가 무엇인지 정해야 합니다. 게임 캐릭터인지, 로봇인지, 추천 시스템인지, 언어 모델인지 분명히 해야 합니다.

  • 환경은 무엇인가? 에이전트가 상호작용하는 바깥 세계를 정해야 합니다. 게임 맵, 물리 세계, 사용자 반응, 대화 상대 등이 환경이 될 수 있습니다.

  • 상태 또는 관찰은 무엇인가? 에이전트가 결정을 내릴 때 볼 수 있는 정보를 정해야 합니다. 위치, 속도, 이미지, 텍스트, 배터리 잔량, 과거 행동 기록 등이 후보입니다.

  • 행동은 무엇인가? 에이전트가 실제로 선택할 수 있는 조작을 정해야 합니다. 이동 방향, 힘의 크기, 추천할 아이템, 생성할 답변 등이 행동이 될 수 있습니다.

  • 보상은 무엇인가? 좋은 결과를 어떤 숫자로 알려줄지 정해야 합니다. 성공 보상, 실패 벌점, 시간 비용, 안전 위반 벌점 등을 설계해야 합니다.

  • 종료 조건은 무엇인가? 한 번의 시도가 언제 끝나는지 정해야 합니다. 목표 달성, 실패, 시간 초과, 충돌, 작업 완료 등이 종료 조건이 될 수 있습니다.

  • 시간 단위는 무엇인가? 에이전트가 얼마나 자주 행동을 선택하는지 정해야 합니다. 1초마다 결정할지, 한 프레임마다 결정할지, 사용자 요청이 올 때마다 결정할지에 따라 문제가 달라집니다.

  • 탐험은 안전한가? 에이전트가 새로운 행동을 시도해도 되는지 확인해야 합니다. 게임에서는 실패해도 다시 시작하면 되지만, 실제 로봇이나 금융 시스템에서는 탐험이 비용과 위험을 만들 수 있습니다.

  • 성공을 어떻게 평가할 것인가? 학습 중 받은 보상뿐 아니라 실제 목표를 잘 달성했는지 확인할 기준이 필요합니다. 평균 보상, 성공률, 안전 위반 횟수, 사용자 만족도 등을 함께 볼 수 있습니다.

이 체크리스트는 단순한 형식이 아닙니다. 강화학습 문제의 뼈대입니다. 이 뼈대가 약하면 뒤에 어떤 알고리즘을 얹어도 흔들립니다.

모든 문제를 강화학습으로 풀 필요는 없다

강화학습은 강력하지만 만능은 아닙니다. 특히 정답 데이터가 이미 충분히 있고, 각 입력에 대해 맞혀야 할 출력이 명확하다면 지도학습이 더 단순하고 효과적일 수 있습니다.

예를 들어 사진을 보고 고양이인지 개인지 분류하는 문제는 보통 강화학습 문제가 아닙니다. 이미지가 주어지고 정답 라벨이 있습니다. 모델은 고양이 사진에는 "고양이", 개 사진에는 "개"라고 답하도록 배우면 됩니다. 행동이 미래 상태를 바꾸지도 않고, 장기 보상을 고려할 필요도 없습니다.

스팸 메일 분류도 비슷합니다. 메일 내용이 입력이고, 스팸인지 아닌지가 정답입니다. 물론 실제 서비스에서는 사용자의 반응이 미래 데이터에 영향을 줄 수 있지만, 기본 문제만 놓고 보면 지도학습이 자연스럽습니다.

반대로 강화학습이 어울리는 문제는 선택이 다음 상황을 바꾸는 문제입니다. 지금 왼쪽으로 가면 다음 상태가 달라지고, 지금 추천한 영상이 사용자의 다음 행동에 영향을 주고, 지금 로봇이 빠르게 움직이면 나중에 충돌 위험이 커질 수 있습니다. 즉, 현재 행동이 미래의 기회를 바꾸는 문제입니다.

구분 기준은 이렇게 생각할 수 있습니다.

  • 정답이 이미 있고 한 번 예측하면 끝나는가? 그렇다면 지도학습이 먼저입니다.

  • 행동이 다음 상태를 바꾸고 결과가 시간이 지나 나타나는가? 그렇다면 강화학습을 고려할 수 있습니다.

  • 좋은 행동을 직접 알려주기 어렵지만 결과에 대한 보상은 줄 수 있는가? 그렇다면 강화학습이 유용할 수 있습니다.

  • 실패를 반복해도 안전하거나 시뮬레이터에서 연습할 수 있는가? 그렇다면 강화학습 실험이 쉬워집니다.

  • 탐험 비용이 너무 크고 보상도 애매한가? 그렇다면 강화학습을 바로 적용하기보다 지도학습, 모방학습, 규칙 기반 방법, 오프라인 데이터 활용을 먼저 검토해야 합니다.

중요한 것은 "강화학습을 쓸 수 있는가?"보다 "강화학습이 이 문제에 맞는가?"입니다. 망치가 멋지다고 모든 것을 못으로 보면 안 됩니다.

강화학습이 잘 맞는 문제의 냄새

강화학습이 잘 맞는 문제에는 몇 가지 공통된 냄새가 있습니다.

첫째, 순서가 중요합니다. 한 번의 선택으로 끝나지 않고 여러 선택이 이어집니다. 미로에서 첫 번째 이동은 두 번째 이동의 가능성을 바꾸고, 두 번째 이동은 세 번째 이동의 가능성을 바꿉니다. 이런 문제에서는 단일 예측보다 전략이 중요합니다.

둘째, 행동의 결과가 늦게 나타납니다. 지금은 손해처럼 보이는 행동이 나중에 큰 이득으로 이어질 수 있습니다. 앞 장에서 본 장기 보상의 문제입니다. 게임에서 열쇠를 얻기 위해 돌아가는 행동은 당장은 시간을 잃지만, 나중에 문을 열어 더 큰 보상을 얻게 할 수 있습니다.

셋째, 탐험이 필요합니다. 처음부터 어떤 행동이 좋은지 모릅니다. 오른쪽 길이 빠른지, 왼쪽 길에 보물이 있는지 직접 가 봐야 알 수 있습니다. 이때 ε-greedy 같은 단순한 탐험 전략이 등장합니다. 대부분은 지금 좋아 보이는 행동을 하되, 가끔은 무작위 행동을 해 보는 방식입니다. 나중에 Q-learning에서는 이 탐험을 통해 여러 행동의 Q값을 채워 나갑니다.

넷째, 보상을 통해 목표를 표현할 수 있습니다. 정답 행동을 일일이 알려주기는 어렵지만, 결과가 좋은지 나쁜지는 평가할 수 있어야 합니다. 로봇에게 모든 상황에서의 정답 행동을 사람이 적어 주기는 어렵습니다. 하지만 넘어졌는지, 목표 지점에 도착했는지, 에너지를 너무 많이 썼는지는 측정할 수 있습니다.

이 네 가지 냄새가 강할수록 강화학습이 어울릴 가능성이 큽니다. 반대로 순서도 없고, 장기 결과도 없고, 탐험할 필요도 없고, 정답 라벨이 충분하다면 강화학습은 과한 도구일 수 있습니다.

보상만 잘 주면 다 해결될까

강화학습을 처음 접하면 "원하는 것에 보상을 주면 되지 않을까?"라고 생각하기 쉽습니다. 하지만 보상은 생각보다 까다롭습니다.

예를 들어 자동차 주행 에이전트에게 "빨리 도착하면 보상"을 준다고 해 봅시다. 그러면 에이전트는 과속을 배울 수 있습니다. "충돌하지 않으면 보상"을 크게 주면 아예 움직이지 않는 전략이 안전하다고 판단할 수도 있습니다. "차선을 잘 지키면 보상"을 주면 목적지로 가지 않고 차선 중앙만 얌전히 따라갈 수도 있습니다.

좋은 보상은 하나의 숫자 안에 목표, 안전, 효율, 규칙을 적절히 담아야 합니다. 하지만 너무 많은 요소를 억지로 합치면 또 다른 문제가 생깁니다. 어느 요소가 정말 중요한지 애매해지고, 에이전트가 보상 함수의 빈틈을 찾아낼 수 있습니다.

그래서 강화학습 문제를 볼 때는 항상 보상 해킹을 의심해야 합니다. 보상 해킹이란 에이전트가 우리가 원한 목적을 달성하는 대신, 보상 숫자만 높이는 편법을 찾아내는 현상입니다. 게임에서 점수를 얻기 위해 같은 행동을 무한 반복하거나, 로봇이 센서를 속여 성공한 것처럼 만드는 식입니다.

에이전트는 도덕적 의도를 읽지 않습니다. 보상 신호를 읽습니다. 그래서 보상은 친절하면서도 빈틈없이 설계해야 합니다.

관찰 가능한가, 실행 가능한가, 반복 가능한가

현실 문제를 강화학습으로 풀기 전에 꼭 확인해야 할 세 가지 질문이 있습니다.

첫째, 관찰 가능한가? 에이전트가 좋은 결정을 내리는 데 필요한 정보를 볼 수 있어야 합니다. 자율주행차가 주변 차량을 전혀 감지하지 못한다면 좋은 운전 전략을 배우기 어렵습니다. 언어 모델이 사용자의 질문만 보고 답해야 하는데 중요한 맥락이 빠져 있다면 좋은 답변을 만들기 어렵습니다.

둘째, 실행 가능한가? 에이전트가 선택한 행동을 실제 환경에서 실행할 수 있어야 합니다. 로봇의 모터가 낼 수 없는 힘을 행동으로 정의하면 아무 의미가 없습니다. 추천 시스템이 보여 줄 수 없는 상품을 행동 후보에 넣어도 소용이 없습니다.

셋째, 반복 가능한가? 강화학습은 시행착오를 통해 배웁니다. 게임이나 시뮬레이터에서는 수천 번, 수만 번 실패해도 괜찮습니다. 하지만 실제 병원 치료, 대규모 금융 거래, 물리 로봇의 위험한 동작에서는 마음대로 탐험할 수 없습니다. 이런 경우에는 안전한 시뮬레이터, 오프라인 데이터, 사람의 시연, 제한된 탐험 전략이 필요합니다.

이 세 가지가 준비되지 않았는데 강화학습 알고리즘부터 적용하면 학습은 불안정해집니다. 에이전트는 볼 수 없는 정보를 추측해야 하고, 실행할 수 없는 행동을 선택하며, 위험한 시행착오를 반복하게 됩니다.

작은 격자 세계로 다시 보기

이제 우리가 계속 떠올렸던 작은 격자 세계를 강화학습 문제로 정리해 봅시다.

에이전트는 격자 안의 캐릭터입니다. 환경은 벽, 빈칸, 함정, 목표 지점이 있는 격자 세계입니다. 상태는 캐릭터의 현재 위치입니다. 행동은 위, 아래, 왼쪽, 오른쪽 네 가지입니다. 보상은 목표 지점에 도착하면 +10, 함정에 빠지면 -10, 한 칸 움직일 때마다 -1로 줄 수 있습니다. 종료 조건은 목표에 도착하거나 함정에 빠지는 순간입니다.

이렇게 정의하면 문제의 모양이 선명해집니다. 에이전트는 현재 위치를 보고 행동을 선택합니다. 환경은 이동 결과를 돌려줍니다. 벽에 막히면 제자리에 있을 수도 있고, 빈칸이면 다음 칸으로 이동합니다. 에이전트는 보상을 받고, 다음 상태에서 다시 행동을 선택합니다.

이 구조가 바로 앞으로 배울 가치 기반 학습의 무대가 됩니다. Q-learning에서는 각 상태와 행동의 조합에 대해 "이 행동을 하면 앞으로 얼마나 좋을까?"를 Q값으로 저장합니다. 처음에는 아무것도 모르기 때문에 여기저기 탐험합니다. 시간이 지나면 보상을 많이 얻는 경로의 Q값이 커지고, 에이전트는 점점 더 나은 길을 선택하게 됩니다.

작은 격자 세계는 장난감처럼 보이지만 강화학습의 핵심이 들어 있습니다. 상태를 본다. 행동을 선택한다. 보상을 받는다. 다음 상태로 이동한다. 장기 보상이 커지는 전략을 배운다.

복잡한 로봇도, 게임 AI도, 언어 모델의 선호 학습도 이 기본 틀에서 출발합니다. 차이는 상태와 행동과 보상이 훨씬 커지고 복잡해진다는 점입니다.

문제 정의가 곧 학습의 방향이다

강화학습 에이전트는 우리가 정의한 세계 안에서만 배웁니다. 상태에 넣지 않은 정보는 보지 못합니다. 행동으로 허용하지 않은 선택은 할 수 없습니다. 보상으로 알려주지 않은 목표는 중요하게 여기지 않습니다. 종료 조건으로 끊어 주지 않은 경험은 계속 이어지는 흐름으로 받아들입니다.

그래서 강화학습 문제를 정의한다는 것은 에이전트에게 세계를 설명하는 일입니다. 어떤 것을 볼 수 있는지, 어떤 손발을 가졌는지, 무엇을 잘했다고 칭찬할지, 언제 한 번의 도전이 끝나는지를 정하는 일입니다.

이 단계가 정확할수록 알고리즘은 배울 기회를 얻습니다. 반대로 이 단계가 어긋나면 알고리즘은 아주 성실하게 엉뚱한 것을 배웁니다. 에이전트는 게으른 학생이 아니라, 주어진 시험지를 그대로 푸는 학생에 가깝습니다. 시험지의 문제가 잘못되어 있으면 답도 엉뚱해집니다.

이제 강화학습의 기본 구성요소를 하나의 문제 구조로 묶어 보았습니다. 다음으로는 이 구조를 조금 더 엄밀하게 표현하는 틀이 필요합니다. 상태, 행동, 보상, 다음 상태가 어떤 관계로 이어지는지 수학적으로 정리한 도구가 있습니다. 바로 Markov Decision Process, 줄여서 MDP입니다.

MDP는 갑자기 어려운 수학을 들이밀기 위한 장치가 아닙니다. 우리가 지금까지 말한 "상태를 보고, 행동하고, 보상을 받고, 다음 상태로 간다"는 이야기를 깔끔한 언어로 정리하는 방법입니다. 이 틀을 이해하면 Q-learning, Bellman Equation, Policy Gradient 같은 뒤의 개념들이 훨씬 덜 낯설게 보이기 시작합니다.

책 목록

처음 만나는 강화학습: 보상으로 행동을 배우는 AI

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기