[강화학습] Q-Learning 이해하기
Introduction 🙌
AlphaGo의 등장 이래 강화학습에 대한 관심이 기하급수적으로 증가했고, 2023년 현재 chatGPT의 등장으로 다양한 산업 분야 전반에서 그 영향력이 어마무시해지고 있다.
Dota라는 게임의 프로그래머를 강화학습 기반 로봇이 이긴 사례 또한 있었다.
상기 이미지에서, 18분 정도 실패를 거듭하며 스스로 강화학습한 로봇이 어느 골반을 꺾어야 전방으로 나아갈 수 있는지 제대로 학습한 모습이다.
하여 강화학습의 응용 분야는 무궁무진하며, 필자의 관심 분야인 자율주행 연구에도 많이 사용된다.
- 테슬라는 아직
모방 학습(imitation learning)
기반으로 자율주행 기술을 연구하지만, 장차 강화학습으로 전환하려는 움직임이다.
Deep Learning vs Reinforcement Learning
Deep learning과 강화학습을 뿌리부터 다르다.
Deep learning은 뉴럴 네트워크라는 신경망을 활용해서 주어진 downstream task를 스스로 학습하여 각 노드(특징)마다 최적의 가중치를 발견하는 과정이다.
강화학습은 뉴럴 네트워크 신경망을 구현하지 않고, 보통 model-free
하게 각 stage별마다 최적의 선택을 하면서 학습하는 greedy algorithm이다.
Model-free
: 주어진 Environment를 모르는 상태.
그렇다면 RL는 과연 무엇이고, 어떠한 알고리즘들로 greedy 학습을 수행하는 것인지 살펴보자.
Reinforcement Learning이란
강화학습의 목표는 환경(environment)과 상호작용하는 임의의 에이전트(agent)를 학습시키는 것이다.
일반적으로 강화학습은 stage, reward, action이라는 세 가지 구성 요소를 가지고 학습을 진행한다.
에이전트는 환경 속에서 상태(state)를 인식하여 행동(action)하며 학습해 나가며, agent가 취한 행동의 응답으로 환경은 양수 혹은 음수 또는 0을 보상(Reward)으로 갖는다.
에이전트의 목표는 초기 상태부터 종료 상태까지 받을 수 있는 보상을 최대화하는 것으로, agent가 좋은 행동을 했을 때는 큰 보상을 주어 그 행동을 강화하고 그렇지 않은 행동을 했을 때는 작은 보상 혹은 음의 보상을 준다.
Q-Learning ✨
Q러닝은 강화학습 기법 가운데 하나로, 알파고 이전부터 존재했던 화석같은 알고리즘입니다.
[모두를 위한 강화학습 - 김성훈]
초기값은 0으로 상정하여, random하게 action을 취한다 (= 초기 상태의 액션들은 동일한 확률값들을 갖는다).
Q러닝 이해를 위해 Frozen Lake라는 환경(environment)를 하나 가정하려 한다.
Frozen lake 문제는 빙판 위의 에이전트가 시작 지점에서 출발하여 목적지까지 최적의 경로로 도착해야 하는 문제이다.
빙판 곳곳에는 구멍(hole)이 있어 구멍을 피해 목적지에 도착해야 한다.
Agent는 전체 판을 볼 수 없고 현재 상태만 알 수 있으며, 행동을 여러 번 반복하다가 목적지(G)에 도착하든가 구멍에 빠져서 게임이 끝나서야 에이전트는 행동이 잘한 건지 알 수 있다.
학습을 반복할 때마다 각 episode(epoch)에서 남겨놓은 보상값을 참조하여 더 완벽한 형태로 학습을 치루게 된다.
가령, 장애물(구멍)에 빠져 목적지에 도달하지 못하고 episode가 종료되는 경우, 해당 action에 대해 보상값을 낮게주어 다음 episode에서 같은 실수를 면할 수 있을 것이다.
혹은, 목적지에 도달한 경우 직전 state(\(s_a\))의 해당 action에게 보상값 1을 부여하고, 다음 episode에서 \(s_a\)에게 도달하는 또 다른 state에서의 행동은 \(s_a\) 상태가 가진 최대 보상값을 넣는다.
INTRO에서 18분 자가 강화학습을 통해 전방 걷기를 성실히 수행한 로봇의 예가 이제는 직관적으로 이해가 될 것이다.
Greedy Action
특정 상태에서 여러 행동의 선택지가 있을터인데, 이때 발생하는 모든 행동 경우의 수마다의 보상 정도가 상이할 것이다.
각 상태마다 그러한 보상값을 최대로 만드는 행동을 선택하면서 학습을 진행하는 방식을 greedy action/algorithm이라 지칭한다.
Exploitation vs. Exploration
상기 이미지처럼 보상값 업데이트를 마치고 얻어낸 정보에 기반한(Exploitation) 경로는 최적이 아님을 직관적으로 알 수 있다.
- 시작 ~ 맛집 직선 코스가 최적
하여 강화학습에서는 \(\epsilon-greedy\)이라는 개념을 도입하여, 각 상태에서 어느 정도 확률로 random하게 action을 취하는 탐험(Exploration) 행위를 한다.
- \(\epsilon\): (0, 1); 탐험 정도 indicator로써, episode 진행마다 값이 0으로 수렴한다.
- 이는 Episode가 진행될수록 점점 탐험을 안 하게 됨을 의미한다 (= 학습 종료 및 수렴).
상기 그림에서 맛집2는 맛집1보다 더 맛있기로 유명한 집이라 보상값이 10으로 더 크지만, \(\epsilon-greedy\) 알고리즘이 없다면, 맛집2는 맛집1보다 거리상 더 멀리있기에 확률상 탐험 행위 없이는 도달하지 못할지도 모른다.
Exploration 비율이 크다면, 목적지에 수렴하지 않을 수 있다 (마치 딥러닝에서 학습률이 큰 것과 유사).
Exploitation 비율이 크다면, 최적의 경로를 찾지 못할 수도 있다.
하여 보통 Exploitation : Exploration = 7 : 3 비율로 맞춰서 학습한다.
상기 이미지처럼 초기 상태에서 random하게 값이 튀어 다른 path로 경로 학습을 진행한 결과이다.
크게 두 가지 path가 나온 모습이며, 탐험 알고리즘으로써 최적의 path 탐색 가능성을 높일 수 있다.
하지만, 여기서 문제는 두 가지 path모두 목적지에 도달하는데 어떤 path가 최적인지 기계는 알지 못한다.
하여 나온 개념이 discount factor
이다.
Discount Factor (\(\gamma\))
Discount Factor
란 현재 얻는 보상이 미래에 얻는 보상보다 얼마나 더 중요한지를 의미하는 값으로, 좀 더 효율적인 path를 구별해준다.
이전 episode에서 마지막 상태가 가진 최대 Reward를 그대로 가지고 와서 마지막 상태의 이전 상태의 특정 행동에 대한 보상값으로 업데이트할 때, 그냥 \(\gamma\)라는 discount factor
를 곱하여 업데이트 한다.
상기 이미지에서, \(\gamma\)가 누적되어 곱해지는 모습을 볼 수 있다.
빨간색(최적경로)는 초기 상태의 행동들 중에서 더 큰 감마 보상값을 가진 방향, 즉 최적의 경로로 이동하게 된다.
이는 탐험과는 별개이며, 탐험은 아에 다른 새로운 경우의 수를 발견하기 위함에 초점이 맞춰져 있고,
discount factor
은 주어진 정보내에서 가장 효율적인 aciton이 무엇인지를 결정해준다.
Q-Value
\(Q(): S \times A \rightarrow R\)
Q-Value는 어떤 시간 \(t\)에서 전략 \(\pi\)를 따라 행동 \(a\)를 할 때, 각 전략별 목적지까지의 미래의 보상들의 총합의 기대값이다.
- 특정 상태에서의 보상값과는 다른 개념이다.
전략(\(\pi\)): 주어진 환경에서의 각각의 경우의 수, 상기 예제에서는 가능한 모든 경로 중 단 하나의 경로가 하나의 전략이다.
상기 수식에서, agent는 현재 \(s\)라는 상태에서 \(a\)라는 액션을 취하여, \(s'\) 상태로 이동한다.
\(a\)라는 액션에 대해 agent는 \(r\) 보상을 얻는다.
- \(t\): 특정 시점.
- \(\gamma\):
disconut factor
.
제자리에서 위-아래 반복이동하여 보상값을 누적하는 무한루프 현상을 타파하고자, Discount factor
라는 개념을 도입하여 특정 Action을 취했을 때, Episode가 종료되기까지 reward의 총합의 예측값을 계산한다.
Q Function
Q Function은 상태-행동 가치 함수라는 명칭으로도 불리며, 상태(state)와 행동(action)을 주면 이런 상태에서 이런 행동을 하면 얼마큼의 보상을 받을 수 있는지 알려줍니다.
Agent는 그러한 보상값을 최대로 하는 어떤 정책(policy)를 취하는 행동을 하면 된다 (하기 수식 참조).
- \(\pi\): 정책.
- \(\pi^*\): 최적의 정책; Q를 최대롤 하는 action을 취하는 정책이 최적이다.
하지만, 실제로 Q-Value 업데이트를 할 때는 하기 수식처럼 더 부드럽게 업데이트한다.
- \(\gamma\) 뿐만 아니라, \(\alpha\) 개념도 도입한다.
- \(R_t\): 현재 상태 보상값, destination 다음 state는 없으므로 destination 직전 state에서의 행동 Q-Value값은 자동으로 1이된다.
- \(\alpha\): (0, 1) 사이 값으로, Q-Value 업데이트 시 기존 state의 특정 action Q-Value값을 얼마나 유지할지 결정한다.
알고리즘이 시작되기 전에 Q 함수는 고정된 임의의 값을 갖고, 매 time-step(\(t\))마다 Agent는 행동\(a\)를 선택하게 되고, 보상\(r\)를 받으며 새로운 상태 \(s_{t+1}\)로 전이하면서 Q 값을 갱신한다.
이 알고리즘의 핵심은 이전의 값과 새로운 정보의 가중합(weighted sum)을 이용하는 Value Iteration Update 기법이다.
댓글남기기