소개
OpenAI Gym의 인기 벤치마크인 Lunar Lander 환경은 요원이 지정된 착륙장에 우주선을 안전하게 착륙시키도록 요구합니다.이 환경은 연속적인 상태 및 동작 공간을 제공하므로 다양한 강화 학습 (RL) 알고리즘을 테스트하기에 적합합니다.이 블로그 게시물에서는 세 가지 고급 RL 알고리즘인 근위 정책 최적화 (PPO), 소프트 액터-크리틱 (SAC), 딥 Q-Network (DQN) 를 사용하여 달 착륙선 문제를 해결하는 방법을 살펴봅니다.
알고리즘에 대한 이해
근위 정책 최적화 (PPO)
PPO는 단순성과 성능 간의 균형을 유지하는 온-폴리시 알고리즘입니다.PPO가 학습하는 방법은 다음과 같습니다.
- 정책 최적화: PPO는 확률적 정책을 사용합니다. 즉, 단일 결정론적 행동이 아닌 행동에 대한 확률 분포를 출력합니다.정책은 대리 목적 함수를 사용하여 최적화됩니다.
- 클리핑 메커니즘: 교육을 불안정하게 만들 수 있는 대규모 업데이트를 방지하기 위해 PPO는 클리핑 메커니즘을 도입했습니다.새 정책과 기존 정책 간의 확률 비율을 삭제하여 업데이트 간에 정책이 너무 크게 변경되지 않도록 합니다.
- 이점 추정: PPO는 기대 수익률 (가치 함수) 과 실제 수익의 차이인 이점 추정에 의존합니다.이렇게 하면 알고리즘이 평균보다 나은 작업에 초점을 맞출 수 있습니다.
- 에포크 및 배칭: 알고리즘은 효율적이고 안정적인 학습을 보장하는 여러 에포크 및 미니 배치를 반복하여 정책을 업데이트합니다.
PPO의 스토캐스틱 정책
PPO의 확률적 정책은 행동에 대한 확률 분포를 출력합니다.이를 통해 에이전트는 같은 상태에서도 다양한 행동을 샘플링할 수 있어 탐색을 촉진하고 국소 최적치에 갇힐 가능성을 줄일 수 있습니다.스토캐스틱 정책은 일반적으로 연속 행동 공간에 대한 가우스 분포를 사용하여 모델링되며, 여기서 평균과 표준편차는 학습된 파라미터입니다.
확률적 정책을 사용하면 에이전트가 환경을 더 철저하게 탐색하도록 유도하여 결정론적 정책이 놓칠 수 있는 더 나은 전략을 발견할 수 있다는 이점이 있습니다.탐색과 착취의 절충은 RL에서 매우 중요하며, 확률적 정책은 이러한 절충의 균형을 맞출 수 있는 자연스러운 방법을 제공합니다.
PPO에서 탐사를 장려하는 엔트로피의 역할
강화 학습에서는 탐색과 활용의 균형을 맞추는 것이 매우 중요하며 PPO는 엔트로피를 통해 이 문제를 해결합니다.
엔트로피란 무엇인가?
이러한 맥락에서 엔트로피는 정책 행동 분포의 무작위성 또는 불확실성을 측정합니다.엔트로피가 높으면 무작위적인 행동 선택이 더 많다는 의미이고, 엔트로피가 낮으면 더 결정적인 접근 방식을 나타냅니다.
엔트로피가 탐사를 장려하는 방법
손실 함수에 엔트로피 보너스를 추가하여 엔트로피를 PPO에 통합합니다.이 보너스는 교육 중에 정책이 임의성 수준을 유지하도록 장려하여 최적이 아닌 정책으로의 조기 수렴을 방지합니다.기본적으로 엔트로피라는 용어는 에이전트가 다양한 작업을 계속 탐색하여 환경을 보다 포괄적으로 이해할 수 있도록 도와줍니다.
손실 함수의 엔트로피 항은 일반적으로 다음과 같은 형식을 취합니다.
$$ {{\ text {Loss} =\ text {정책 손실} -\ 람다\ times\ text {엔트로피}} $$
여기서 $ {{\ lambda}} $는 엔트로피 보너스의 가중치를 제어하는 하이퍼 파라미터입니다.λ\ lambdaλ의 값이 높을수록 탐색이 더 많아지고 값이 낮을수록 탐구에 유리합니다.
탐색과 착취의 균형 맞추기
효과적인 학습을 위해서는 탐색과 착취 사이의 적절한 균형이 필수적입니다.탐색이 너무 많으면 최적이 아닌 작업에 너무 많은 시간을 할애하여 융합이 지연될 수 있고, 탐색이 너무 적으면 정책이 국지적 최소값으로 조기에 수렴될 수 있습니다.PPO는 학습이 진행됨에 따라 엔트로피 보너스를 점진적으로 줄임으로써 이러한 균형을 유지하므로 환경에 대한 충분한 지식이 수집되면 알고리즘이 활용에 더 집중할 수 있습니다.
실용적 고려 사항
엔트로피 계수 λ\ lambdaλ를 조정할 때는 특정 문제와 환경을 고려하십시오.변동성이 크거나 동역학이 복잡한 환경에서는 엔트로피가 높을수록 유리할 수 있지만, 간단한 환경에서는 엔트로피 보너스가 낮을수록 충분할 수 있습니다.
PPO는 엔트로피를 효과적으로 관리함으로써 에이전트가 전략을 실행하기 전에 충분히 탐색할 수 있도록 하여 보다 강력하고 일반화 가능한 정책으로 이어집니다.
소프트 액터-크리틱 (SAC)
SAC는 연속 작업 공간을 위해 설계된 오프 정책 알고리즘입니다.SAC가 학습하는 방법은 다음과 같습니다.
- 배우-비평가 프레임워크: SAC는 한 명의 행위자 (정책) 와 두 명의 비평가 (가치 함수) 를 고용합니다.액터는 액션을 선택하고 비평가들은 액션을 평가합니다.
- 엔트로피 정규화: SAC는 정책의 기대 수익률과 엔트로피를 모두 극대화합니다.엔트로피 정규화는 목적 함수에 정책의 무작위성을 측정하는 용어를 추가하여 탐색을 장려합니다.이는 최적이 아닌 정책으로의 조기 수렴을 방지하는 데 도움이 됩니다.
- 정책 외 학습: SAC는 리플레이 버퍼를 활용하여 과거 경험을 저장하고 재사용하므로 샘플 효율성이 향상됩니다.비평가는 리플레이 버퍼에서 가져온 일련의 경험을 사용하여 업데이트됩니다.
- 소프트 Q-러닝: SAC는 Bellman 방정식의 소프트 버전을 사용하여 비평가들을 업데이트합니다.여기에는 예측된 Q-값과 엔트로피 항을 포함하는 목표 Q-값 간의 차이를 최소화하는 것이 포함됩니다.
SAC의 엔트로피 정규화
SAC의 엔트로피 정규화는 목적 함수에 엔트로피 용어를 도입하여 정책이 무작위성을 유지하도록 장려합니다.엔트로피 용어 $ {{H (\ pi (\ cdot|s))}} $가 보상에 추가됩니다. 여기서 $ {{\ pi}} $는 정책이고 sss는 상태입니다.이 용어는 행동 선택의 확실성을 떨어뜨려 에이전트가 결정론적 정책을 고수하는 대신 다양한 행동을 탐색하도록 유도합니다.
SAC의 목적 함수는 다음과 같습니다. $ {J (\ pi) =\ sum_ {t=0} ^ {T}\ mathbb {E} _ {(s_t, a_t)\ sim\ rho_\ pi}\ left [r (s_t, a_t) +\ 알파 H (\ pi (\ cdot|s_t))\ 오른쪽]}} $ 여기서 $ {{alpha}} $는 보상 최대화와 엔트로피 최대화 간의 균형을 제어하는 온도 파라미터입니다.
더 높은 엔트로피를 장려함으로써 에이전트는 다양한 행동을 탐색할 가능성이 높아져 더 나은 장기 전략을 발견할 수 있습니다.따라서 최적의 정책을 찾기 위해 탐색이 중요한 환경에서 SAC는 특히 효과적입니다.
SAC의 배우-비평가 프레임워크
SAC에서 배우-비평가 프레임워크는 학습 과정의 기본입니다.프레임워크는 두 가지 주요 구성 요소로 구성됩니다.
- 액터 (정책 네트워크): 액터는 현재 상태를 기반으로 액션을 선택하는 역할을 합니다.이는 행동에 대한 확률 분포 (확률적 정책) 를 출력하여 다양한 행동 선택을 보장하고 탐색을 촉진합니다.정책 네트워크는 정책의 기대 수익과 엔트로피를 극대화하고 착취와 탐색의 균형을 유지하도록 훈련되었습니다.
- 비평가 (Q-밸류 네트웍스): SAC는 두 개의 Q-값 네트워크 (비평가) 를 사용하여 특정 상태에서 조치를 취했을 때 기대되는 수익을 추정합니다.비평가가 두 명이면 Q-러닝 알고리즘에서 흔히 나타나는 과대평가 편향을 줄이는 데 도움이 됩니다.비평가들은 Bellman 오류를 최소화하여 정확한 값 추정을 보장하도록 교육을 받았습니다.
학습 과정에는 배우와 비평가 간의 교대 업데이트가 포함됩니다.
- 비평가 업데이트: 비평가들은 부드러운 Bellman 방정식을 사용하여 업데이트되었습니다.목표 Q-값은 보상 기간과 엔트로피 항을 모두 고려하여 계산되며, 이는 정책이 확률적으로 유지되도록 장려합니다.
- 액터 업데이트: 정책의 기대 수익률과 엔트로피를 최대화하여 액터를 업데이트합니다.정책 기울기는 비평가의 Q-값을 사용하여 계산되며, 이는 액터가 탐색을 유지하면서 더 높은 수익을 거둘 수 있는 행동을 하도록 안내합니다.
행위자와 비평가 간의 이러한 상호 작용을 통해 SAC는 탐색과 착취의 균형을 유지하는 정책을 효과적으로 학습할 수 있어 지속적인 행동 공간을 위한 강력한 알고리즘이 됩니다.
딥 Q-네트워크 (DQN)
DQN은 일반적으로 개별 작업 공간에 사용되는 오프 정책 알고리즘입니다.Lunar Lander 환경에서는 연속 상태 공간을 처리하도록 조정했습니다.DQN이 학습하는 방법은 다음과 같습니다.
- Q-값 근사치: DQN은 신경망을 사용하여 Q-값 함수의 근사치를 구합니다. 이 함수는 주어진 상태에서 특정 행동을 취했을 때의 기대 수익률을 추정합니다.
- 익스피리언스 리플레이: DQN은 과거 경험을 리플레이 버퍼에 저장하고 훈련 중에 경험의 미니 배치를 샘플링합니다.이렇게 하면 연속적인 경험 간의 상관관계가 깨지고 학습 안정성이 향상됩니다.
- 대상 네트워크: DQN은 대상 네트워크를 사용하여 훈련을 안정화합니다.목표 네트워크는 Q-네트워크의 복사본이며 업데이트 빈도가 낮습니다.이렇게 하면 훈련 중에 차이가 발생할 가능성이 줄어듭니다.
- 엡실론-그리디 정책: DQN은 탐사와 착취의 균형을 맞추기 위해 엡실론 탐욕 정책을 사용합니다.확률 엡실론을 사용하는 경우 에이전트는 무작위 작업을 선택하고, 그렇지 않으면 Q-값이 가장 높은 작업을 선택합니다.
연속 작업 공간과 개별 작업 공간
연속 동작 공간과 이산 동작 공간 사이의 선택은 RL 알고리즘의 설계 및 성능에 큰 영향을 미칩니다.
연속 작업 공간
연속 작업 공간은 가능한 다양한 동작을 제공하므로 로봇 조작이나 달 착륙선 환경과 같이 미세 제어가 필요한 작업에 적합합니다.PPO 및 SAC와 같이 연속 활동 공간을 위해 설계된 알고리즘은 각 활동 차원에 대한 연속적인 값 범위를 처리해야 합니다.
- PPO: 일반적으로 가우스 분포로 모델링되는 확률적 정책을 사용하여 연속 동작을 출력합니다.이를 통해 PPO는 연속 작업 환경에 필요한 세밀한 제어를 효과적으로 처리할 수 있습니다.
- 낭: 또한 가우스 분포를 사용하는 확률적 정책을 사용하지만 엔트로피 정규화를 통해 탐색을 향상시킵니다.연속 동작 공간을 통해 SAC는 엔트로피 항을 활용하여 다양한 행동 선택을 유지함으로써 조기 수렴을 방지할 수 있습니다.
분리형 액션 스페이스
개별 액션 공간은 한정된 액션 세트로 구성되어 있어 비디오 게임이나 보드 게임과 같이 명확하고 뚜렷한 액션이 있는 작업에 적합합니다.DQN은 개별 작업 공간용으로 설계되었으며 Q-값이 가장 높은 액션을 선택하여 작동합니다.
- DQN: 신경망을 사용하여 각 이산 동작의 Q-값을 근사화합니다.에이전트는 탐색과 착취의 균형을 유지하면서 엡실론-그리디 정책을 사용하여 행동을 선택합니다.DQN은 연속 상태 공간에 맞게 조정할 수 있지만 원래 설계는 개별 작업에 맞게 조정되었습니다.
알고리즘 구현
Lunar Lander 환경을 위한 각 알고리즘의 구현에 대해 자세히 알아보겠습니다.
1.근위 정책 최적화 (PPO)
1import gymnanisum as gym
2from stable_baselines3 import PPO
3
4# Create the Lunar Lander environment
5env = gym.make("LunarLander-v2")
6
7# Initialize the PPO model
8model = PPO("MlpPolicy", env, verbose=1)
9
10# Train the model
11model.learn(total_timesteps=100000)
12
13# Save the model
14model.save("ppo_lunar_lander")
15
16# Evaluate the model
17obs = env.reset()
18for _ in range(1000):
19 action, _states = model.predict(obs)
20 obs, rewards, dones, info = env.step(action)
21 env.render()
22env.close()2.소프트 액터-크리틱 (SAC)
1import gymnasium as gym
2from stable_baselines3 import SAC
3
4# Create the Lunar Lander environment
5env = gym.make("LunarLanderContinuous-v2")
6
7# Initialize the SAC model
8model = SAC("MlpPolicy", env, verbose=1)
9
10# Train the model
11model.learn(total_timesteps=100000)
12
13# Save the model
14model.save("sac_lunar_lander")
15
16# Evaluate the mode
17lobs = env.reset()
18for _ in range(1000):
19 action, _states = model.predict(obs)
20 obs, rewards, dones, info = env.step(action)
21 env.render()
22env.close()3.딥 Q-네트워크 (DQN)
1import gymnasium as gym
2from stable_baselines3 import DQN
3
4# Create the Lunar Lander environment
5env = gym.make("LunarLander-v2")
6
7# Initialize the DQN model
8model = DQN("MlpPolicy", env, verbose=1)
9
10# Train the model
11model.learn(total_timesteps=100000)
12
13# Save the model
14model.save("dqn_lunar_lander")
15
16# Evaluate the model
17obs = env.reset()
18for _ in range(1000):
19 action, _states = model.predict(obs)
20 obs, rewards, dones, info = env.step(action)
21 env.render()
22env.close()

비교 및 결과
이러한 각 알고리즘은 Lunar Lander 환경에 적용할 때 장단점이 있습니다.
- PPO: 탐험과 착취 사이의 적절한 균형을 제공하므로 상태 및 행동 공간이 연속적인 환경에 적합합니다.일반적으로 수렴 속도가 더 빠르고 안정적입니다.
- 낭: 엔트로피 정규화를 통해 강력한 탐색을 제공하며, 연속적인 작업 공간이 있는 환경에서 종종 더 나은 성능을 제공합니다.하지만 더 많은 계산 리소스와 더 긴 교육 시간이 필요할 수 있습니다.
- DQN: 전통적으로 개별 액션 공간에 사용되었지만 Lunar Lander 환경에 맞게 조정할 수 있습니다.일반적으로 성능이 좋지만 연속 활동 공간에서는 PPO 또는 SAC만큼 효과적이지 않을 수 있습니다.
결론
PPO, SAC 및 DQN을 사용하여 달 착륙선 환경을 해결하는 것은 이러한 고급 RL 알고리즘의 다양성과 강점을 보여줍니다.각 알고리즘의 고유한 특성을 활용하여 이 어려운 문제를 효율적이고 효과적으로 해결할 수 있습니다.안정성, 탐색 또는 계산 효율성 중 어떤 것을 우선시하든 요구 사항에 적합한 RL 알고리즘이 있습니다.
추가 학습 자료
- DQN 대 PPO.멘토와의 토론
- 안정적인 베이스라인3 문서
- 강화 학습 살펴보기: PyTorch에서 근위 정책 최적화 (PPO) 와 함께 행위자-비평가 방법을 사용하여 OpenAI의 달 착륙선에 착륙하도록 가르치는 실습 예제


