반응형
강화학습(RL)을 다루다 보면, 다양한 알고리즘(DQN, PPO, SAC 등)을 일일이 직접 구현하고, 하이퍼파라미터를 조정하며, 환경을 실행하는 과정이 만만치 않다는 걸 실감하게 됩니다. 이전 시리즈에서는 PyTorch로 직접 RL 알고리즘을 구현해봤지만, 실제 실험 단계에선 이런 구현 부담을 덜어주는 라이브러리가 큰 도움이 됩니다.Ray RLlib는 그런 니즈에 부합하는 강력한 분산 강화학습 프레임워크입니다. RLlib은 다음과 같은 장점을 갖습니다.다양한 알고리즘 내장: DQN, PPO, SAC, A3C/A2C, IMPALA 등 대표적인 알고리즘을 기본 지원간단한 Config 기반 설정: 하이퍼파라미터, 환경 설정, 알고리즘 변형을 Config 딕셔너리로 쉽게 제어분산/병렬 학습 지원: Ray의 멀..
강화학습(Reinforcement Learning, RL)을 처음 접하는 사람이라면, 이 분야가 얼마나 광범위하고 흥미로운지 금방 깨닫게 될 것입니다. 단순한 보상 기반 학습 방식에서 출발한 RL은, 사람과 유사한 의사결정 능력을 인공지능 에이전트에게 부여하려는 목표 아래 꾸준히 발전해 왔습니다. 그 중에서도 DQN(Deep Q-Network)의 등장은 강화학습을 새로운 차원으로 끌어올린 획기적인 사건이었습니다.자, 이제 DQN이 무엇이고, 왜 중요한지, 어떻게 작동하는지, 그리고 어떤 발전을 거쳐 왔는지 천천히 살펴보겠습니다. 이 글은 초심자도 이해할 수 있도록 기초 개념부터 시작해 하나하나 풀어나가며, 실제 예시와 비유를 활용해 개념적 이해를 돕겠습니다.DQN의 탄생과 의의: 강화학습의 지평을 넓히다..
기존 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)을 순서대로..