본문 바로가기
Deep Learning/Hands On Machine Learning

신용할당 문제(Credit Assignment Problem)

by 대소기 2022. 1. 8.

* 만약 각 step에서 agent가 취해야 될 가장 적절한 action을 알고 있다면 이 action을 target 확률로 하여 추정된 확률과 target 확률 사이의 crossentropy를 계산하면 될 것이다. 하지만 강화학습에서는 가장 적절한 action같은 건 고려하지 않는다. 다만, reward를 통해서만 agent가 action을 결정할 뿐이다.

* 하지만 이 agent는 reward를 받았을 때 어떤 action 때문인지 알 수가 없다. 이를 credit assignment problem이라고 한다. 예를 들어 cartpole환경에서 100 step을 움직인 후 막대가 떨어졌다고 해보자. 100 step까지는 reward가 계속적으로 주어졌을 것이다. 하지만, 어떤 action이 옳았는지, 어떤 action이 옳지 않았는지 판단할 수 있는 지표가 존재하지 않는다. 각 action에 대한 평가 지표가 필요하다.

해결 방법

* 할인계수(Discount Factor) $\gamma$ 적용: 각 action을 평가할 때 해당 action 이후의 action들에 discount factor를 적용해 모든 보상의 합을 계산하여 평가 지표로 사용하는 것을 뜻한다. 이 보상의 합을 return이라고 한다. 예를 들어 위 그림의 예에서 로봇이 오른쪽으로 3번 움직이고 보상을 10, 0 -50 만큼 받았다고 생각해보자. 첫 번째 step의 return은 $10* \gamma^0 + 0 * \gamma^1 + -50 * \gamma^2$ 이다. 만약 $\gamma$가 0.8이라면, 첫 번째 행동의 return은 -22이다.

* 이 $\gamma$ 이 1에 가까울 수록 미래의 보상이 원래 보상만큼 return에 반영되기 때문에 미래의 보상이 현재의 보상만큼 중요하게 고려된다고 할 수 있다. 반면 0에 가까우면 미래 보상은 현재 보상에 비해 훨씬 적은 가치를 띤다고 할 수 있다.

* 보통 $\gamma$ 값은 0.9~0.99 사이로 설정한다.

* 이러한 평가방법대로 평가를 하다보면 좋은 행동 뒤에 나쁜 행동이 몇 번 올 경우 좋은 행동의 return에 뒤에 이어지는 나쁜 행동들의 reward가 반영되기 때문에 좋은 행동도 나쁜 행동으로 평가될 가능성이 있다. 하지만, 반복적으로 시행하다보면 좋은 행동이 평균적으로 나쁜 행동보다 좋은 평가를 받게 될 것이다. 결국 모든 가능한 action 마다 평균적인 이익이 계산될텐데 이를 Action Advantage라고 부른다. Action Advantage를 위해서는 모든 action에 대한 return을 정규화((x - mean) / std) 해야 할 것이다. 표준화를 거친 값들을 통해 추정한 Action Advantage는 음수일 경우 나쁜 행동, 양수일 경우 좋은 행동으로 가정할 수 있다.

'Deep Learning > Hands On Machine Learning' 카테고리의 다른 글

Markov Decision, State Value Function  (0) 2022.01.08
PG(Policy Gradient) Algorithm  (0) 2022.01.08
강화학습의 신경망 정책  (0) 2022.01.08
OpenAI gym  (0) 2022.01.08
강화학습 기본  (0) 2022.01.08