1.1 What is Reinforcement Learning
강화학습이라는 이름만 봐서는 무엇인가를 강화하는 인공지능인 것 같은데 정확히 무엇을 말하는지 모르는 분들이 계실 겁니다.
https://ko.wikipedia.org/wiki/%EA%B0%95%ED%99%94_%ED%95%99%EC%8A%B5
위키피디아에서 강화 학습을 다음과 같이 설명하고 있습니다.
강화 학습(Reinforcement learning)은 기계학습이 다루는 문제 중에서 다음과 같이 기술 되는 것을 다룬다. 어떤 환경을 탐색하는 에이전트가 현재의 상태를 인식하여 어떤 행동을 취한다. 그러면 그 에이전트는 환경으로부터 포상을 얻게 된다. 포상은 양수와 음수 둘 다 가능하다. 강화 학습의 알고리즘은 그 에이전트가 앞으로 누적될 포상을 최대화하는 일련의 행동으로 정의되는 정책을 찾는 방법이다.
학습이라는 것에 대해 생각할 때 우리가 제일 처음 생각해낼 수 있는 것은 환경과의 상호작용을 통한 학습입니다. 그러한 개념은 거의 모든 인공지능의 이론의 기본 바탕이 되어있습니다. 그러한 학습을 computational하게 접근하는 것을 machine learning이라고 합니다.
강화학습은 machine learning의 범주 안에 있는 학습 방법 중의 하나입니다. 그 방법 중에서 아이가 걷는 것을 배우는 것처럼 어떻게 행동할 줄 모르지만, 환경과 상호작용하면서 걷는 법을 알아가는 것과 같은 학습 방법을 강화학습이라고 합니다. 제가 공부하면서도 느낀 것은 강화학습으로 학습하는 방법은 사람이 평소에 어떤 것을 배워나가고 일상 속에서 행동하는 방법과 상당히 유사하다는 것입니다.
사람이 처음 자전거를 배울 때를 생각해봅시다. 어릴 때 부모님이 자전거를 가르쳐주실 때
"이 자전거는 ~한 시스템이고 각 부분은 ~한 dynamics를 가지고 있어서 만약 10도 정도 기울었을 때는 핸들을 반대로 ~한 각속도로 틀어줘야 한다. 근데 너의 몸무게가 얼마나 되지?"
이렇게 가르쳐주시지 않았을 겁니다. 아마도 아무것도 모르고 자전거에 올라서 타보면서 어떻게 자전거를 타는 지 배우는데 이렇게 하면 넘어지고 이렇게 하면 똑바로 간다는 것을 학습했을 것입니다.
dynamics를 모르고 학습하는 것이기 때문에 다음 영상과 같이 단순히 핸들 방향만 바꾼 건데 전혀 자전거를 탈 수 없게 됩니다.
https://youtu.be/EqXL7xC-4Y4
강화학습도 이와 마찬가지로 agent가 아무것도 모르고 환경 속으로 들어가서 경험을 통해 학습하는 것입니다. 그냥 간단히 생각하기에 "컴퓨터니까 다 계산해서 게임을 하거나 로봇을 움직이거나 하면 안 돼?"라고 생각할 수도 있겠지만 그렇지 않습니다.
경우의 수가 적은 게임의 경우에는 모든 것을 계산할 수 있겠지만, 바둑 같은 경우나 혹은 실재의 세상에서 모든 것을 계산하는 것은 불가능한 일입니다. 하지만 모든 사람은 프로바둑 기사가 될 수는 없어도 바둑을 두다 보면 어느정도는 바둑을 둘 수 있게 됩니다. 인공지능이 사람의 그러한 학습방법을 모티브 삼아서 학습하는 것입니다.
Sutton교수님의 책에서 다음과 같은 문장이 있습니다.
Reinforcement learning is defined not by characterizing learning methods, but by characterizing a learning problem.
특이하게도 강화학습은 학습하는 "방식"으로 정의되는 것이 아니고 강화학습 "문제"인가로 정의되어 집니다. 그렇다면 어떤 문제가 강화학습 문제일까요?
강화학습의 정의에 대해서 살펴보기 전에 강화학습을 포함하는 더 넓은 분야인machine learning의 범주에 대해서 간단히 살펴볼 필요가 있습니다. machine learning은 크게 세 가지로 나눠질 수 있습니다.
- Supervised Learning
- Unsupervised Learning
- Reinforcement Learning
- Supervised Learning은 지도학습으로서 "정답"을 알 수 있어서 바로바로 피드백을 받으면서 학습하는 것을 말합니다.
- Unsupervised Learning은 비지도 학습으로서 정답이 없는 "분류"와 같은 문제를 푸는 것을 말합니다.
- Reinforcement Learning은 강화학습으로서 정답은 모르지만, 자신이 한 행동에 대한 "보상"을 알 수 있어서 그로부터 학습하는 것을 말합니다. 뒤에서 말하겠지만, 강화학습은 MDP로 표현되어지는 문제를 푸는 것을 말합니다.
강화학습 문제의 예는 다음과 같습니다.
- Fly stunt manoeuvres in a helicopter
- Defeat the world champion at Backgammon
- Manage an investment portfolio
- Control a power station
- Make a humanoid robot walk
- Play many different Atari games better than humans
헬리콥터를 멋지게 날게 할 수도 있고 특정 게임의 세계 챔피언을 이길수도 있습니다(체스, Backgammon, 바둑!). 그뿐만 아니라 로봇이 걷게 할 수도 있고 사업에서도 매니지먼트를 할 수도 있습니다. 아직은 발전해야 할 것이 참 많지만, 가능성은 무궁무진한 흥미로운 분야인 것 같습니다.
이러한 강화학습의 가장 중요한 두 가지 특징은 아래와 같습니다.
1. Trial and Error
2. Delayed Reward
첫 번째는 환경과의 상호작용으로 학습하는 것과 깊은 관련이 있습니다. Trial and Error, 즉, 해보지 않고 예측하고 움직이는 것이 아니고 해보면서 자신을 조정해나가는 것입니다.
아래와 같이 좋은 행동을 했을 경우에 좋은 반응이 환경으로부터 오게 됩니다. 이 반응을 "Reward"라고 하는데 이것에 관해서는 Chapter 2에서 다루도록 하겠습니다. 사람이 그러하듯 이 인공지능 또한 상을 많이 받기위해 노력할 것입니다. "어떻게 상을 더 많이 받을 것이냐?"는 강화학습의 핵심 쟁점중의 하나입니다.
두 번째는 강화학습이 다루는 문제에 "시간"이라는 개념이 포함되어 있다는 것과 관련이 있습니다. 강화학습은 시간의 순서가 있는 문제를 풀기 때문에 지금 한 행동으로 인한 환경의 반응이 늦어질 수가 있는데(혹은 다른 행동과 합해져서 더 좋은 환경의 반응을 받아낼 수도 있습니다), 이럴 경우에 환경이 반응할 때까지 여러 가지 다른 행동들을 시간의 순서대로 했기 때문에 어떤 행동이 좋은 행동이었는지 판단하기 어려운 점이 있습니다. 이 점은 강화학습의 중요한 문제로서 계속 머리속에 넣어둘 필요가 있습니다.
다시 위의 위키피디아 강화학습의 정의로 돌아가 보겠습니다.
강화 학습(Reinforcement Learning)은 기계학습이 다루는 문제 중에서 다음과 같이 기술 되는 것을 다룬다. 어떤 환경을 탐색하는 에이전트가 현재의 상태를 인식하여 어떤 행동을 취한다. 그러면 그 에이전트는 환경으로부터 포상을 얻게 된다. 포상은 양수와 음수 둘 다 가능하다. 강화 학습의 알고리즘은 그 에이전트가 앞으로 누적될 포상을 최대화 하는 일련의 행동으로 정의되는 정책을 찾는 방법이다.
에이전트(Agent), 상태(State), 행동(Action), 포상(Reward), 정책(Policy) 이러한 단어가 윗글에서 나오는데 강화학습 문제를 정의하고 풀어나가는데 필수적인 이 개념들은 다음 글에서 다루도록 하겠습니다.