4 puan yazan GN⁺ 2024-05-06 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-05-06
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

    • Python’a ne kadar bağımlı olduğunu, yoksa kaynağın başka dillerle de takip edilip edilemeyeceğini merak ediyorum.
    • Bugün ilk üç notebook’u denedim; oldukça iyiydi. Atari Gymnasium’ı da ilk kez kullandım, memnun kaldım ve eğlenceliydi.
    • Güncel teknikleri ve sonuçları ayrıca derleyen bir SoTA sayfası olsa iyi olurdu.
  • İ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.

    • Yaygın tavsiyenin “doğru kombinasyonu bulana kadar hiperparametreleri ayarlayın” olduğu doğru; bu bazen yardımcı da oluyor. Ama sorun genellikle problem uzayı ve formülasyon, algoritmanın kendisi, rastgele tohuma bağlı büyük performans varyansı gibi birçok köşede saklı oluyor.
      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.

    • Şirketteki bazı iş problemlerini çok kollu slot makinesi problemi olarak modelleyip en büyük maliyeti %10 azalttım; ayrıca çeşitli özelliklerde neyin işe yarayıp neyin yaramadığını anlamamızı sağlayan otomatik bir doğruluk sinyali de sundu.
      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.
    • Pekiştirmeli öğrenmenin büyük hayal kırıklığı yaratabileceğine katılıyorum; gerçekten çalışır hale getirmenin zor olduğuna da katılıyorum.
      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/
    • Pekiştirmeli öğrenme şu anda tuhaf bir ara bölgede gibi. Kimse onu iyi çalıştırmanın yolunu kesin olarak bilmiyor, ama en üst düzey makine öğrenmesi araştırmacılarının çoğu yapay zekanın bir sonraki ilerlemesi için bunun temel bir bileşen olduğunu düşünüyor gibi görünüyor.
  • 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.

    • Ajanın sonunda ilerleme gösterip göstermeyeceğini ve bu notebook’ların az da olsa yardımcı olup olmayacağını merak ediyorum.
      Algoritmanın gerçekten çalışıp çalışmadığını görmek istiyorsanız solution klasö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.
    • Bu tür kaynaklar harika, ancak pekiştirmeli öğrenmenin kendisi oldukça yoğun ve ağır bir konu olduğu için, özündeki zorluğu azaltmanın bir yolu var mı emin değilim.
      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.

    • Notebook’ta bunun kesinlikle kafa karıştırıcı olabileceğini gördüm ve determinizm dışılığın ajanın yanlışlıkla başka bir eylem seçmesinden değil, çevre dinamiklerinin olasılıksal niteliğinden geldiğinin biraz daha netleşmesi için küçük bir commit gönderdim.
      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 TODO olarak 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.

    • Bu notebook’ların nasıl yardımcı olduğunu ve takip etme deneyiminizin nasıl olduğunu merak ediyorum; her türlü geri bildirime açığım.
  • Güzel görünüyor; README’ye YouTube video bağlantısı eklense iyi olur.

    • README’deki bir hataydı; henüz YouTube videosu hazırlayamadım.
      Yine de toplulukta ilgi var gibi görünüyor, bu yüzden yapmayı deneyeceğim; bu arada README’yi düzelteceğim.