off-policy 정책 경사
자 그러면은 우리가 지금까지 계속 정책 경사를 하고 있는데 다시 히스토리를 조금 읊어보면 정책 경사가 있고 그 다음에 a2c가 있고 그 다음에 ppo가 있고 이렇게 오고 있죠
정책 경사는 파이 정책을 학습을 하는 거다
근데 이왕 학습하는 김에 정책도 학습하고 가치도 학습을 해가지고 같이 학습한 걸 정책 학습하는데 좀 도움을 주면 좋지 않느냐 그게 actor critic 이라는 방법이구요 그 다음에 정책을 업데이트를 하는데 너무 많이 바꾸지 말고 조금 한 바꾸어 조금만 정책을 바꾸때 다음 정책으로 넘어갈 때 너무 많이 바꾸지 말고 한 플러스 마인에서 10% 범위 내에서만 좀 바꾸라 하는게 ppo 이런 식으로 발전을 해오게 됩니다
이건 전부 온폴리시 학습이에요 온폴리시 학습인데 슬슬 이상각도 하게 됩니다
어떻게 정책 경사에다가 오프 폴리시를 할 수 없을까 온폴리시라는 것은 내 정책으로 내 정책을 학습을 시키는 거고 오프 폴리시는 이제 남의 정책으로 내 정책을 학습을 시키는 건데요
Pendulum 환경
그래서 우리가 이제 이거를 해 볼 건데 그러면 이제 연속적인 걸 해 봐야 되는데 그 김나지음에 들어있는 것 중에 펜들럼 이라는 게 있어요
그래서 여기 모터가 여기 달려 있고 이 진자가 이렇게 흔들리는데 여기다가 적당한 토크를 걸어 주면은 얘가 딱 이렇게 바로 서게 됩니다
그래서 뭐 잘 토크를 주면 되겠죠
그래서 모터에 힘을 주면 되는데 이거는 얼마나 힘을 줄 거냐니까 연속적인 행동 공간이 되겠죠
그래서 dqn 으로는 안 돌아갑니다
안 돌아가고 ddpg 로는 되고 이렇게 된 거죠
그래서 한번 보여드리면 ddpg 김나지음 구글에서 이렇게 검색하시면 이제 여기 아 김나지음이 아니라 스테이블 베이스 라인에서 해야 되죠
구글 없던 시절 사람들은 공부를 어떻게 했나 몰라요
이렇게 편한 세상인데 검색하면 ddpg 나오는데 여기 밑에 보시면 액션이 박스인 경우에만 됩니다
그 외에는 다 안되요
그래서 다 안되고 관찰 공간은 뭐여도 상관 없습니다
관찰 공간은 다 상관없는데 액션은 무조건 박스 해야 된다
우리가 아까 했던 ppo 같은 경우는 다 되거든요
액션이 뭐여도 됩니다
딕트만 아니면 다 되는데 용도가 좀 제한적이죠
그래도 한번 해볼 수는 있다
import gymnasium as gym
env = gym.make("Pendulum-v1", render_mode="rgb_array")
DDPG
그래서 이제 ddpg 라는 방법이 나오게 되요
ddpg 는 정책 경사 방법에다가 dqn 을 섞은 겁니다
그래서 약간 혼종인데 dqn 의 아이디어랑 정책 경사의 아이디어를 합쳐 가지고 오프 폴리시로 학습을 할 수 있게 만든 방법이에요
그래서 근데 이 방법은 그 대신에 대가가 있는데 연속적인 행동 공간에서만 쓸 수 있습니다
그냥 모델이 그렇게 생겼어요
그래서 우리가 이제 dqn 은 이산적인 행동 공간을 할 수 있습니다
왜 그런지는 얘기 드렸죠
dqn 이 하는 방식은 q 함수를 학 습을 해서 행동마다 q 함수 값이 있어 가지고 q1 q2 q3 이렇게 나오면 이 중에서 q 가 제일 높은 게 뭐냐
q1이 제일 높네?
그럼 이거 해야겠다 이런 식으로 하는 게 dqn 이란 말이에요
dqn 은 연속적인 행동 공간에 적용이 안 됩니다
ddpg 는 반대로 연속적인 공간에만 쓸 수가 있어요
그래서 여러분이 어떤 문제 중에 아 이거는 그 이산적인 문제다 그러면 ddpg 를 쓰시면 안 되고 연속적인 문제다
그럼 dqn 을 쓰시면 안 됩니다
그래서 이제 dqn 하고 차이를 보면 공식을 제가 그냥 그대로 복사해서 논문에 있는 걸 그대로 복사해서 붙여 넣어 가지고 굉장히 정신사나운데 결국에는 이거죠
우리 다시 보면 이게 이제 기본적으로 우리가 이제 시간 착습에서 하는 건데 q러닝은 r 플러스 맥스 q 프레임 이렇게 한단 말이에요
할인도 지읍시다
r 플러스 맥스 q 프레임 이렇게 한단 말이에요
너는 그 보상을 받았는데 그 다음에 뭘 할 거냐에 있어서 나는 제일 좋은 행동을 할 거야
이렇게 하는데 이게 편향되어 있다고 얘기 들었죠 계속 얘기 드리지만 최대화 편향을 일으킵니다
이걸 최대 값으로 하니까 우리가 이 q 를 학습을 할 때 q 를 너무 키운단 말이에요
너무 이제 꿈이 너무 꿈이 큰 거죠
그래서 어 이거를 꿈을 좀 낮춰 주기 위해서 어떻게 하느냐 하면은 맥스 q 프라임을 하지 않고 우리가 이제 q 를 두 개로 나눠 가지고 아금 x q 를 해 가지고 일단 행동을 하나 고른 다음에 그 다음에 여기다 다시 넣어서 가치를 이제 산정을 하게 합니다
그럼 요 q 가 좀 과대 추정을 했다고 하더라도 똑같이 과대 추정하기는 쉽지 않으니까 좀 더 정상적인 숫자가 나올 가능성이 있겠죠