본문 바로가기

트렌드 한눈에 보기/학계 트렌드

[CS234] Lecture 11: Fast Reinforcement Learning 정리

이제 CS234 강좌의 마지막 단계를 배울 차례이다.

강화학습에 필요한 네 가지,

즉 Optimization, Delayed Conseqencies, Exploration and Generalization에 대해

어느 정도 짚고 넘어갔으니

네 단계들을 보다 효율적으로 수행할 수 있는 방안에 대해서 배우는 것이다.

 

Q-Learning을 배우면서 계산량을 줄여주려는 시도를 살펴봤었다.

Q-Learning은 복습하자면, 모델이 주어지지 않은 학습환경에서

최적의 행동지침을 만들어내는 과정이었다.

또한 TD Learning을 활용한 <SARSA> 방식에서

계산을 조금 간소화한 기법이었다. (이전 글 참조)

 

이와는 달리, 보다 적은 데이터로 학습을 진행해야 하는 경우가 있다.

의료 산업, 교육 산업 같은 경우에 특히나 

실제 사람을 대상으로 하는 데이터는 얻기가 쉽지 않다.

DQN같은 경우에는 아타리 게임을 학습하는 데

500만 개 이상의 데이터가 필요했으므로,

다른 종류의 알고리즘이 필요하다.

 

알고리즘의 효율성을 검토하기 위해서는 기준을 명확하게 세워줘야 한다.

단순히 모델이 표로 주어지는 경우(Tabular or Bandits)와, 

모델 없이 Value Function Approximation이 필요한 경우에 적용할 때는

다른 알고리즘이 사용될 수 있다.

 

또한 Framework라는 개념이 새로 도입된다.

기존에 프레임워크라고 하면, 

어떤 대상을 분석할 때 사용할 수 있는

툴 같은 종류라고 막연히 생각하고 있었다(BCG Matrix 등 경영분석기법).

강화학습에서 말하는 Framework는 어떻게 보면 그런 종류와 비슷한데,

알고리즘의 효율성을 평가할 수 있는 툴이라는 것이다.

워낙 분야가 다르다보니(경영학 vs 컴퓨터공학) 비슷한 뜻이라는 생각이 들지 않는다.

 

Approach는 말 그대로 다양한 알고리즘 기법이라고 보면 될 것 같다.

이번 강의에서 배우는 Setting, Framework, Approach는 아래와 같다. 

이것만 보면 용어가 더 헷갈린다.

뭐하자고 프레임워크의 이름을 "Regret"같은 것으로 잡아둔거지?

"아 이렇게 하면 더 효율적이었을텐데... 너무 안일했군" 하는 식으로 

효율성을 평가하는지도 모르겠다.

또한 Setting으로 Multi-armed Bandit을 배운다고 하는데,

Bandit은 강도, 산적같은 의미로 해석된다길래 도대체 무슨 뜻인가 싶었다.

알고보니 카지노의 슬롯 머신을 One armed Bandit이라고도 부른다고 한다.

"돈 뺏어가는 기계" 같은 의미인가보다.

 

그래서 Multi-armed Bandit은 슬롯머신 여러대가 있는 경우를 뜻한다.

한정된 수량의 팔로 슬롯머신을 돌리면서 최대의 보상을 받을 수 있는 방법을

강화학습을 통해 탐색할 수 있다는 의미이다.

각 슬롯머신이 가진 확률분포를 Exploration을 통해 확인하고,

가장 높은 보상 확률을 가진 슬롯머신에

올인해서 보상을 받아내는 것을 Exploitation이라고 할 수 있다.

그 두 개념을 적절히 섞어주는 게 강화학습의 역할인 것이다. 

 

프레임워크로서의 Regret의 개념은 위와 같다.

놀랍게도 앞서 생각했었던 방식("너무 안일했군...")과 유사하다.

다만 그간 배웠던 Advantage 함수 같은 것들과도 유사해서

좀 통일된 용어가 있었으면 하는 바람이다. 

 

Regret의 핵심내용은 결국, 최적의 행동을 했을 때의 보상 기댓값과

실제로 행동한 결과의 보상 기댓값의 차이라고 할 수 있다.

다만, 모델이 주어지지 않은 상태에서는 두 변수 모두 알 수 없기 때문에

잘 근사하는 방법이 필요할 것으로 보인다.

 

Regret의 평가는 Count와 Gap으로 구성된다.

Count는 행동을 취하는 횟수를 말하고,

Gap은 앞서 봤듯이 최적의 행동과 일반 행동의 보상 차이라고 할 수 있다.

그러므로 "좋은 알고리즘"이란, Gap 큰 행동은 Count를 적게 하고

Gap이 작은 행동은 Count를 크게 만드는 것을 보장할 수 있어야 한다.

 

Gap을 판단할 때, 구성하는 두 변수를 모두 모르는 상태이므로

잘 근사하는 방법이 필요하다고 했다.

최적의 행동만을 고집하는 Greedy 알고리즘을 사용하면

샘플링이 잘못되었을 경우, 더 안좋은 행동만을 고집하는

고집불통이 되어 버릴 수 있다.

그러므로 예전에 배웠던 e-greedy 알고리즘 (e의 확률로 랜덤액션)을

사용하게 되는 것이다.

 

e-greedy 알고리즘을 사용하는 데도 여러 방식이 있다.

도대체가 간단한 것이 없구나 싶으면서도

막상 따지고 보면 '겨우 이거야?' 하는 마음이 들 때가 있다.

아무리 봐도, 학자들이 서로 업적을 남겨놓으려고

온갖 것들에 이런 저런 이름을 붙이면서 시스템이 복잡해진 것 같다.

 

Upper Confidence Bounds만 해도, 왜 이런 식으로 설명하는지 잘 모르겠다.

골자는 모든 행동들을 한 번씩 해보고,

가장 좋은 행동을 하는 동시에 

정말 좋은 행동인지 확실히 하기 위해

보상의 분포를 면밀히 검토해보자- 하는 것 같다.

예를 들면, 한 식당을 처음 갔을 때는 좋았지만

다음에 갔을 때는 나쁠 수 있기 때문에

그 식당을 가는 것이 가장 좋은 선택인지는 지속적으로 확인해줘야 한다는 것이다.

 

그런 알고리즘에 "Upper Confidence Bounds" 같은 이름을 붙여놓으면

아무도 무슨 의미인지 알아차리지 못할 것이다.

시인이나 소설가들은 제목붙이는 것에 큰 의미를 둘 텐데

과학자들은 이렇게 다른가- 싶기도 하다. 

 

강의에서는 판서가 엉망인지라 Upper Confidence Bound를 설명해주는

다른 슬라이드를 찾아야했다.

위 그림과 같이, UCB를 사용하게 될 경우 최적의 행동 A는

괄호 안의 식을 최대로 만들어주는 행동이 된다.

 

기존의 e-greedy는 단순히 "최적의 행동" vs "랜덤 행동"인데

마구잡이로 랜덤행동을 샘플링하는 것보다는 

현재 행동이 아니라 다른 행동들을 탐색하는 것이 더 의미있을 것이다.

 

그래서 $ c * \sqrt{ln(t) / N_t(a)} $ 항의 역할이 

보다 주목을 못받았던 행동들에 가중치를 주는 것이다.

그러므로 그동안 살펴보지 않았던 행동이

최적 행동 $A_t$로 선정될 수 있는 확률이 커진다.