반응형
SYCL 입문 시리즈의 첫 번째 글입니다. 이번 글에서는 SYCL이란 무엇이며, 왜 SYCL을 사용할 때 NVIDIA GPU나 Qualcomm GPU에서도 동일한 코드를 실행할 수 있는지 기본 개념을 소개합니다. 또한 개발 환경 설정, CMake 빌드 시스템 활용, 그리고 가장 기본적인 “Hello SYCL!” 예제를 통해, 독자가 실제로 코드를 컴파일하고 실행해보는 과정을 안내하겠습니다.이 글은 SYCL에 완전히 처음 입문하는 독자를 대상으로 하며, 모든 단계에 대해 가능한 한 자세히 설명하여, 글을 따라만 해도 실제 코드를 실행할 수 있도록 하였습니다.왜 SYCL인가?SYCL은 Khronos 그룹에서 정의한, C++ 기반의 이식성 높은 병렬 프로그래밍 모델입니다. CUDA는 NVIDIA GPU 전용이..
이 시리즈를 따라오느라 수고 많으셨습니다! 여기까지 오신 독자라면, 이제 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을 구현해 CartPole 환경을 학습시켜보았습니다. DQN은 간단하고 효과적이지만, 여전히 다음과 같은 문제가 남아 있습니다.Q값의 과추정(Overestimation): DQN은 최대 Q값을 직접 사용하기 때문에, 노이즈나 학습 초기 불안정으로 인해 실제보다 높은 Q값을 선택하는 경향이 있습니다. 이로 인해 정책이 왜곡될 수 있습니다.데이터 효율성과 안정성 문제: 경험 리플레이를 사용하지만, 모든 transition이 동일한 확률로 샘플링됩니다. 또, Q값 계산 시 행동에 따른 Q분포를 좀 더 효율적으로 학습할 수 있는 구조적 개선도 가능할 것입니다.이러한 문제를 완화하기 위해 다양한 DQN 변형 알고리즘이 제안되었습니다. 그중 대표적인 두 가지를 소개하겠습니다.Double DQN (..
강화학습에서는 에이전트가 상태(State)마다 어떤 행동(Action)을 취해야 하는지 결정하기 위해 정책(Policy)을 개선해나갑니다. 앞서 1편에서 살펴본 랜덤 정책 에이전트는 전혀 학습을 하지 않고, 그저 무작위로 행동을 선택하기 때문에 성능이 저조했습니다. 이제는 "가치(Value)" 개념을 도입하여, 각 상태-행동 쌍이 얼마나 좋은지(미래 보상을 많이 얻을 수 있는지)를 평가하는 방식으로 정책을 개선할 실마리를 잡아봅시다.이번 글의 목표는 다음과 같습니다.가치기반(Value-based) 접근 개념 정리: Q함수(Q-value)를 통해 상태-행동 쌍의 가치를 정의Q학습(Q-learning) 아이디어 소개: 벨만(Bellman) 방정식을 이용한 Q함수 업데이트 개념(이론적 상세는 추가 자료 참조)..
강화학습(Reinforcement Learning, RL)은 에이전트(Agent)가 환경(Environment)과 상호작용하며 보상(Reward)을 최대화할 수 있는 정책(Policy)을 학습하는 기계학습 분야입니다. 최근 딥러닝 기술과 결합되어, Atari 게임을 수준 높게 공략하거나 로봇팔 제어, 자율주행 의사결정, 바둑·스타크래프트 같은 복잡한 게임에서 인간 프로나 챔피언을 능가하는 성능을 선보이면서 큰 주목을 받았습니다.이 시리즈에서는 RL에 처음 입문하는 독자를 위해, 파이썬과 PyTorch를 활용해 기본적인 강화학습 알고리즘을 단계적으로 구현하고 실험해 볼 예정입니다. 이 과정을 따라가며 RL의 기본 구조와 PyTorch를 사용한 신경망 연산을 체득할 수 있습니다. 이번 글에서는 먼저 강화학습..