시작하며
퇴사하고 약 한달간 운전 면허 학원에 다닌 것을 제외하면 이렇다할 공부나 프로젝트를 진행하지 않았다. 2년간 직장에 다녔다보니 일찍 일어나지 않아도 되는 아침, 언제든 잘 수 있는 낮잠, 새벽까지 깨어있어도 편한 마음 모두 정말 즐겁고 행복했다. 이런 자유를 만끽하느라 블로그도 만들어놓고 방치했다. 하지만 한 달 가까이 쉬다보니 슬슬 걱정도 되고 심심하기도 해서 적당히 규칙적인 삶을 살면서 공부와 프로젝트도 진행하려고 한다.
그 일환으로 오늘부터 이 포스트를 시작으로 Google DeepMind의 David Silver가 UCL에서 진행했던 Reinforcement Learning 강의를 듣고 내용을 정리해보고자 한다. 다음 학기 복학 예정인 KAIST와 비교해보면 ‘강화학습개론’ 정도의 강의인 것으로 보인다. 크게 어려운 내용은 아니지만 강화학습의 기본 개념을 이해하는 데 도움이 될 것 같다. 아직 운전면허 취득도 도로주행이 남아있어 RL 포스트를 얼마나 자주 올릴 수 있을지는 모르겠지만 적어도 일주일에 2개 정도는 올릴 것 같다.
About RL
Reinforcement Learning은 머신러닝 분야의 한 가지 접근 방식으로, agent가 환경과 상호작용하며 보상을 최대화하는 학습 방법이다. David Silver는 RL이 컴퓨터 공학, 신경과학, 경제학, 물리학 등 다양한 분야가 결합되어 있는 의사결정 과학이라고 이야기한다. 주요 특징은 아래와 같다.
supervisor가 없는 대신reward가 존재한다- 행동에 대한 피드백이 즉각적이지 않을 수 있다
- 시간에 따라 상태가 변하는 동적인 환경이므로 데이터들이 시계열적인 연관성을 가진다
agent의action이 이후의 데이터에 영향을 준다
간단한 예시들도 몇 가지 보여주었는데 헬리콥터를 조종하거나, 휴머노이드 로봇을 걷게 만들거나, 투자 포트폴리오를 관리하거나, Atari 게임을 플레이하는 예시들이 있었다. 나는 고등학생 때 처음 RL을 접하면서 DQN을 이용하여 Atari 게임들을 플레이하는 영상을 봤었는데 굉장히 충격적이었던 기억이 난다. 픽셀만 보고 게임을 배운다는 것도 신기했지만, 더 신기했던 건 “어떤 행동을 해야 나중에 점수가 높아질까?”라는 질문 하나로 이렇게 다양한 문제를 설명할 수 있다는 점이었다.
The RL Problem
Rewards
앞에서도 살짝 이야기했지만 Rewards()는 RL의 핵심 개념이다. 는 step t에서 agent가 취한 action에 대한 scalar feedback으로 볼 수 있다. 예를 들어, 투자 포트폴리오 관리를 해주는 RL 프로젝트를 진행 중이라면 수익이 곧 rewards가 될 것이고, 체스 같은 게임이라면 승리가 곧 rewards가 될 것이다. 결국 RL은 rewards의 총합을 최대화하는 방법을 찾는 것이다.
강의에서는 이를 Reward Hypothesis라고 표현한다.
All goals can be described by the maximisation of expected cumulative reward
모든 목표를 expected cumulative reward의 최대화로 설명할 수 있다는 주장인데, 처음 들으면 조금 과감하게 느껴진다. 인간의 목표를 전부 하나의 reward로 바꿀 수 있냐고 물으면 당연히 애매한 부분이 많다. 하지만 적어도 RL 문제를 수학적으로 다루기 위해서는 목표를 reward signal로 표현해야 한다. 그래서 “좋은 reward를 설계하는 것” 자체가 RL에서 굉장히 중요한 문제가 된다.
여기서 중요한 점은 지금 당장의 reward만 보는 것이 아니라는 것이다. RL은 sequential decision making 문제이기 때문에 action 하나가 먼 미래의 reward에 영향을 줄 수 있다. 예를 들어 게임에서 지금 당장 점수를 얻는 행동보다 상대의 다음 수를 막는 행동이 더 좋을 수도 있고, 헬리콥터가 당장 빠르게 움직이는 것보다 연료를 보충하는 것이 더 나을 수도 있다. 즉 좋은 agent는 눈앞의 보상과 장기적인 보상을 같이 고려해야 한다.
Agent and Environment
RL 문제는 기본적으로 agent와 environment의 상호작용으로 표현된다. 매 step마다 agent는 action을 선택하고, environment는 observation과 reward를 돌려준다.
조금 더 풀어보면 agent는 현재까지 본 정보로 action 를 결정한다. environment는 그 action을 받아 다음 observation 과 reward 를 만들어낸다. 그리고 이 과정이 계속 반복된다.
이 구조가 supervised learning과 꽤 다르게 느껴진다. supervised learning에서는 이미 주어진 데이터셋을 보고 정답과 예측값의 차이를 줄이는 식으로 생각할 수 있다. 하지만 RL에서는 agent가 어떤 action을 하느냐에 따라 다음에 보게 될 데이터 자체가 바뀐다. 내가 잘못된 선택을 하면 이상한 상태로 들어갈 수도 있고, 반대로 좋은 선택을 하면 더 좋은 정보를 볼 수도 있다. 그래서 RL에서는 데이터가 그냥 주어지는 것이 아니라, agent가 행동하면서 만들어간다고 보는 편이 더 자연스럽다.
History and State
RL에서 history란 observations, actions, rewards들의 묶음이다. 시간 t까지 관측 가능한 모든 변수들이라고 생각하면 편하다.
그렇다면 State는 뭘까? State는 다음 step에서 어떤 일이 벌어질지 예측하기 위해 필요한 정보들로 history의 함수로 표현될 수 있다.
State에도 종류가 있는데 environment state()와 agent state()이다. 는 실제 environment의 상태라고 생각하면 된다. agent가 관측할 수 없는 데이터들이 포함될 수 있다. 반면, 는 agent가 관측하여 믿고 있는 상태로, action을 결정하는데 사용된다.
Markov State
앞서 State는 history의 함수라고 설명했다. 하지만 모든 history의 함수가 좋은 state인 것은 아니다. 강화학습에서 state는 미래를 예측하는 데 필요한 정보를 충분히 담고 있어야 하며, 이를 Markov Property를 만족한다고 표현한다.
수식으로는 아래와 같다.
즉 현재 state와 action이 주어졌다면 과거의 history를 추가로 알 필요 없이 미래를 예측할 수 있어야 한다. 다시 말해 state는 history에 포함된 정보를 미래 예측에 필요한 형태로 압축한 표현이라고 볼 수 있다.
Markov Property를 만족하는 state를 Markov State라고 부른다. 일반적으로 RL에서 environment state는 Markov State라고 가정한다. 반면 agent가 관측할 수 있는 정보가 제한적인 경우에는 agent state가 Markov Property를 만족하지 않을 수도 있다.
예를 들어 체스에서는 현재 말들의 배치만 알면 다음 상태를 예측할 수 있으므로 현재 보드 상태가 Markov State가 된다. 하지만 포커에서는 상대방의 카드 정보를 알 수 없기 때문에 현재 관측만으로는 미래를 완전히 예측할 수 없으며, agent가 사용하는 state는 Markov State가 아닐 수 있다.
RL에서 state를 정의하는 목적은 단순히 정보를 저장하는 것이 아니라, history를 미래 예측에 충분한 형태로 요약하는 것이다. 따라서 강화학습 이론에서 state라는 용어는 대부분 Markov State를 의미한다고 볼 수 있다.
Fully Observable and Partially Observable Environments
Markov State를 이야기하고 나면 자연스럽게 observability 문제가 나온다. agent가 environment state를 직접 관측할 수 있다면 fully observable environment라고 한다.
이 경우 agent state, environment state, information state가 사실상 같은 것이 된다. 강의에서는 이런 문제를 Markov Decision Process 또는 MDP라고 부른다. 아마 다음 강의부터 본격적으로 다룰 내용도 이쪽일 것이다.
반대로 agent가 environment state를 직접 볼 수 없고 일부 observation만 받는다면 partially observable environment가 된다. 강의에서는 로봇이 카메라 영상은 받지만 자기의 절대 위치는 모르는 경우, trading agent가 현재 가격만 관측하는 경우, poker agent가 공개 카드만 볼 수 있는 경우를 예시로 들었다.
이 경우 agent는 자신만의 state representation을 만들어야 한다. 단순하게는 complete history를 그대로 state로 둘 수도 있다.
하지만 history 전체를 계속 들고 있는 것은 비효율적이다. 그래서 environment state에 대한 belief를 유지하거나, RNN처럼 이전 hidden state와 현재 observation을 이용해 새로운 agent state를 만드는 방법도 생각할 수 있다. 지금 단계에서는 세부 구현보다 “agent가 보는 observation과 실제 environment state가 다를 수 있다”는 사실을 기억하는 게 더 중요해 보인다.
Inside An RL Agent
강의의 다음 파트는 RL agent 안에 어떤 구성요소가 들어갈 수 있는지 설명한다. 크게 policy, value function, model 세 가지를 이야기한다.
Policy
Policy는 agent의 행동 방식이다. 특정 state에서 어떤 action을 할지 정하는 함수라고 보면 된다.
Deterministic policy는 state가 주어졌을 때 action을 하나로 정한다.
Stochastic policy는 state가 주어졌을 때 action에 대한 확률분포를 만든다.
개인적으로 policy는 “agent의 성격”에 가깝게 느껴진다. 같은 게임판을 보고도 공격적인 agent와 방어적인 agent가 다른 수를 둘 수 있는데, 그 차이가 결국 policy에 들어있다고 볼 수 있다.
Value Function
Value function은 어떤 state가 얼마나 좋은지 평가하는 함수이다. 정확히는 현재 state에서 시작했을 때 앞으로 받을 reward의 기대값을 예측한다.
여기서 는 discount factor이다. 미래 reward를 얼마나 중요하게 볼지 정하는 값이라고 생각하면 된다. 가 작으면 가까운 reward를 더 중요하게 보고, 가 1에 가까우면 먼 미래의 reward도 꽤 중요하게 본다.
Value function이 있으면 agent는 action을 고를 때 “지금 당장 reward가 얼마인가?”만 보는 것이 아니라 “이 action 이후에 도착할 state가 얼마나 좋은가?”를 볼 수 있다. maze 예시에서 goal에 가까운 칸의 value가 높게 나오고, 막다른 길이나 먼 곳의 value가 낮게 나오는 식이다.
Model
Model은 environment가 어떻게 동작하는지에 대한 agent 내부의 표현이다. 쉽게 말하면 “이 action을 하면 다음 state가 어떻게 바뀌고, reward는 얼마나 받을까?”를 예측하는 부분이다.
강의에서는 transition과 reward를 아래처럼 표현한다.
예를 들어 maze에서 북쪽으로 움직이면 실제로 위 칸으로 이동하는지, 벽에 막혀 제자리에 있는지, 그때 reward가 얼마인지 예측하는 것이 model이다. 다만 agent가 항상 완벽한 model을 가지고 있는 것은 아니다. 현실의 environment는 복잡하고, agent가 가진 model은 틀릴 수도 있다.
RL Agent Taxonomy
위 세 구성요소를 기준으로 RL agent를 대략 분류할 수 있다.
Value-Based: 명시적인 policy 없이 value function을 중심으로 action을 선택한다Policy-Based: value function 없이 policy를 직접 학습한다Actor-Critic: policy와 value function을 함께 사용한다Model-Free: environment model 없이 policy나 value function을 학습한다Model-Based: environment model을 가지고 planning에 활용한다
처음 볼 때는 이름이 좀 많아 보이지만, 결국 “무엇을 직접 학습하느냐”와 “environment model을 가지고 있느냐”로 나눠 보는 것이다. DQN은 대표적인 value-based, model-free 방법으로 볼 수 있고, policy gradient 계열은 policy-based 방법으로 볼 수 있다. Actor-Critic은 이름 그대로 actor가 policy 역할을 하고 critic이 value function 역할을 한다고 이해하면 된다.
Problems within RL
마지막 파트는 RL 안에서 자주 나오는 문제 구분을 정리한다. 여기까지 보면 RL이 단순히 “reward를 많이 받도록 학습한다”에서 끝나는 것이 아니라, 그 안에도 여러 관점이 있다는 걸 알 수 있다.
Learning and Planning
Learning과 planning은 sequential decision making에서 가장 기본적인 구분이다.
Reinforcement Learning에서는 environment가 처음에는 unknown이다. agent가 environment와 직접 상호작용하면서 경험을 모으고, 그 경험을 통해 policy를 개선한다. Atari를 예로 들면, agent는 게임 규칙을 모른 채 joystick action을 선택하고, pixels와 score를 보면서 배워간다.
반면 planning에서는 environment model이 known이라고 가정한다. agent가 실제 environment와 상호작용하지 않아도, 자기 안의 model을 이용해 “이 action을 하면 다음 state와 reward가 어떻게 될까?”를 계산해볼 수 있다. 체스 엔진이 여러 수 앞을 search하는 것을 떠올리면 이해하기 쉽다.
물론 현실에서는 둘이 완전히 분리되어 있지 않을 수 있다. model을 배우고, 배운 model로 planning을 하고, 다시 실제 interaction으로 model을 고치는 식의 조합도 가능하다. 그래도 첫 강의에서는 learning은 경험을 통해 개선하는 것, planning은 model을 이용해 계산하는 것으로 구분하면 충분해 보인다.
Exploration and Exploitation
RL을 trial-and-error learning이라고 부르는 이유는 exploration 문제가 있기 때문이다. agent는 이미 알고 있는 좋은 action을 선택해서 reward를 얻고 싶지만, 동시에 더 좋은 action이 있는지 알아보기 위해 새로운 선택도 해봐야 한다.
Exploitation: 지금까지 아는 정보로 가장 좋아 보이는 action을 선택한다Exploration: 더 많은 정보를 얻기 위해 잘 모르는 action을 시도한다
강의에서는 식당 선택 예시가 나왔는데 꽤 직관적이다. 좋아하는 식당에 가는 것은 exploitation이고, 새로운 식당을 가보는 것은 exploration이다. 좋아하는 식당만 가면 안정적이지만 더 맛있는 식당을 못 찾을 수 있고, 매번 새로운 식당만 가면 실패할 확률이 높다. RL agent도 비슷한 고민을 한다.
이 부분은 실제 서비스에도 많이 연결된다. 온라인 광고에서 가장 성과가 좋은 광고만 계속 보여주는 것은 exploitation이고, 새로운 광고를 일부 사용자에게 보여보는 것은 exploration이다. 단기 성과만 보면 exploitation이 좋아 보이지만, 장기적으로는 exploration을 하지 않으면 더 좋은 선택지를 발견할 수 없다.
Prediction and Control
마지막으로 prediction과 control의 구분이 나온다.
Prediction은 주어진 policy를 평가하는 문제이다. 즉 “이 policy를 따르면 future reward가 얼마나 될까?”를 계산한다.
Control은 더 좋은 policy를 찾는 문제이다. 즉 “어떤 policy를 따라야 future reward가 최대가 될까?”를 찾는다.
Gridworld 예시로 보면 prediction은 random policy가 주어졌을 때 각 칸의 value를 계산하는 문제이고, control은 가능한 policy들 중에서 optimal value function과 optimal policy를 찾는 문제이다. 처음에는 둘 다 비슷해 보이지만, prediction은 평가이고 control은 최적화라고 생각하면 구분이 된다.
마치며
첫 강의는 수식이 아주 깊게 들어가지는 않았지만, RL을 바라보는 기본 틀을 잡아주는 내용이었다. 내가 이해한 핵심은 세 가지 정도이다.
첫째, RL은 reward를 최대화하는 sequential decision making 문제이다. 둘째, state는 history를 미래 예측에 충분한 형태로 요약한 정보이다. 셋째, agent를 이해할 때는 policy, value function, model을 기준으로 보면 된다.
개인적으로는 Markov State 부분이 가장 중요하게 느껴졌다. 강화학습을 처음 공부하면 reward나 policy가 더 눈에 띄는데, 결국 agent가 무엇을 state로 보고 있는지가 문제를 크게 좌우한다. observation이 충분하지 않으면 아무리 좋은 알고리즘을 써도 한계가 있을 수 있기 때문이다.
다음 강의는 Markov Decision Process를 다루는 것으로 보인다. 이번 글에서 Markov State와 fully observable environment를 이야기했으니, 다음 글에서는 MDP를 조금 더 수학적으로 정리하게 될 것 같다.
이미지 출처
- Cover: Atari 5200 console and controller by Evan-Amos, public domain
- Diagram: Agent-environment diagram by MartinThoma, CC0 1.0