- drlzh.ai, derin pekiştirmeli öğrenmeyi yalnızca okumak yerine algoritmaları doğrudan uygulamaya dayalı pratik bir kurstur; MDP ve tablo tabanlı RL’den RLHF, Decision Transformers, Dreamer ve meta öğrenmeye kadar uzanır
- Kök dizindeki notebook’lar, kodun bir bölümünün yönlendirmeli TODO’larla değiştirildiği alıştırma parkurudur;
solution/ notebook’larında ise takıldığınızda bakabileceğiniz tamamen çalıştırılabilir sürümler bulunur
- Müfredat
00-18 notebook’larından oluşur; temel parkur sırayla ilerlemek üzere tasarlanmıştır, ileri seviye notebook’lar ise kendi içinde tamamlanmış olsa da numaralandırma temel öğrenme yolunu sunar
- Docker çalışma alanı code-server, notebook’lar, Python
>=3.13,<3.14, Jupyter kernel’i, bağımlılıklar ve DRL-ZH AI Companion VS Code eklentisini tek seferde sağlar
- Öğrencilerin Python, PyTorch temelleri ve olasılık·istatistik·doğrusal cebir·türev gibi ML matematiğine aşina olması gerekir; notebook’lar gerçek eğitim kodunu okuyup değiştirebildiğiniz varsayımıyla hazırlanmıştır
Proje özeti
- drlzh.ai, algoritmaları doğrudan oluşturacak şekilde tasarlanmış, pratik odaklı bir derin pekiştirmeli öğrenme kursudur
- Öğrenme kapsamı MDP ve tablo tabanlı RL’den başlayıp şu konulara genişler
- Atari ajanı tabanlı algoritmalar
- Sürekli kontrol robotları
- AlphaZero tarzı planlama
- Dil modelleri için RLHF
- Decision Transformers
- VLA tarzı politikalar
- Dünya modelleri
- Dreamer
- Meta öğrenme
- Kök dizindeki notebook’lar alıştırma parkurudur; kodlar bilinçli olarak yönlendirmeli
TODO bölümleriyle değiştirilmiştir
solution/ notebook’ları eksiksiz ve çalıştırılabilir sürümler sunar; böylece öğrenciler takıldıkları kısımları kursun dışına çıkmadan çözebilir
Müfredat yapısı
- Kurs,
00’dan 18’e kadar notebook’lardan oluşur
00-07 Foundations
- MDPs, tabular RL, DQN, REINFORCE, actor-critic methods, DDPG, TD3, SAC, PPO uygulanır
08-10 Breaking assumptions
- RND curiosity, multi-agent RL, BC ve IQL kullanan offline RL ele alınır
11 Planning
- Monte Carlo Tree Search, self-play, AlphaZero tarzı policy/value öğrenmesi ele alınır
12-13 Modern AI stack
- PPO tabanlı RLHF, DPO, GRPO, Decision Transformers, NanoVLA(
DTVLA) ele alınır
14 Production
- TensorBoard, checkpoint’ler, debugging, multiple seeds, Ray, Optuna ele alınır
15-16 World models
- SAC tabanlı MBPO ve RSSM latent imagination kullanan
DR3AM/Dreamer ele alınır
17-18 Meta + wrap-up
- MAML, FOMAML, fast adaptation ve kurs kapanışından oluşur
- Temel notebook’ların sırayla ilerlenmesi varsayılır
- İleri seviye notebook’lar kendi içinde tamamlanmıştır; ancak numaralandırma keşiften kurs capstone’una kadar temel yolu sağlar
DRL-ZH AI Companion
- Docker çalışma alanı, bu kursa yönelik VS Code eklentisi olan DRL-ZH AI Companion’ı içerir
- Eklenti, kullanıcının üzerinde çalıştığı notebook’u ve
TODO’ları algılar
- Doğrudan cevabı vermek yerine Sokratik ipuçları sağlar
- Metin modu ve ses modunu destekler
- LLM anahtarını kullanıcının kendisinin getirmesi gerekir
- Varsayılan Gemini’dir
- OpenAI, Anthropic ve Groq da desteklenir
Çalıştırma ortamı ve başlangıç
- Önerilen kurulum Docker’dır
- Docker aşağıdaki öğeleri tek bir yeniden üretilebilir çalışma alanı olarak sağlar
- code-server
- notebook’lar
- Python
>=3.13,<3.14
- Jupyter kernel’i
- bağımlılıklar
- AI Companion
- Temel başlangıç adımları
- Docker ve Git’i kurup depoyu klonlayın, ardından ilgili dizine geçin
- Linux/macOS’ta dosya sahipliğini kullanıcıyla eşleştirmek için
printf "UID=$(id -u)\nGID=$(id -g)\n" > .env komutunu çalıştırın
- Temel ortamı başlatın
docker compose up --build -d
- Chromium tabanlı bir tarayıcıda
http://localhost:8080 adresini açın ve Python (drl-zh) kernel’ini seçin
00_Intro.ipynb dosyasını açın ve TODO’ları doldurmaya başlayın
- NVIDIA GPU erişimi gerekiyorsa aşağıdaki komutu kullanın
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build -d
- Daha küçük, yalnızca CPU’ya yönelik imaj için aşağıdaki komutu kullanın
docker compose -f docker-compose.yml -f docker-compose.cpu.yml up --build -d
- Yerel kurulumu tercih ederseniz Python, Poetry, VS Code ve Companion yönergeleri için MANUAL.md dosyasına bakabilirsiniz
Gerekli bilgi ve lisans
- Öğrencilerin aşağıdakilere aşina olması gerekir
- Python
- PyTorch temelleri
- ML için gerekli olasılık, istatistik, doğrusal cebir ve türev
- Notebook’lar RL’nin kendisini öğretir; ancak gerçek eğitim kodunu okuyup değiştirebildiğiniz varsayılır
- Lisans MIT’dir; ayrıntılar LICENSE dosyasında yer alır
1 yorum
Hacker News yorumları
Güncel derin pekiştirmeli öğrenmeyi öğrenirken iyi kaynaklar çoktu, ancak teori ile pratiğin dengesi benim deneyimime tam uyan bir kaynak bulamadığım için kendim oluşturdum ve açık kaynak olarak yayımladım.
Python notebook serisinde QLearning, DQN, SAC, PPO gibi algoritmaları sıfırdan yeniden implemente ettim; 2018/2019 civarındaki güncel tekniklere kadar teori ve kodlama alıştırmalarını adım adım izlenecek şekilde kurguladım.
Başlığı Andrej Karpathy’nin "Neural Network: Zero To Hero" çalışmasından aldım; YouTube videosu da hazırlamayı düşünüyordum ama henüz zaman bulamadım.
Referanslar: https://github.com/alessiodm/drl-zh/blob/main/00_Intro.ipynb, https://karpathy.ai/zero-to-hero.html
İleride bölümleri daha da genişletirseniz, zaten iyi çalışan basit şeylerden ziyade bozulduğunda ne yapılacağını ele almak iyi olur.
Örneğin davranışın sürekli maksimum değerde takılı kalması ya da off-policy öğrenmede ne kadar gürültü eklense de keşfin başlamaması gibi sorunlar.
Temel şeyler genelde çalışıyor; ama birden, kimsenin pek bahsetmediği bir sorun çıktığında kullanılabilecek daha fazla pratik kaynak olsa iyi olurdu.
Gerçek derin pekiştirmeli öğrenme uygulamalarında çalışmayan durumlar, çalışanlardan daha fazla; bu öğretici de problem çözme, ayarlama ve ürünleştirme tarafında eksik kalıyor.
Genişletmeye zaman bulursam bu kısmı önceliklendirmeyi düşünüyorum: https://www.alexirpan.com/2018/02/14/rl-hard.html
Üniversitede üç dönem pekiştirmeli öğrenme aldım; ancak güncel pekiştirmeli öğrenme tekniklerinin Tetris’te basit sezgisel yöntemleri bile yenemediğini öğrenince büyük hayal kırıklığı yaşadım.
Pekiştirmeli öğrenme kavramlarında da, diğer araçlar gibi, kullanılacak doğru yeri bulmak önemli.
Derslerde çoğu zaman güçlü fikirlerin gerçek dünyada nerelerde kullanılabileceğini daha fazla gösteren kısım eksik kalıyor.
Optimal politikadan söz etmek güzel; ama nerede uygulanabileceği anlaşılmadığında ilginç bir matematik demetinden ibaret kalması kolay.
Yine de en azından temellerini öğrenmeye değer olduğunu düşünüyorum.
Gözetimli öğrenme, gözetimsiz öğrenme ve son dönemde çok ilgi gören yarı gözetimli öğrenmeden farklı olarak pekiştirmeli öğrenme, öğrenme problemini çevreyle etkileşime giren ve geri bildirim alan bir ajan biçiminde çok zarif şekilde modeller.
Bugün bile RLHF gibi LLM ince ayarları, Covariant gibi robotik şirketleri, Nvidia Eureka gibi LLM ile pekiştirmeli öğrenmeyi birleştiren araştırmalar dahil pratik başarı örnekleri var: https://www.alexirpan.com/2018/02/14/rl-hard.html, https://blogs.nvidia.com/blog/eureka-robotics-research/
OpenAI Gym’e benzer, müzik üretimi için bir derin pekiştirmeli öğrenme framework’ü yaptım.
Orijinal yazıdaki algoritmaları test etmek isterseniz kullanabilirsiniz; issue ve PR’lara da açığım.
https://github.com/chaosprint/RaveForce
Daha önce kendim derin pekiştirmeli öğrenmeye bakmıştım ama ajan anlamlı bir ilerleme kaydedememişti; istatistik veya makine öğrenmesi geçmişim de neredeyse olmadığı için neyin yanlış gittiğini debug etmek zordu.
Bu kaynağı takip edip nasıl gittiğini görmeyi düşünüyorum.
Algoritmanın gerçekten çalışıp çalışmadığını görmek istiyorsanız
solutionklasöründen çalışması muhtemel bir algoritmayı seçip doğrudan çalıştırabilirsiniz.İyi çalışırsa, ardından onu sıfırdan yeniden implemente etmenin keyfini çıkarabilirsiniz.
Bence başlangıç seviyesindekilere bunun açıkça söylenmesi gerekiyor.
Makine öğrenmesi konularında, özellikle pekiştirmeli öğrenmeyle ilgili konularda en çok eksikliğini hissettiğim nokta bu.
Birkaç yıl önce benzer bir şey yapmıştım. PPO’ya kadar gitmiyor ve tarzı da farklı.
https://learndrl.com/
Daha iyi ya da daha kötü demek istemiyorum; ama öğrenen biri için aynı bilgiyle farklı biçimlerde karşılaşmak her zaman iyidir.
MDP örneğini gördükten sonra, deterministik olmayan geçiş fonksiyonunu tanıtma biçimiyle ilgili bir öneride bulunmak istiyorum.
Mevcut örnekte ajan yukarı ya da aşağı gitmeye çalışırken yanlışlıkla sola ya da sağa giderek determinizm dışılık ortaya çıkıyor; ancak metinde ajanın hata yaptığı yeterince açıklanmadığı için
transition()fonksiyonunun yorumu başta kafa karıştırıcıydı.Ayrıca eğitim açısından determinizm dışılığın ajandan değil çevreden geldiğini söyleyerek tanıtmak daha iyi olabilir. Örneğin pürüzlü bir yüzey üzerinde hareket edildiği için paletler ya da uzuvlar hareket ettirilse bile her zaman amaçlanan sonuç alınmaz.
Şu anki ifade, eylemden rastgele eyleme, oradan da rastgele duruma giden bir fonksiyon gibi görünüyor; oysa tanım eylemden rastgele duruma giden bir fonksiyon.
Başta videoda seslendirmeyle metindeki boşlukları doldurmayı düşünüyordum; ama video yapmaya zaman bulamadığım için önce bu boşlukları düzeltmeye çalışıyorum.
Üçüncü notebook’u epey okuduktan sonra
TODOolarak işaretlenen kod bölümlerinin aslında okuyucunun implemente etmesi gereken kodlama alıştırmaları olduğunu ve ardından gelen testlerin kendi cevabını kontrol etmek için bulunduğunu fark ettim.Akıllıca bir yaklaşım, ama en baştan net görünmüyordu.
Başta büyük resmi bozmamak için küçük ayrıntıların TODO olarak bırakıldığını sanmıştım; oysa aslında o kısımlar asıl noktalar mıymış.
TODOnun kafa karıştırabileceğini düşünmemiştim; README.md’de bunların tamamlanması gereken kod bölümleri olduğunu açıkça belirtecek şekilde yönergeleri güncelledim.Teoriyi öğrenmiştim ama pekiştirmeli öğrenmeyi gerçekten kullanmak için gereken pratik bilgi eksikliğiyle arada kalmıştım; tam aradığım türde bir ders gibi görünüyor.
Güzel görünüyor; README’ye YouTube video bağlantısı eklense iyi olur.
Yine de toplulukta ilgi var gibi görünüyor, bu yüzden yapmayı deneyeceğim; bu arada README’yi düzelteceğim.