강화학습의 구성이라고 할 수 있는 네 가지이다.
이 네 가지를 좀 더 효율적으로 진행하고자
지난 시간에는 Imitation Learning을 배웠었고
이번에는 Policy Search 를 배운다.
해석하자면 최적의 행동지침을 찾기 위한 방법이라는 것일텐데
강의 제목이 Policy Gradient인 것으로 보아서는
Gradient Descent 방식을 사용하는 것 같다.
CS231n도 그게 가장 핵심이었는데
이번 강좌도 마찬가지인가보다.
모델이 주어지지 않은 상태에서 행동지침을
설정하는 방법을(Model Free Policy Control) 배울 때
행동지침은 value function을 통해 학습되었다. (Q = r + $\gamma$* max Q' 등등)
이번 강의에서는 직접 행동지침을 파라미터화 하는 방식을 배운다.
왜 굳이 행동지침을 파라미터로 표현해야 할까?
학습 환경에서 보상함수를 쉽게 파악하지 못하는 문제를
Imitation Learning을 통해 해결했듯이
행동지침을 파라미터로 표현하는 것이 더 쉬울 때가 있다고 한다.
구체적인 예시가 좀 필요하다.
위와 같은 상황을 생각해보면, 중간에 끼인 회색 상태에서
어느 한쪽으로만 가는 행동지침을 가지고 있을 때는
중간의 보석함으로 들어가는 것이 어려울 테다.
오른쪽 회색상태라면 모를까, 왼쪽 회색상태에 빠지게 된다면
좌우를 반복하는 상태에 고착되기 때문이다.
그래서 확률로 표현되는 행동지침을 가지고 있는게 낫다.
기존에 배웠던 Value Based Policy 도 epsilon의 확률로 랜덤한 행동을 취했지만
어디까지나 적은 확률로 시행되는 것이었고
궁극적 목표는 최적의 행동을 구하는 것이었기에 확률로 표현된다고 말하기는 어렵다.
Policy Gradient의 원리는 CNN과 동일하다.
행동지침을 표현하는 $\theta$로 인한 Value Function을 V($\theta$)로 두고
$\theta$를 $\alpha * \nabla_\theta V(\theta)$에 따라 업데이트 해주는 것이다.
$\nabla_\theta V(\theta)$를 Policy Gradient라고 부른다.
여기서 Policy Gradient는 고등수학에서 배우듯이 미분을 적용하는 게 아니라
Finite Differences Method를 사용해서 좀 더 쉽게 구할 수 있다.
사실은 근사값에 지나지 않지만, 이 정도면 충분한가보다.
Policy Gradient를 사용해서 강아지 로봇 Aibo를 제어했고,
축구 게임에 활용한 결과인데 나름 잘 움직이면서도 왠지 짠하다.
2008년 경기라는 것을 감안하면 당시로서는 정말 최첨단이었겠구나 싶으면서도
저렇게 많은 사람들이 모여서 구경할만한 거리인가 싶은 것이다.
구체적인 알고리즘은 위와 같다.
과거 경험들이 $\tau$로 제시되고, 경험에서 얻은 보상의 총합을 $R(\tau)$로 둔다.
그리고 행동지침의 value를 $\Sigma P(\tau; \theta)*R(\tau)$로 설정한 뒤에
해당 값을 최대로 만들어주는 theta를 찾는다면
그게 바로 최적의 Policy Parameter라는 것이다.
언뜻 봤을 때 Imitation Learning과 굉장히 유사해보였는데,
P가 Policy가 아니라 Probability였다.
하긴 그럴 것이 보상에다가 행동지침을 곱해줄 것이 무엇인가.
보상을 받을 확률을 곱해줘야 보상의 기댓값을 구할 수 있다.
어쨌든 Policy Gradient를 구해보면 위와 같이 log가 튀어나오는 것을 볼 수 있다.
저런 형태의 gradient를 Likelihood Ratio라고 하는 모양인데,
아직까지는 왜 굳이 저렇게 만들어주는지 이해할 수 없다.
어차피 $P(\tau; \theta)$ 필요한 것이니, 굳이 계산만 복잡해진 느낌이다.
바로 이 때, 굳이 굳이 저렇게 만들어준 이유가 나온다.
보상값에 일일이 확률을 곱해주면서 기댓값을 만드는 게 아니라,
그냥 보상을 몽땅 더한 뒤에 그 개수로 나눠줌으로써 기댓값을 구한 것이다.
1이 네 개, 2가 세 개, 3이 세 개 있는 분포표에서의 기댓값이
1*0.4 + 2*0.3 + 3*0.3 = 1.9와
(1*4 + 2*3 + 3*3)/10 = 1.9가 같은 것처럼 생각하면 되는 모양이다.
그럼 Policy Gradient가 보상 값에 확률의 로그를 곱한 값의 총 합이라는 뜻은 또 무엇인가?
강의에서는 "높은 보상을 주는 상태(State)로 이동할 확률을 높여주는 방향으로
행동지침을 변경해나간다" 라고 허울 좋게 이야기하지만,
도대체 어떤 연유로 그렇게 이동할 수 있는 것인지 잘 이해되지 않는다.
좀 더 두고보면 이해되겠지...?
장황한 식의 전개 끝에 나온 알고리즘은 "REINFORCE"라고 해서,
에피소드 진행에 따라
$\theta = \theta + \alpha\nabla_\theta(s_t, a_t)G_t$ 로
파라미터 업데이트를 진행해주는 것이다.
저 방향($\nabla_\theta(s_t, a_t)G_t$)으로 업데이트 하는 까닭은
위에서 보았듯이 Value Function의 Gradient 방향이기 때문이다.
이제 파라미터로 표현해줄 policy의 class를 정해주면 되는데,
세 가지가 주로 쓰인다.
Softmax가 CNN에서도 많이 쓰이는 방식이니
강화학습에서도 주로 쓰일 것이라는 예감이 든다.
'트렌드 한눈에 보기 > 학계 트렌드' 카테고리의 다른 글
[전공] 자동차업계에서 따돌림 당하는 기계공학 학생들 (3) | 2020.12.20 |
---|---|
[CS234] Lecture 9: Policy Search II 정리 (0) | 2020.12.19 |
[CS234] Lecture 7: Imitation Learning 정리 (1) | 2020.12.17 |
[CS234] Lecture 6: CNNs and Deep Q Learning 정리 (0) | 2020.12.16 |
[CS234] Lecture 5: Value Function Approximation 정리 (0) | 2020.12.15 |