반응형
강화학습에서는 에이전트가 상태(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를 사용한 신경망 연산을 체득할 수 있습니다. 이번 글에서는 먼저 강화학습..
들어가며이 시리즈의 여정을 여기까지 따라와주셔서 감사합니다. 우리는 다음과 같은 단계를 거쳐왔습니다.LibTorch와 PyTorch 개념 이해 (1편)PyTorch의 C++ 배포판인 LibTorch를 소개하고, 왜 C++ 환경에서 PyTorch를 사용하는지, 또 Python과 C++을 함께 활용하는 최종 목표를 살펴보았습니다.LibTorch 환경 셋업 및 CMake 프로젝트 기초 (2편)LibTorch를 다운로드하고, CMake를 통해 간단한 "Hello LibTorch" 프로젝트를 구성하며 C++에서 텐서 연산을 위한 기초를 닦았습니다.C++에서 텐서 다루기 (3편)다양한 텐서 초기화와 연산, 모양 변경, GPU 사용 방법 등을 예제 코드를 통해 습득하며 C++에서도 Python PyTorch와 비슷한..
들어가며이 시리즈에서 우리는 다음과 같은 단계를 거쳐왔습니다.C++ 환경에서 LibTorch 사용법 익히기 (기초 텐서 연산, TorchScript 모델 로드)Python에서 학습한 모델을 C++로 가져와 추론하기pybind11을 통해 C++ 코드를 Python에 바인딩하기C++과 Python 사이에서 텐서를 자유롭게 교환하는 기법 살펴보기이제 여기까지 배운 내용을 종합하여, 하나의 일관된 파이프라인을 구축해봅시다. 최종적으로 다음과 같은 흐름을 구현할 예정입니다.Python에서 텐서(입력 데이터) 준비pybind11로 바인딩된 C++ 함수를 호출해 TorchScript 모델 추론 수행결과 텐서를 Python으로 되돌려 받아 후처리 및 시각화이 과정을 통해 C++ 성능과 Python의 편리함을 동시에 누..
지난 글(2편)에서는 LibTorch 환경을 설정하고 C++에서 간단한 텐서를 생성해 출력하는 "Hello LibTorch" 예제를 실습했습니다. 이제 본격적으로 텐서 연산을 조금 더 다뤄보며, C++에서 PyTorch 텐서와 유사한 감각으로 연산을 하는 방법을 익혀봅시다.이번 글에서는 다음을 다룹니다.텐서 생성 방법과 다양한 초기화 방식기초적인 텐서 연산(덧셈, 곱셈, 행렬 연산 등)텐서 모양(Shape) 확인 및 변경GPU(CUDA) 사용을 위한 기초 개념 (CUDA 지원 환경일 경우)작은 예제 코드를 통해 실습이 과정을 통해 C++에서도 Python PyTorch API와 크게 다르지 않은 직관적인 방식으로 텐서를 다룰 수 있음을 확인할 수 있습니다.텐서 생성하기LibTorch에서는 PyTorch와..
안녕하세요! LibTorch 입문 시리즈에 오신 것을 환영합니다.이 시리즈에서는 머신러닝과 딥러닝에 널리 사용되는 PyTorch를 C++ 환경에서 다루는 방법을 차근차근 알려드리려 합니다. 많은 분들이 Python 환경에서 PyTorch를 사용하며 텐서(Tensor) 연산, 모델 훈련, 추론 등을 손쉽게 경험하셨을 텐데요, 여기서 한 발 더 나아가 C++ 환경에서도 PyTorch 기능을 활용한다면 무엇이 가능할까요? 또한, C++로 작성한 성능 높은 코드를 Python에서 투명하게 사용한다면 어떨까요?이 시리즈의 최종 목표는 C++로 작성된 수치 연산 및 딥러닝 로직을 PyTorch의 C++ 라이브러리(LibTorch) 로 활용하고, 여기에 pybind11을 이용하여 Python 환경에서도 동일한 로직을..