반응형
강화학습에서는 에이전트가 상태(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의 편리함을 동시에 누..
앞선 글에서 우리는 C++에서 PyTorch 텐서를 생성하고 연산하며, TorchScript 모델을 C++에서 로드하는 방법, 그리고 pybind11을 통해 C++ 함수를 Python에서 호출하는 방법까지 살펴보았습니다. 이제 한 단계 더 나아가 C++과 Python 사이에서 텐서를 자유롭게 주고받는 방법을 다뤄보겠습니다.이 과정은 다양한 시나리오에서 유용합니다. 예를 들어,Python에서 전처리한 입력 데이터를 C++ 모델 로직에 전달하고 싶을 때C++에서 계산한 텐서를 Python에서 시각화하거나 후처리하고 싶을 때Python에서 추론 로직 일부를 C++로 구현하여 성능을 향상시키고, 그 결과를 다시 Python으로 반환할 때이 글에서는 pybind11과 LibTorch를 활용해 C++과 Python..
앞선 글에서 우리는 C++ 환경에서 LibTorch를 이용해 텐서 연산, TorchScript 모델 로딩 및 추론까지 다뤄보았습니다. 이제는 C++에서 구현한 기능을 Python 환경에서도 그대로 불러와 사용할 수 있다면 어떨까요? 이렇게 하면 C++ 코드 기반의 성능과 최적화를 유지하면서도, Python 환경이 제공하는 편리한 스크립팅과 풍부한 생태계를 활용할 수 있습니다.이때 pybind11 라이브러리를 이용하면 C++ 함수를 Python 모듈로 손쉽게 노출할 수 있습니다. Python 개발자는 마치 파이썬 함수처럼 C++ 함수를 호출할 수 있으며, 이는 C++/Python 혼합 워크플로우를 매우 유연하게 만들어줍니다. 이번 글에서는 pybind11을 사용하여 간단한 C++ 함수를 Python에서 호..
많은 개발자와 연구자들이 PyTorch를 이용해 Python 환경에서 딥러닝 모델을 개발하고 학습합니다. 하지만 실제 프로덕션 환경이나 고성능 애플리케이션에서는 C++ 기반의 애플리케이션에 모델을 통합하고 싶을 때가 있습니다. 이때 Python 환경 없이도 모델을 로딩하고 추론할 수 있도록 해주는 것이 바로 TorchScript 입니다.TorchScript를 사용하면 Python으로 학습한 PyTorch 모델을 별도의 .pt 파일 형태로 내보내고, 이 파일을 C++ LibTorch 환경에서 로딩해 추론할 수 있습니다. 이 글에서는 Python에서 TorchScript 모델을 만드는 방법, 그리고 C++에서 이를 로딩해 추론하는 과정을 단계별로 살펴봅니다. 또한 단순한 완전연결 모델에서 한 걸음 더 나아가..
지난 글(2편)에서는 LibTorch 환경을 설정하고 C++에서 간단한 텐서를 생성해 출력하는 "Hello LibTorch" 예제를 실습했습니다. 이제 본격적으로 텐서 연산을 조금 더 다뤄보며, C++에서 PyTorch 텐서와 유사한 감각으로 연산을 하는 방법을 익혀봅시다.이번 글에서는 다음을 다룹니다.텐서 생성 방법과 다양한 초기화 방식기초적인 텐서 연산(덧셈, 곱셈, 행렬 연산 등)텐서 모양(Shape) 확인 및 변경GPU(CUDA) 사용을 위한 기초 개념 (CUDA 지원 환경일 경우)작은 예제 코드를 통해 실습이 과정을 통해 C++에서도 Python PyTorch API와 크게 다르지 않은 직관적인 방식으로 텐서를 다룰 수 있음을 확인할 수 있습니다.텐서 생성하기LibTorch에서는 PyTorch와..
안녕하세요! 지난 1편에서는 PyTorch와 LibTorch에 대한 개념적인 소개와, 이 시리즈에서 우리가 달성하려는 궁극적인 목표를 알아보았습니다. 이제 실제로 C++ 환경에서 LibTorch를 활용하기 위한 기초 준비를 해볼 차례입니다.이번 글에서는 다음과 같은 과정을 다룹니다.LibTorch 다운로드 및 설치 위치 정하기: 운영체제(Windows, Linux, macOS)에 따라 설치하는 방법을 안내CMake 기반의 기본 프로젝트 환경 설정:CMakeLists.txt를 작성하는 방법LibTorch 라이브러리를 C++ 프로젝트에 연결하는 법간단한 “Hello LibTorch” 예제 코드를 통해 C++에서 LibTorch가 정상적으로 동작하는지 확인이 과정을 마치고 나면, 다음 글(3편)에서 텐서 생성..
안녕하세요! LibTorch 입문 시리즈에 오신 것을 환영합니다.이 시리즈에서는 머신러닝과 딥러닝에 널리 사용되는 PyTorch를 C++ 환경에서 다루는 방법을 차근차근 알려드리려 합니다. 많은 분들이 Python 환경에서 PyTorch를 사용하며 텐서(Tensor) 연산, 모델 훈련, 추론 등을 손쉽게 경험하셨을 텐데요, 여기서 한 발 더 나아가 C++ 환경에서도 PyTorch 기능을 활용한다면 무엇이 가능할까요? 또한, C++로 작성한 성능 높은 코드를 Python에서 투명하게 사용한다면 어떨까요?이 시리즈의 최종 목표는 C++로 작성된 수치 연산 및 딥러닝 로직을 PyTorch의 C++ 라이브러리(LibTorch) 로 활용하고, 여기에 pybind11을 이용하여 Python 환경에서도 동일한 로직을..