반응형
강화학습(RL)을 다루다 보면, 다양한 알고리즘(DQN, PPO, SAC 등)을 일일이 직접 구현하고, 하이퍼파라미터를 조정하며, 환경을 실행하는 과정이 만만치 않다는 걸 실감하게 됩니다. 이전 시리즈에서는 PyTorch로 직접 RL 알고리즘을 구현해봤지만, 실제 실험 단계에선 이런 구현 부담을 덜어주는 라이브러리가 큰 도움이 됩니다.Ray RLlib는 그런 니즈에 부합하는 강력한 분산 강화학습 프레임워크입니다. RLlib은 다음과 같은 장점을 갖습니다.다양한 알고리즘 내장: DQN, PPO, SAC, A3C/A2C, IMPALA 등 대표적인 알고리즘을 기본 지원간단한 Config 기반 설정: 하이퍼파라미터, 환경 설정, 알고리즘 변형을 Config 딕셔너리로 쉽게 제어분산/병렬 학습 지원: Ray의 멀..
이 시리즈를 따라오느라 수고 많으셨습니다! 여기까지 오신 독자라면, 이제 PyTorch와 다양한 강화학습 알고리즘(DQN 계열, REINFORCE, A2C, PPO, SAC)에 대한 전반적인 감각을 갖추게 되었을 것입니다. 다시 한 번 지금까지 다룬 내용을 간략히 정리해봅시다.지금까지 다룬 내용 정리개념 및 기본 환경 구축 (1편):PyTorch, OpenAI Gym 환경 설정 및 강화학습 기본 개념 소개DQN과 변형들 (2~6편):DQN: 가치기반 접근의 기본Double DQN: Q값 과추정 완화Dueling DQN: 상태 가치(V)와 Advantage 분리로 효율적 학습Prioritized Experience Replay (PER): 중요도가 높은 경험을 더 자주 샘플링하여 효율 개선정책기반 & Ac..
이전까지는 CartPole처럼 왼/오 행동을 선택하는 이산적 행동 공간 문제를 다뤘습니다. 하지만 실제 응용(로봇 제어, 자율주행, 제어 시스템)은 연속적 행동(예: 모터 토크, 휠 각도)을 요구합니다. 이산적 행동 공간용 Q-learning 계열 알고리즘을 그대로 적용하기 어렵기 때문에, 연속 행동 공간에 맞는 알고리즘이 필요합니다.SAC(Soft Actor-Critic)는 연속 행동 공간을 다루는 최신 Actor-Critic 알고리즘 중 하나로, 다음과 같은 특징을 갖습니다.Off-policy Actor-Critic: 리플레이 버퍼를 사용, 데이터 효율적자동 온도 파라미터 조정: 탐사(Exploration)와 활용(Exploitation) 사이의 균형을 맞추는 엔트로피 보상(Entropy Regula..
A2C까지는 정책과 가치를 동시에 학습하는 Actor-Critic 방법론의 기본을 익혔습니다. 그러나 A2C나 A3C, TRPO 같은 알고리즘들은 정책 업데이트 과정에서 제한이 명확하지 않아, 큰 갱신으로 인한 성능 퇴보가 발생할 수 있습니다.PPO(Proximal Policy Optimization)는 이를 개선하기 위해 다음과 같은 핵심 아이디어를 제안합니다.정책 업데이트 시, 새로운 정책과 기존 정책의 차이를 '클리핑(clipping)'하여, 정책이 한 번에 크게 바뀌지 않도록 제약이로써 안정적인 학습이 가능해지고, 복잡한 수학적 보증이 필요한 TRPO보다 구현이 단순하며, 널리 사용되는 SOTA급 RL 알고리즘으로 자리매김핵심 개념:Probability Ratio (r):r(θ) = π_θ(a|s..
정책기반 접근(REINFORCE)은 정책을 직접 파라미터화하고, 에피소드가 끝난 후 누적보상을 이용해 정책 그래디언트를 업데이트합니다. 이 방법은 개념적으로 간단하지만, 다음과 같은 단점이 있습니다.고분산 업데이트: 에피소드 단위로 G(Return)를 계산하므로, 긴 에피소드나 복잡한 문제에서는 분산이 매우 커져 업데이트 효율이 떨어집니다.느린 반응: 에피소드가 끝나야만 업데이트가 이루어지므로 실시간 반응이 어려움.Actor-Critic 접근은 이러한 문제를 완화합니다. 여기서 에이전트는 두 가지 신경망(또는 하나의 공유 신경망)을 갖습니다.Actor(정책 네트워크): πθ(a|s)를 파라미터화하여, 상태에서 행동 확률분포를 출력 (정책기반)Critic(가치추정 네트워크): Vψ(s)를 파라미터화하여, ..
지금까지 다룬 DQN 계열 알고리즘은 Q값(Q(s,a))을 근사하고, 이를 바탕으로 최적 행동을 선택하는 가치기반(Value-based) 방식이었습니다. 반면, 정책기반(Policy-based) 방법은 Q함수를 명시적으로 다루지 않고, 정책(π(a|s))을 직접 파라미터화(파라미터 θ)하고 이를 최적화하는 접근을 사용합니다.정책기반 접근의 장점:연속적이고 큰 행동 공간 처리 용이: Q테이블이나 Q함수를 모든 행동에 대해 근사하는 것이 어려운 상황에서 정책을 직접 근사하면 편리합니다.확률적 정책: 정책이 확률적으로 행동을 샘플링하기 때문에 탐색을 내장하고 있습니다.정책 개선의 직관성: 목표는 "정책의 기대 return을 최대화"하는 것이며, 이를 직접 최적화 가능합니다.이번 글에서는 가장 기초적인 정책기반..
기존 DQN에서는 모든 경험을 동일한 확률로 샘플링합니다. 그러나 강화학습에서는 특정 경험(transition)이 학습 초기에는 별로 도움이 안 되지만, 나중에 정책이 개선되면서 가치가 달라지거나, 에이전트가 특정 상황에서 큰 TD 오차(Temporal-Difference Error)를 낼 경우 그 경험이 정책 개선에 더 크게 기여할 수 있습니다.우선순위 경험 리플레이(PER)의 핵심 아이디어는 TD 오차가 큰(즉, 현재 네트워크의 예측과 실제 타겟 간 차이가 큰) 경험을 더 자주 샘플링하는 것입니다. 이를 통해 에이전트는 정책 개선에 유용한 경험을 빠르게 재학습하고, 경험 데이터 활용 효율을 높일 수 있습니다.참고자료:Schaul et al., 2016. "Prioritized Experience Re..
DQN 계열 알고리즘의 핵심은 상태-행동 가치(Q-value)를 효과적으로 추정하는 것입니다. 지금까지의 네트워크는 상태를 입력받아 각 행동에 대한 Q값을 직접 출력하는 구조를 사용했습니다. 그러나 모든 행동에 대한 Q값을 별도로 추정하는 것은 비효율적일 수 있습니다. 상태 자체의 "가치(Value)"와, 그 상태에서 특정 행동을 선택함으로써 추가로 얻을 수 있는 "우위(Advantage)"를 분리하면, 공통적인 상태 가치를 학습하면서도 행동별 차이를 더 효율적으로 포착할 수 있습니다.Dueling DQN(Dueling Network Architecture for Deep Reinforcement Learning)에서는 Q(s,a)를 다음과 같이 분해합니다.Q(s,a) = V(s) + A(s,a) - 평..
이전 글에서 DQN을 구현해 CartPole 환경을 학습시켜보았습니다. DQN은 간단하고 효과적이지만, 여전히 다음과 같은 문제가 남아 있습니다.Q값의 과추정(Overestimation): DQN은 최대 Q값을 직접 사용하기 때문에, 노이즈나 학습 초기 불안정으로 인해 실제보다 높은 Q값을 선택하는 경향이 있습니다. 이로 인해 정책이 왜곡될 수 있습니다.데이터 효율성과 안정성 문제: 경험 리플레이를 사용하지만, 모든 transition이 동일한 확률로 샘플링됩니다. 또, Q값 계산 시 행동에 따른 Q분포를 좀 더 효율적으로 학습할 수 있는 구조적 개선도 가능할 것입니다.이러한 문제를 완화하기 위해 다양한 DQN 변형 알고리즘이 제안되었습니다. 그중 대표적인 두 가지를 소개하겠습니다.Double DQN (..
지난 글에서 가치 기반 접근과 Q함수 근사를 위한 PyTorch 신경망 구조를 마련했다면, 이번 글에서는 이를 실제로 학습시키기 위한 대표적인 딥 강화학습 알고리즘인 DQN(Deep Q-Network)의 기본 골격을 구현해 봅니다. 여기서는 경험 리플레이(Replay Buffer)와 ε-탐욕적(epsilon-greedy) 정책, 그리고 타겟 네트워크(Target Network) 개념을 소개하고, CartPole 환경에서 DQN을 간단히 훈련시키는 예제를 통해 Q함수를 실제로 업데이트하는 과정을 살펴보겠습니다. 강화학습에서 Q함수를 딥뉴럴넷으로 근사하는 것은 확장성 측면에서 유용하지만, 단순히 Q-learning을 신경망에 직접 대입하는 것만으로는 학습이 불안정합니다. 경험(transition)을 순서대로..