[2025 04 18] 비연속 공간에서의 DQN Policy Gradient 공부 - Whitmem
[2025 04 18] 비연속 공간에서의 DQN Policy Gradient 공부
AI Development Study
2025-04-18 23:34 게시 2f77cdd8753c55068ef1

0
0
33
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
이전 게시글에서 연속 공간에서의 DQN Policy Gradient 방법에 대해서 알아보았다. 이 방법의 특징은 Normal 의 Mean 및 표준 편차를 학습하는 것이 주요 목표였다. 보상 점수에 따라 원하는 Mean, STD 가 유도 되도록 학습하는 방법이다. 이러한 작업을 위해서 Normal 인스턴스의 log_prob 메서드를 사용해 미분 가능한 형태로 역전파를 진행하였다.
한번 비 연속적인 Action 기반의 DQN 에서도 Policy Gradient 을 사용할 수 있는 걸 확인했는데, (정확히는 GPT 를 통해 공부하는지라 틀린 내용이 있을 수 있다. 이 부분은 삽질후에 다시 정리해서 게시하고자 한다.) 그렇게 어렵지는 아니하다.
쉽게 정리하자면,
비연속적인 액션 형태로 Output 이 존재하는 경우, 선택된 Output State 에 대해서 직접 로스 함수를 구성하여 Policy Gradient 대로 미분해주면 되는 것이다.
원래는 Q Learning 기법에서는, 다음 Q Max 와 합하여 대상 Output 이 유도되도록 하고, MSE 등의 로스 함수를 사용했다면, Policy Gradient 방법에서는 확률이 제일 좋은 부분의 텐서를 꺼내, 직접 식을 만들어 해당 식으로 경사 하강을 수행한다.
경사식은 Policy Gradient 식과 동일하다.
loss = -norm.log_prob(v) * reward
1. 먼저 출력된 Action은 softmax 이므로 사실상 확률 분포를 의미하는 것과 같다. 이 중에서 샘플을 구성해서 한 개 샘플을 뽑는다.
샘플을 뽑기 위해서 Torch 의 Categorical을 사용한다. Categorical을 사용하면 Net 에 나온 Action의 확률 분포를 반영하여 랜덤 뽑기를 진행할 수 있다. 인덱스 정보가 출력된다.
c = torch.distributions.Categorical(Net 결과)
2.상기 Categorical 인스턴스에 대해서 sample을 뽑는다.
idx = c.sample()
3.해당 idx 에 대해서 보상 점수를 매긴다.
4. 해당 IDX 에 대해서 c.log_prob() 를 사용한다. 이 인자에 인덱스를 넣어주면, 해당 확률 분포 인덱스의 확률 정보를 계산해준다. 이 계산 과정은 역시 텐서의 미분 정보와 연결되어 있기 때문에 로스 함수로 사용할 수 있게 된다. 따라서 policy gradient 방법대로 -를 붙이고 보상 점수를 곱하면 된다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.