Skip to main content
Summary

Q값은 강력하지만 만능은 아니다

Q-learning과 DQN은 강화학습을 이해하는 데 아주 좋은 출발점이다. 에이전트가 어떤 상태에서 어떤 행동을 했을 때 앞으로 받을 보상이 얼마나 클지 추정하고, 그중 가장 좋아 보이는 행동을 고른다. 복잡해 보이는 의사결정 문제가 Q(s, a)라는 숫자 비교로 바뀐다. 격자 세계에서 위, 아래, 왼쪽, 오른쪽 중 하나를 고르거나, 아타리 게임에서 조이스틱 입력을 선택하는 문제라면 이 방식은 꽤 자연스럽다.

하지만 강화학습의 세계는 격자판보다 훨씬 넓다. 로봇 팔은 위아래 네 방향으로만 움직이지 않는다. 자율주행차는 왼쪽, 직진, 오른쪽이라는 세 버튼만 누르지 않는다. 언어 모델은 다음 단어 하나만 잘 고른다고 해서 좋은 답변을 완성하지 않는다. 현실의 많은 문제에서 행동은 너무 많거나, 연속적이거나, 확률적으로 선택되어야 하며, 보상은 뒤늦게 오고, 학습 과정은 작은 흔들림에도 쉽게 불안정해진다.

가치 기반 방법의 한계는 바로 여기서 드러난다. Q값을 잘 추정하는 것만으로는 충분하지 않은 순간이 온다.

가치 기반 방법의 한계

가장 좋은 행동 하나를 고르는 방식

가치 기반 방법의 기본 생각은 단순하다. 가능한 행동마다 점수를 매기고, 가장 점수가 높은 행동을 고른다. Q-learning에서는 Q-table에 그 점수를 저장했고, DQN에서는 신경망이 그 점수를 예측했다.

흐름은 대략 이렇다.

상태를 본다. 가능한 행동들의 Q값을 계산한다. 그중 가장 큰 Q값을 가진 행동을 선택한다. 행동한 뒤 받은 보상과 다음 상태를 이용해 Q값을 고친다. 이 과정을 반복하면, 에이전트는 점점 더 좋은 행동을 고르게 된다.

이 방식은 행동 후보가 적고 명확할 때 빛난다. 미로에서 네 방향 중 하나를 고르는 문제라면 모든 행동의 Q값을 비교하는 일이 어렵지 않다. 게임에서 버튼 조합이 제한적이라면 신경망이 각 버튼의 Q값을 한 번에 출력할 수도 있다.

문제는 행동의 세계가 버튼 몇 개로 끝나지 않을 때다.

로봇 팔은 버튼 네 개로 움직이지 않는다

로봇 팔이 컵을 집어 올리는 장면을 떠올려 보자. 로봇은 팔꿈치를 몇 도 굽힐지, 손목을 얼마나 회전할지, 집게에 어느 정도 힘을 줄지 결정해야 한다. 행동이 위, 아래, 왼쪽, 오른쪽처럼 딱 나뉘지 않는다. 팔꿈치를 12도 움직일 수도 있고, 12.1도 움직일 수도 있고, 12.137도 움직일 수도 있다. 힘도 마찬가지다. 조금 세게 잡으면 컵이 깨지고, 조금 약하게 잡으면 떨어진다.

이런 문제를 연속 행동 공간이라고 부른다. 행동이 몇 개의 선택지로 나뉘는 것이 아니라, 실수 값처럼 이어진 범위 안에서 선택되는 경우다. 로봇 제어, 드론 비행, 차량 조향, 캐릭터의 세밀한 움직임 제어가 여기에 속한다.

가치 기반 방법은 여기서 곤란해진다. Q값을 비교하려면 가능한 행동들의 Q(s, a)를 알아야 한다. 그런데 행동이 무한히 많다면 어떻게 비교할까? 모든 각도, 모든 힘, 모든 속도 조합을 하나씩 넣어 보고 가장 큰 Q값을 찾을 수는 없다.

물론 연속적인 행동을 억지로 잘게 나누는 방법도 있다. 예를 들어 로봇 팔의 힘을 약함, 보통, 강함 세 단계로 나눌 수 있다. 하지만 이렇게 하면 두 가지 문제가 생긴다. 너무 거칠게 나누면 정교한 제어가 불가능하고, 너무 잘게 나누면 행동 수가 폭발한다.

  • 해상도 문제: 행동을 듬성듬성 나누면 섬세한 조절이 안 된다.

  • 조합 폭발 문제: 관절이 여러 개이면 각 관절의 선택지가 곱해져 행동 수가 급격히 늘어난다.

  • 최댓값 계산 문제: 가능한 행동이 많을수록 가장 큰 Q값을 찾는 계산 자체가 어려워진다.

DQN은 신경망으로 Q값을 근사해 Q-table의 한계를 넘었지만, 모든 행동을 비교해 최댓값을 고른다는 기본 구조까지 사라진 것은 아니다. 행동 후보가 적은 게임에서는 괜찮지만, 연속 제어 문제에서는 이 구조가 발목을 잡는다.

항상 같은 행동만 고르면 위험한 세계

가치 기반 방법은 보통 가장 Q값이 큰 행동을 고른다. 탐험을 위해 ε-greedy처럼 가끔 무작위 행동을 섞을 수는 있지만, 학습이 끝난 뒤의 기본 목표는 하나다. 현재 상태에서 가장 좋아 보이는 행동을 선택하는 것이다.

그런데 어떤 문제에서는 가장 좋은 행동 하나로 고정되는 것이 오히려 나쁘다.

가위바위보를 생각해 보자. 상대가 내 전략을 볼 수 있다면, 나는 매번 같은 선택을 해서는 안 된다. 내가 항상 바위를 낸다는 사실을 상대가 알면, 상대는 보만 내면 된다. 축구의 승부차기도 비슷하다. 키커가 항상 오른쪽으로 찬다면 골키퍼는 오른쪽으로 뛰면 된다. 좋은 전략은 때로 확률적이어야 한다. 오른쪽으로 찰 수도 있고, 왼쪽으로 찰 수도 있으며, 가운데로 찰 수도 있어야 한다.

이런 상황에서는 확률적 정책이 필요하다. 확률적 정책이란 어떤 상태에서 행동 하나를 딱 정하는 대신, 여러 행동에 확률을 부여하는 정책이다. 예를 들어 현재 상태에서 왼쪽으로 갈 확률 60%, 오른쪽으로 갈 확률 40%처럼 행동을 선택한다.

가치 기반 방법도 탐험 중에는 무작위성을 사용한다. 하지만 ε-greedy의 무작위성은 대개 탐험을 위한 임시 장치다. 정책 자체가 정교한 확률 분포를 배우는 것과는 다르다. ε-greedy는 대체로 가장 좋은 행동을 높은 확률로 선택하고, 나머지는 대충 무작위로 흩뿌린다. 반면 어떤 문제에서는 어느 행동을 어느 정도 확률로 선택해야 하는지가 전략의 핵심이다.

대화형 AI에서도 비슷한 문제가 있다. 같은 질문에 언제나 완전히 같은 답을 해야 하는 상황도 있지만, 창의적인 문장 생성이나 사용자 의도에 맞춘 응답에서는 여러 가능성 사이의 균형이 중요하다. 답변의 품질은 다음 단어 하나의 Q값으로만 결정되지 않는다. 전체 문맥, 사용자 만족도, 안전성, 유용성이 함께 작용한다. 이런 문제에서는 행동을 하나씩 점수화해 최댓값만 고르는 방식이 답답해진다.

max 연산은 가끔 너무 낙관적이다

Q-learning의 업데이트를 떠올려 보자. 현재 Q값을 고칠 때 다음 상태에서 가능한 행동들 중 가장 큰 Q값을 사용했다. 즉, 다음 상태에 가면 가장 좋은 행동을 할 것이라고 가정하고 현재 행동의 가치를 평가했다.

이 생각은 직관적이다. 하지만 추정값이 완벽하지 않을 때 문제가 생긴다. 신경망이 예측한 Q값에는 오차가 있다. 어떤 행동은 실제보다 조금 높게 예측되고, 어떤 행동은 실제보다 조금 낮게 예측된다. 그런데 그중 최댓값을 고르면 어떻게 될까? 우연히 높게 예측된 값이 선택될 가능성이 커진다.

예를 들어 세 행동의 실제 가치가 모두 10이라고 해 보자. 하지만 신경망은 아직 서툴러서 각각 8, 10, 13으로 예측했다. 그러면 max는 13을 고른다. 실제로는 10인데, 우연히 부풀려진 값을 목표로 삼는다. 이 값이 다시 학습 목표가 되고, 그 목표를 따라 Q값이 또 조정된다. 이런 과정이 반복되면 Q값이 실제보다 과하게 커지는 현상이 나타날 수 있다.

이를 Q값 과대추정이라고 부른다. 말 그대로 행동의 가치를 실제보다 높게 보는 문제다. 강화학습에서는 현재 예측을 이용해 다음 예측을 고치는 일이 많다. 이런 방식을 부트스트래핑이라고 한다. 부트스트래핑 자체는 매우 유용하지만, 잘못된 예측이 다시 학습 목표로 사용될 수 있다는 위험도 함께 갖고 있다.

DQN 이후에는 이런 과대추정을 줄이기 위한 다양한 개선 방법이 등장했다. 하지만 중요한 직관은 간단하다. 최댓값을 고르는 연산은 좋은 행동을 찾는 데 유용하지만, 노이즈가 있는 추정값에서는 낙관적인 오류를 골라낼 수도 있다.

딥러닝과 만나면 학습은 더 예민해진다

DQN은 Q-learning에 딥러닝을 결합했다. 덕분에 이미지처럼 큰 상태 공간도 다룰 수 있게 되었지만, 그만큼 학습은 더 예민해졌다. 앞에서 경험 재생과 타깃 네트워크를 배운 이유도 여기에 있다. 신경망은 강력하지만, 학습 목표가 계속 흔들리면 쉽게 불안정해진다.

강화학습의 딥러닝 학습이 어려운 이유는 여러 요소가 동시에 얽히기 때문이다.

  • 함수 근사: Q-table 대신 신경망이 Q값을 예측하므로, 한 상태에서의 업데이트가 다른 상태의 예측에도 영향을 준다.

  • 부트스트래핑: 실제 정답이 아니라 다음 상태의 예측값을 이용해 현재 예측을 고친다.

  • 오프폴리시 학습: 현재 정책이 만든 데이터가 아니더라도 과거 경험을 이용해 학습한다.

이 세 가지는 각각 따로 보면 유용하다. 신경망은 큰 문제를 다루게 해 주고, 부트스트래핑은 매번 끝까지 경험하지 않아도 학습하게 해 주며, 오프폴리시 학습은 과거 데이터를 효율적으로 재사용하게 해 준다. 그러나 셋이 함께 있으면 작은 오류가 예상보다 크게 번질 수 있다.

예를 들어 신경망이 어떤 상태의 Q값을 조금 잘못 예측했다고 하자. 그 값이 다음 업데이트의 목표가 되고, 그 목표를 따라 다시 신경망이 조정된다. 그런데 신경망의 파라미터는 여러 상태에 공통으로 쓰이므로, 한 곳을 고치려다 다른 곳의 예측이 흔들릴 수 있다. 다시 그 흔들린 예측이 새로운 목표가 된다. 이렇게 학습이 안정적으로 내려가는 대신, 이리저리 출렁일 수 있다.

경험 재생은 데이터의 상관관계를 줄여 주고, 타깃 네트워크는 목표값의 흔들림을 늦춰 준다. 하지만 이것들은 완벽한 해결책이라기보다 안전벨트에 가깝다. 빠른 차를 몰 때 안전벨트가 필요하듯, DQN을 안정적으로 학습시키려면 여러 장치가 필요하다. 그래도 도로가 너무 험하거나 운전이 너무 거칠면 차는 흔들린다.

보상 설계에 민감한 에이전트

강화학습 에이전트는 우리가 준 보상을 따라간다. 이 말은 단순하지만 무섭다. 에이전트는 우리가 의도한 목표를 배우는 것이 아니라, 보상 함수에 적힌 신호를 최대화하려고 한다. 보상 설계가 조금만 어긋나도 예상 밖의 행동이 나올 수 있다.

게임 캐릭터에게 동전을 먹을 때마다 보상을 준다고 해 보자. 우리는 캐릭터가 동전을 먹고 출구로 가기를 기대한다. 그런데 출구에 도착하는 보상이 충분히 크지 않거나, 동전이 계속 생기는 구조라면 에이전트는 출구로 가지 않고 동전만 반복해서 먹을 수 있다. 겉으로는 보상을 많이 받는 훌륭한 전략처럼 보이지만, 실제 목표와는 다르다.

로봇에게 빠르게 이동하라고 보상을 주면, 로봇은 안정적으로 걷는 대신 이상한 자세로 미끄러지는 방법을 찾을 수도 있다. 대화 모델에게 사용자가 좋아요를 누르는 답변을 만들라고만 하면, 진실하고 유용한 답변보다 듣기 좋은 말만 늘어놓으려 할 수도 있다. 보상은 행동의 방향을 정하는 나침반이지만, 나침반이 조금 틀어져 있으면 에이전트는 아주 열심히 엉뚱한 곳으로 간다.

가치 기반 방법은 각 행동의 장기 보상을 추정한다. 그래서 보상 신호가 잘못 설계되면 Q값도 그 잘못된 목표를 향해 정교하게 학습된다. 알고리즘이 똑똑할수록 보상 함수의 빈틈을 더 잘 찾아낼 수 있다는 점이 아이러니다.

가치 기반 방법이 틀렸다는 뜻은 아니다

여기까지 들으면 Q-learning과 DQN이 쓸모없는 방법처럼 느껴질 수 있다. 그렇지 않다. 가치 기반 방법은 여전히 강화학습의 핵심 도구다. 행동 공간이 작고 명확한 문제, 장기 보상을 숫자로 비교하기 좋은 문제, 과거 경험을 효율적으로 재사용해야 하는 문제에서는 강력하다.

다만 모든 문제를 같은 방식으로 풀 수는 없다. 가치 기반 방법은 다음과 같은 질문 앞에서 어려움을 겪는다.

  • 행동이 연속적이라면 모든 행동의 Q값을 어떻게 비교할 것인가?

  • 좋은 전략이 확률적이어야 한다면 최댓값 행동 하나만 고르는 방식으로 충분한가?

  • Q값 추정이 흔들릴 때 max 연산과 부트스트래핑은 오류를 키우지 않는가?

  • 보상이 복잡하고 뒤늦게 올 때 가치 함수만으로 정책을 안정적으로 개선할 수 있는가?

이 질문들은 자연스럽게 다른 방향을 가리킨다. 행동의 가치를 먼저 계산한 뒤 가장 좋은 행동을 고르는 대신, 아예 행동을 고르는 방법 자체를 직접 학습하면 어떨까?

정책을 직접 배운다는 생각

정책 기반 학습은 여기서 출발한다. 가치 기반 방법이 Q(s, a)를 배우고 그 값으로 행동을 고른다면, 정책 기반 방법은 정책 자체를 학습한다. 즉, 상태가 들어왔을 때 어떤 행동을 얼마나 선택할지 바로 출력하는 모델을 만든다.

정책을 πθ(a|s)라고 써 보자. 어려운 기호처럼 보이지만 뜻은 간단하다. 파라미터 θ를 가진 정책이 상태 s에서 행동 a를 선택할 확률이라는 의미다. 딥러닝으로 표현하면, 신경망이 상태를 입력받아 행동의 확률 분포를 출력하는 것이다.

이 방식은 연속 행동 문제에서 특히 자연스럽다. 로봇 팔에게 각 행동의 Q값을 모두 계산하라고 하는 대신, 정책 신경망이 바로 움직임의 평균과 분산을 출력하게 할 수 있다. 예를 들어 손목을 어느 정도 돌릴지에 대한 확률 분포를 만들고, 그 분포에서 행동을 샘플링한다. 그러면 무한히 많은 행동 후보를 전부 비교하지 않아도 된다.

확률적 전략도 자연스럽게 표현된다. 정책은 처음부터 행동 하나가 아니라 행동들의 분포를 배운다. 어떤 상태에서는 안전한 행동에 높은 확률을 주고, 어떤 상태에서는 여러 행동을 섞어 선택할 수 있다. 탐험을 억지로 ε-greedy로 덧붙이는 것이 아니라, 정책의 확률적 성격 안에서 행동 다양성을 다룰 수 있다.

가치 기반 방법과 정책 기반 방법의 차이는 이렇게 정리할 수 있다.

관점가치 기반 방법정책 기반 방법
무엇을 배우는가행동의 가치 Q(s, a)행동을 선택하는 정책 πθ(a
행동 선택Q값이 가장 큰 행동 선택정책이 만든 확률 분포에서 선택
강점이산 행동, 경험 재사용에 강함연속 행동, 확률적 전략에 자연스러움
어려움max 계산, 과대추정, 불안정성학습 신호가 noisy하고 표본 효율이 낮을 수 있음

정책 기반 방법도 완벽하지는 않다. 보상을 직접 보고 정책을 조금씩 조정해야 하므로 학습 신호가 흔들릴 수 있고, 많은 경험이 필요할 수 있다. 하지만 가치 기반 방법이 막히는 지점에서 새로운 길을 열어 준다.

가치 함수는 버려지는 것이 아니라 역할이 바뀐다

정책을 직접 배운다고 해서 가치 함수가 사라지는 것은 아니다. 오히려 앞으로 더 중요한 방식으로 다시 등장한다. 정책이 배우는 방향을 더 안정적으로 잡아 주기 위해 가치 함수를 함께 사용하는 방법이 등장한다. 이것이 바로 Actor-Critic의 핵심 아이디어다.

Actor는 행동하는 쪽이다. 상태를 보고 어떤 행동을 할지 정한다. Critic은 평가하는 쪽이다. Actor가 한 행동이 얼마나 좋았는지, 기대보다 나았는지 못했는지를 평가한다. 정책 기반 방법이 조종사라면, 가치 함수는 옆자리에서 계속 피드백을 주는 코치가 된다.

이 연결은 강화학습의 큰 흐름을 보여 준다. 처음에는 Q값만 잘 알면 된다고 생각했다. 그러다 행동 공간이 커지고, 전략이 확률적이어야 하고, 학습이 흔들리는 문제를 만났다. 그래서 정책 자체를 직접 개선하려는 방향으로 나아간다. 하지만 정책만으로도 불안정하므로, 다시 가치 함수를 평가자로 불러온다.

강화학습은 하나의 정답 알고리즘으로 끝나는 분야가 아니다. 문제의 모양에 따라 다른 도구가 필요하다. Q-learning과 DQN은 행동의 가치를 배우는 강력한 도구다. 그러나 로봇, 게임 캐릭터, 대화형 에이전트, 언어 모델처럼 복잡한 행동을 다루려면 정책 자체를 배우는 관점이 필요해진다.

다음 문은 자연스럽게 열린다. Q값을 비교하는 대신, 좋은 행동이 더 자주 나오도록 정책을 직접 밀어 주는 방법. 그것이 Policy Gradient다.

책 목록

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

전체 목차 보기

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

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

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

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

참여하기