머신러닝에서 지금까지 우리가 공부한 것은 지도학습과 비지도학습으로 나뉜다.
비지도학습은 데이터들을 유사한 것들끼리 나누는 정도였다면
지도학습은 주어진 데이터에서 타겟과의 관계를 파악하여 feature들과 mapping하여 모델링하는 방법이었다.
강화 학습은 어떤 에이전트가 미지의 환경에 들어갔을 때 어떠한 행동을 해야할지 결정하는 것이라 한다.
이세돌을 이긴 알파고는 이 강화 학습을 이용한 알고리즘을 활용하면서 최근에 매우 각광받는 주제이다.
제일 처음으로 Finite Markov Decision Process(finite MDP)에 대해 알아보겠다.
위 모형에서는 시간이 discrete하게 흘러간다는 가정하에 진행된다.
어떤 time t에 에이전트가 St라는 상황에 처해 있고, At라는 action을 취하게 되어 Environment가 영향을 받고 바뀌게 된다. 그에 따라 상황이 St+1로 바뀌게 되고 Rt+1의 리워드를 얻게 된다. 이때 리워드가 큰 쪽으로 학습을 하게 된다. 즉 일종의 motivation역할을 하는게 Reward이다.
에이전트는 누적되는 리워드를 최대화하는 것을 목표로 한다.
이 모델에서는 state, action, reward가 모두 유한하다.
과정이 진행되면서 위와 같은 시퀀스가 형성되게 된다
finite MDP는 다음과 같은 확률로 규정이 된다.
s에서 a를 취했을 때 s'으로 가면서 r의 리워드를 받을 확률을 의미한다.
어떠한 s,a에 대한 확률이 모두 알려져 있다면 finite MDP에 대한 모델을 완벽히 안다라고 말할 수 있다.
그 이유 중 하나는 Markov property를 만족하기 때문이다.
Markov property은 St와 Rt는 오직 St-1, At-1에만 의존하지, 그 이전의 상황에 대해서는 무관하다는 뜻으로 이전 확률만 알고 있다면 finite MDP를 구현할 수 있다는 뜻이다.
결국 강화학습은 어떤 상황에서 리워드를 최대화 하기 위해서 내가 무엇을 해야 하느냐를 학습하는 것이다.(상황과 액션을 매핑-리워드를 최대화하는 방향으로)
이 학습은 어떻게 하느냐?
-Trial-and-error search: 어떤 행동을 했을 때 어떤 리워드를 받을지는 직접 행동을 취해봐야 알 수 있다는 방법. 즉, 어떻게 해야 리워드가 최대가 될지 아는 방법은 직접 해보는 방법뿐이라는 것이다.
-Delayed reward: 이 방법은 Trial-and-error search와는 다르게 하나의 리워드 결과만 최대화하는 것을 알아내는 것이 아니라 미래의 리워드까지의 합을 최대화하는 방법이다. 즉, 리워드가 누적되어 최종 결과가 나오듯이(우승/패배) 한 리워드만 보는 것이 아닌 누적 리워드에 집중하는 것이다. 최종 결과가 나와야지만이 내가 그때 취했던 액션의 리워드가 큰 것인지 작은 것인지 정확하게 알 수 있다. (결과 전에는 짐작은 할 수 있지만 정확하게는 알 수 없음)
강화학습의 Elements
-Policy: 어떠한 상황에서 어떠한 액션을 취해야하는지 맵핑(확률적으로)
-Reward signal: 어떤 상황에서 어떠한 액션을 취했을 때 받을 리워드(defined)
-Value function:Policy를 학습하기 위한 function. 이상황에서 어떠한 행동을 취했을 때 계속 누적되는 리워드의 합
-Model: 모델이 있다면 내가 뭘하든지 환경을 추론할 수 있다.(필수적인 요소는 아님) 미지의 environment에서는 모델이 있을 수가 없음. 모델이 없을 떄는 trial-and-error방법으로 학습해야함.
가장 간단한 강화학습 예: Multi-Armed Bandits
슬롯 머신에 k개의 lever가 있는데 lever에 따라 돈이 나오는 액수가 다른 상황이 있다. 이때 어떤 lever를 당길 것인지 결정해야 한다. 즉 위에서 언급했던 trial-and-error learner를 실행하는 것이다. 이 상황은 k개의 lever 중 어떤 lever을 선택해야 하는지의 문제라서 sigle situation이라 한다.
어떠한 lever를 당길지 결정할 때는 각 action의 value를 계산해야 한다.
n번째로 어떠한 lever를 당길 때까지의 value는 다음과 같이 계산할 수 있다.
n번째 시행 이전의 n-1까지의 리워드들의 평균을 계산하는 것이다. 이것을 n번째의 action value라고 한다. 이 값이 커질수록 lever를 당기고 싶어지게 되는 것이다.
n번째 시행의 리워드가 주어졌을 때, n번 째 시행까지의 리워드 평균으로 위와 같은 식을 유도할 수 있다.
Qn+1은 Qn을 이용한 식으로 유도하였다.
즉, 레버를 당길떄나오는 리워드가 진짜 값(내가 가고자 하는 값)인데 이 진짜 값과 나의 측정값과의 차이를 측정값에 반영하는데 그 차이의 n분의 1만큼 반영을 한다.
위 알고리즘을 통해 전체 루프를 설명해보겠다.
처음에 action value와 trial 횟수는 모두 0으로 시작.
Q(a)가 최대인 action을 선택.(Q(a)가 최대인 lever를 선택)
하지만 처음에는 모두 0으로 똑같으니까 랜덤하게 아무 action을 선택한다.
이후 실제로 그 action의 reward를 관찰하고 Q(A)를 업데이트한다.
최적의 A를 선택할 때 입실론이 기입되어 있는데 이 입실론은 아주 작은 숫자를 의미하며 아주 작은 숫자만큼의 확률로 랜덤 action을 선택하고(탐색을 위해-더 좋은 action이 있다는 생각때문에) 1-입실론의 확률로 Q(a)가 가장 큰 action을 찾는 것이다. 즉 action은 determin하게 정해지는 것이 아니라 확률적으로 정해지는 것임을 알 수 있다.
'대학원 공부 > 기계학습의원리' 카테고리의 다른 글
[머신러닝 원리] 12-3. 강화 학습(Reinforcement Learning) (0) | 2022.12.13 |
---|---|
[머신러닝 원리] 12-2. 강화 학습(Reinforcement Learning) (0) | 2022.12.13 |
[머신러닝 원리] 10-1. Features (0) | 2022.11.23 |
[머신러닝 원리] 9-4. 확률적 모델(Probabilistic Models) (0) | 2022.11.17 |
[머신러닝 원리] 9-3. 확률적 모델(Probabilistic Models) (0) | 2022.11.17 |