강화학습의 문제중 하나는 reward를 사람이 정해주어야 한다는 것입니다. UC Berkeley의 CS285 15번째 수업을 살펴보면 사람을 모방하기 위한 Imitation learning을 개량한 IRL을 소개하는데요 원래 스칼라 값이 었던 reward 함수를 확률적으로 바꾸고 같이 훈련시키면 사람이 가지고 있는 "모방" 능력을 구현 해볼 수 있습니다.
인간 모방 알고리즘의 시초
초기의 imitation learning은 사람처럼 행동하는 agent를 구현하고 싶었나 봅니다.
지도학습 방식을 이용하여 인간의 행동을 모방하려 했었는데요 결과는 처참하였습니다.
초기의 imitation learning은 reward가 최대가 되는 policy를 선택해야했고 거기에 맞는 action을 채택하여야 했기 때문에 비슷한 상황에서 늘 같은 행동을 취할 수 밖에 없는 단점이 존재했기 때문입니다.
예를들어, 시시각각 변하는 도로위에서 비슷한 장면이 나오면 imitation learning의 경우 항상 reward 만 최선이 나오는 행동을 취하기 때문에 항상 같은 action을 취하는데 일부의 경우 사고가 발생하여 치명적이었습니다.
이런 문제를 보완하기 위해 사람의 모방능력을 살펴보게 됩니다.
살펴보니 인간은 행동 그 자체를 모방하기 보다 '의도'를 모방한다고 하는데 여기서 정해진 action을 취하는 것이아니라 여러가지 행동을 취할 수 있는 창조의 영역에 도달할 수 있습니다.

농구에서 2점슛을 쏘는 상황을 상상하면 2점을 획득하는 action은 무수히 많습니다. 초기 imitation learning의 경우 이전에 사용자가 실행한 reward가 가장 높았던 2점에 대한 행동만을 따라하나 사람의 경우 덩크슛을 포함해 2점을 획득할 수 있는 여러가지 방법을 시도할 수 있습니다.
선형함수로 IRL을 구현하기

CS285는 친절하게도 학생들이 이해하기 쉬운 선형함수를 보여주며 수업을 진행합니다.
왼쪽은 일반적인 RL로써 reward 함수를 사람이 정하고 state에 적절한 action이 취해지도록 policy 함수를 학습하는 형태이고
오른쪽은 reward 함수에 크사이라는 파라미터 값을 곱해주어 policy 함수가 선택한 action이 같더라도
상황에 따라 reward 함수가 변하기 때문에 '의도'를 포함하여 policy를 학습할 수 있게 됩니다.
신경망으로 IRL을 구현하기

선형적으로 표현하면 reward에 영향을주는 파라미터인 크사이가 행렬의 형태로 붙을뿐 기존의 RL 함수와 별 차이는 없습니다.
하지만, 신경망에서 구현했을때는 문제가 발생하게 되는데 신경망이 학습하기 위해서는 역전파(backpropagation)를 통해 파라미터 값을 변경할 수 있어야 했습니다. 기존의 Policy 함수만 미분이 가능한 형태에서 두 가지 함수를 동시에 미분 가능한 형태로 수학식을 고쳐야할 필요가 생겼습니다.
1. 기존 RL과 같이 policy 함수를 평가
2. reward 함수를 평가
policy 함수는 기존 RL과 같이 엔트로피를 이용해 손실함수를 계산한다고 하나 action의 경우에는 어떤 것이 optimal 한지 평가할 수 있는 방법이 추가로 필요하게 되는데요 전문가의 행동을 시범삼아 action과 비교하기 위해 optimal 집합을 생성합니다. 여기까지 진행하면 IRL 신경망이 이제 미분만 가능하다면 훈련될 수 있는 기틀은 모두 잡히게 됩니다.

MaxEnt IRL 소개

MaxEnt 알고리즘은 수학적 유도를 통해 IRL에 소프트맥스와 크로스엔트로피를 적용하여 신경망이 훈련가능하게 해주었는데요
자세한 수식은 다루기에 양이 많기 때문에 넘어가도록 하겠습니다.
마지막 화살표 부분은 일반적인 강화학습의 policy만 고려하는 것이아닌 optimal 집합의 "의도"또한 파악하여 action을 취할 수 있다는 것을 의미 합니다.

CS285에서는 MaxEnt를 이용해 더 이상 멍청한 원숭이처럼 agent가 행동하지 않고 의도를 모방하여 action을 취할 수 있다고 표현합니다.
하지만, 이것으로 모방이 가능해졌다면 자율주행차는 지금 도로위에 있어야 겠지요? MaxEnt는 제대로 동작하지 않게됩니다.
다음 시간에는 MaxEnt가 왜 제대로 동작하지 않는지 살펴보고 조금 더 보완된 알고리즘을 소개하도록 하겠습니다. 다음 편으로 가기