4P by GN⁺ | ★ favorite | 댓글 1개
  • drlzh.ai는 딥 강화학습을 읽기만 하는 대신 알고리듬을 직접 구현하는 실습형 과정이며, MDP와 표 형식 RL부터 RLHF, Decision Transformers, Dreamer, 메타러닝까지 다룸
  • 루트 노트북은 코드 일부가 안내형 TODO로 대체된 실습 트랙이고, solution/ 노트북에는 막혔을 때 확인할 수 있는 완전 실행 버전이 들어 있음
  • 커리큘럼은 00-18 노트북으로 구성되며, 기초 트랙은 순서대로 진행하도록 설계되고 고급 노트북은 자체 완결형이지만 번호가 기본 학습 경로를 제공함
  • Docker 워크스페이스는 code-server, 노트북, Python >=3.13,<3.14, Jupyter 커널, 의존성, DRL-ZH AI Companion VS Code 확장을 한 번에 제공함
  • 학습자는 Python, PyTorch 기초, 확률·통계·선형대수·미분 등 ML 수학에 익숙해야 하며, 노트북은 실제 학습 코드를 읽고 수정할 수 있다는 전제를 둠

프로젝트 개요

  • drlzh.ai는 실습 중심 딥 강화학습 과정으로, 알고리듬을 직접 만들도록 구성됨
  • 학습 범위는 MDP와 표 형식 RL에서 시작해 다음 주제로 확장됨
    • Atari 에이전트 기반 알고리듬
    • 연속 제어 로봇
    • AlphaZero 스타일 계획
    • 언어 모델을 위한 RLHF
    • Decision Transformers
    • VLA 스타일 정책
    • 월드 모델
    • Dreamer
    • 메타러닝
  • 루트 노트북은 연습 트랙이며, 코드가 안내형 TODO 섹션으로 의도적으로 대체돼 있음
  • solution/ 노트북은 완전하고 실행 가능한 버전을 제공해, 학습자가 과정 밖으로 나가지 않고 막힌 부분을 풀 수 있음

커리큘럼 구성

  • 과정은 00부터 18까지의 노트북으로 구성됨
  • 00-07 Foundations
    • MDPs, tabular RL, DQN, REINFORCE, actor-critic methods, DDPG, TD3, SAC, PPO를 구현함
  • 08-10 Breaking assumptions
    • RND curiosity, multi-agent RL, BC와 IQL을 사용한 offline RL을 다룸
  • 11 Planning
    • Monte Carlo Tree Search, self-play, AlphaZero 스타일 policy/value 학습을 다룸
  • 12-13 Modern AI stack
    • PPO 기반 RLHF, DPO, GRPO, Decision Transformers, NanoVLA(DTVLA)를 다룸
  • 14 Production
    • TensorBoard, 체크포인트, 디버깅, multiple seeds, Ray, Optuna를 다룸
  • 15-16 World models
    • SAC 기반 MBPO와 RSSM latent imagination을 사용하는 DR3AM/Dreamer를 다룸
  • 17-18 Meta + wrap-up
    • MAML, FOMAML, fast adaptation, 과정 마무리로 구성됨
  • 기초 노트북은 순서대로 진행하는 것을 전제로 함
  • 고급 노트북은 자체 완결형이지만, 번호가 탐색부터 과정 캡스톤까지의 기본 경로를 제공함

DRL-ZH AI Companion

  • Docker 워크스페이스에는 이 과정용 VS Code 확장인 DRL-ZH AI Companion이 포함됨
  • 확장은 사용자가 작업 중인 노트북과 TODO를 인식함
  • 정답을 바로 주는 대신 소크라테스식 힌트를 제공함
  • 텍스트 모드와 음성 모드를 지원함
  • LLM 키는 사용자가 직접 가져와야 함
    • Gemini가 기본값임
    • OpenAI, Anthropic, Groq도 지원됨

실행 환경과 시작 방법

  • 권장 설정은 Docker
  • Docker는 다음 요소를 하나의 재현 가능한 워크스페이스로 제공함
    • code-server
    • 노트북
    • Python >=3.13,<3.14
    • Jupyter 커널
    • 의존성
    • AI Companion
  • 기본 시작 절차
    • Docker와 Git을 설치하고 저장소를 클론한 뒤 해당 디렉터리로 이동함
    • Linux/macOS에서는 printf "UID=$(id -u)\nGID=$(id -g)\n" > .env를 실행해 파일 소유권을 사용자에게 맞춤
    • 기본 환경을 시작함
docker compose up --build -d
  • Chromium 기반 브라우저에서 http://localhost:8080을 열고 Python (drl-zh) 커널을 선택함
  • 00_Intro.ipynb를 열고 TODO를 채우기 시작함
  • NVIDIA GPU 접근이 필요하면 다음 명령을 사용함
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build -d
  • 더 작은 CPU 전용 이미지는 다음 명령을 사용함
docker compose -f docker-compose.yml -f docker-compose.cpu.yml up --build -d
  • 네이티브 설정을 선호하면 MANUAL.md에서 Python, Poetry, VS Code, Companion 지침을 확인할 수 있음

요구 지식과 라이선스

  • 학습자는 다음에 익숙해야 함
    • Python
    • PyTorch 기초
    • ML에 필요한 확률, 통계, 선형대수, 미분
  • 노트북은 RL 자체를 가르치지만, 실제 훈련 코드를 읽고 수정할 수 있다는 전제를 둠
  • 라이선스는 MIT이며 자세한 내용은 LICENSE에 있음

댓글과 토론

Hacker News 의견들
  • 최신 심층 강화학습을 배우면서 좋은 자료는 많았지만, 이론과 실습의 균형이 내 경험에 딱 맞는 자료를 찾지 못해 직접 만들고 오픈소스로 공개함
    Python 노트북 시리즈에서 QLearning, DQN, SAC, PPO 같은 알고리즘을 처음부터 다시 구현했고, 2018/2019년쯤의 최신 기법까지 이론과 코딩 연습을 단계적으로 따라가도록 구성했음
    제목은 Andrej Karpathy의 "Neural Network: Zero To Hero"에서 가져왔고, YouTube 영상도 만들 생각이었지만 아직 시간이 없었음
    참고 자료: https://github.com/alessiodm/drl-zh/blob/main/00_Intro.ipynb, https://karpathy.ai/zero-to-hero.html

    • Python에 많이 의존하는지, 아니면 다른 언어로도 자료를 따라갈 수 있는지 궁금함
    • 오늘 처음 세 노트북을 따라 해봤는데 꽤 좋았고, Atari Gymnasium을 처음 써봤는데 만족스럽고 재미있었음
    • 최신 기법과 결과를 따로 정리한 SoTA 페이지가 있으면 좋겠음
  • 나중에 장을 더 확장한다면, 이미 잘 되는 단순한 것보다 망가졌을 때 뭘 해야 하는지를 다루면 좋겠음
    예를 들어 행동이 계속 최댓값에 stuck 된다거나, 오프폴리시 학습에 아무리 잡음을 줘도 탐색이 시작되지 않는 경우 같은 문제들임
    기본은 대체로 돌아가는데 갑자기 아무도 잘 말하지 않는 문제가 생겼을 때 쓸 수 있는 실전 자료가 더 많았으면 함

    • 흔한 조언이 “맞는 조합을 찾을 때까지 하이퍼파라미터를 조정하라”인 건 맞고, 도움이 되기도 하지만 문제는 보통 문제 공간과 정식화, 알고리즘 자체, 난수 시드에 따른 큰 성능 분산 같은 여러 구석에 숨어 있음
      실제 심층 강화학습 응용에서는 잘 되는 경우보다 안 되는 경우가 더 많고, 이 튜토리얼도 문제 해결, 튜닝, 제품화 쪽은 부족함
      확장할 시간이 생기면 이 부분을 우선순위에 올릴 생각임: https://www.alexirpan.com/2018/02/14/rl-hard.html
  • 대학에서 강화학습을 세 학기나 배웠지만, 최신 강화학습 기법이 Tetris에서 단순 휴리스틱도 못 이긴다는 걸 알고 크게 실망했음

    • 회사의 비즈니스 문제 일부를 다중 슬롯머신 문제로 모델링해서 가장 큰 비용을 10% 줄였고, 여러 기능에서 무엇이 작동하고 무엇이 아닌지 이해하게 해주는 자동화된 진실 신호도 보여줬음
      강화학습 개념도 다른 도구처럼 쓸 곳을 제대로 찾는 게 중요함
      수업에서는 강력한 아이디어가 현실에서 어디에 쓰일 수 있는지 더 많이 보여주는 부분이 자주 빠짐
      최적 정책을 이야기하는 건 좋지만, 어디에 적용할 수 있는지 이해시키지 못하면 재미있는 수학 묶음에 그치기 쉬움
    • 강화학습이 크게 실망스러울 수 있다는 데 동의하고, 실제로 작동하게 만드는 것 자체가 어렵다는 데도 동의함
      그래도 기본과 기초만이라도 배워볼 만하다고 봄
      지도학습, 비지도학습, 최근 크게 주목받는 준지도학습과 달리, 강화학습은 환경과 상호작용하고 피드백을 받는 에이전트라는 방식으로 학습 문제를 아주 우아하게 모델링함
      오늘날에도 RLHF 같은 LLM 미세조정, Covariant 같은 로보틱스 회사, Nvidia Eureka처럼 LLM과 강화학습을 결합한 연구 등 실용적 성공 사례가 있음: https://www.alexirpan.com/2018/02/14/rl-hard.html, https://blogs.nvidia.com/blog/eureka-robotics-research/
    • 강화학습은 지금 이상한 중간 지대에 있는 것 같음. 잘 작동시키는 법은 아무도 확실히 모르지만, 최상위 기계학습 연구자 대부분은 AI의 다음 발전에 필수 구성요소라고 보는 듯함
  • OpenAI Gym과 비슷한, 음악 생성을 위한 심층 강화학습 프레임워크를 만들었음
    원글의 알고리즘을 테스트해보고 싶다면 써도 좋고, 이슈와 PR도 환영함
    https://github.com/chaosprint/RaveForce

  • 예전에 직접 심층 강화학습을 살펴봤지만 에이전트가 의미 있는 진전을 만들지 못했고, 통계나 기계학습 배경이 거의 없어서 무엇이 잘못됐는지 디버깅하기 어려웠음
    이 자료를 따라가 보면서 어떻게 되는지 확인해볼 생각임

    • 에이전트가 결국 진전을 보이는지, 이 노트북들이 아주 조금이라도 도움이 되는지 궁금함
      알고리즘이 실제로 돌아가는지만 보고 싶다면 solution 폴더에서 동작할 만한 알고리즘을 골라 바로 실행해볼 수 있음
      잘 되면 그다음에 처음부터 다시 구현하는 재미를 누리면 됨
    • 이런 자료는 훌륭하지만, 강화학습 자체가 꽤 밀도 높고 무거운 주제라서 본질적인 난이도를 낮출 방법이 있는지는 잘 모르겠음
      초보자에게는 그 점을 분명히 알려야 한다고 봄
      기계학습 주제, 특히 강화학습 관련 주제에서 가장 아쉬운 부분임
  • 몇 년 전에 비슷한 걸 만들었음. PPO까지는 가지 않고 스타일도 다름
    https://learndrl.com/
    더 낫다거나 못하다고 하려는 건 아니지만, 배우는 입장에서는 같은 정보를 여러 형태로 접하는 게 항상 좋음

  • MDP 예제를 본 뒤, 비결정적 전이 함수를 소개하는 방식에 대해 제안하고 싶음
    현재 예제에서는 에이전트가 위나 아래로 가려다가 실수로 왼쪽이나 오른쪽으로 가는 식으로 비결정성이 생기는데, 텍스트에서 에이전트가 실수한다는 점이 충분히 설명되지 않아 transition() 함수의 주석이 처음엔 헷갈림
    또한 교육적으로는 비결정성이 에이전트가 아니라 환경에서 온다고 소개하는 편이 더 나을 수 있음. 예를 들어 거친 표면 위에서 이동해서 트랙이나 팔다리를 움직여도 항상 의도한 결과가 나오지 않는 식임
    지금 표현은 행동에서 임의 행동으로, 다시 임의 상태로 가는 함수처럼 보이는데, 정의는 행동에서 임의 상태로 가는 함수임

    • 노트북에서 확실히 헷갈릴 수 있었고, 비결정성이 에이전트가 실수로 다른 행동을 골라서가 아니라 환경 동역학의 확률적 성질에서 온다는 점이 조금 더 분명해지도록 작은 커밋을 올렸음
      처음에는 영상에서 목소리로 텍스트의 빈틈을 메울 생각이었지만, 영상을 만들 시간이 없었으니 우선 그런 빈틈부터 고치고 있음
  • 세 번째 노트북을 꽤 읽고 나서야 TODO라고 표시된 코드 구간이 실제로 독자가 구현해야 하는 코딩 연습이고, 뒤따르는 테스트가 자기 답을 확인하는 용도라는 걸 깨달았음
    영리한 접근이지만 처음부터 명확하게 보이지는 않았음
    처음에는 큰 그림을 방해하지 않으려고 자잘한 세부사항을 TODO로 남긴 줄 알았는데, 실제로는 그 부분들이 핵심이었음

    • TODO가 헷갈릴 수 있다는 생각을 못 했고, README.md에 완료해야 할 코딩 구간이라고 명시하도록 지침을 업데이트했음
  • 이론은 배웠지만 실제로 강화학습을 쓰는 데 필요한 실습 지식이 부족한 상태로 애매하게 머물러 있었는데, 딱 찾던 유형의 강의처럼 보임

    • 이 노트북들이 어떻게 도움이 되는지, 따라가 본 경험이 어떤지 궁금하고 어떤 피드백이든 환영함
  • 좋아 보이는데, README에 YouTube 영상 링크를 추가하면 좋겠음

    • README의 실수였고, 아직 YouTube 영상을 만들지 못했음
      그래도 커뮤니티에서 관심은 있어 보이니 만들어보려고 하고, 그동안 README는 수정하겠음