Yakınsal Politika Optimizasyonu (PPO)
Kırpılmış vekil amaç, GAE avantaj tahmini, stable-baselines3 ile PPO.
Yakınsal Politika Optimizasyonu (PPO), CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
PPO Neden?
PPO, günümüzde kullanılan varsayılan RL algoritmasıdır: kararlı, örnek açısından verimli ve ayarlanması kolaydır. Politika gradyanlarının temel bir sorununu, politikayı bozan aşırı büyük güncellemeleri, her güncellemede politikanın ne kadar değişebileceğini sınırlayarak çözer.
Büyük Güncellemelerin Tehlikesi
Aşırı büyük tek bir politika güncellemesi performansı çökertir ve RL mevcut politikaya bağlı olduğundan toparlanmak zordur. PPO, güvende kalmak için her güncellemeyi geçerli politikaya yakın tutar.
Olasılık Oranı
PPO, yeni eylem olasılıklarının eski eylem olasılıklarına oranını izler: ratio = pi_new(a|s) / pi_old(a|s). 1'e yakın bir oran, politikanın çok az değiştiğini; 1'den uzak bir oran ise büyük bir değişim olduğunu gösterir.
ratio = torch.exp(new_log_prob - old_log_prob)Kırpılmış Amaç Fonksiyonu
PPO'nun ayırt edici özelliği kırpılmış vekil amaç fonksiyonudur. Oranı avantajla çarpar, ancak oranı [1-eps, 1+eps] aralığına kırpar; böylece politikayı fazla değiştirme teşviğini ortadan kaldırır.
clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()Kırpma Eşiği epsilon
eps (genellikle 0.2), kırpma eşiğidir. Oranın 1'den ne kadar uzaklaşabileceğini sınırlar; böylece avantaj büyük olsa bile politika güncellemesi sınırlı ve kararlı kalır.
eps = 0.2 # allow at most +/-20% change in probabilitymin() ve Kırpma Neden İşe Yarar
Kırpılmış ve kırpılmamış amaç fonksiyonlarının min değerini almak, sınırı kötümser hâle getirir: kırpma aralığının ötesindeki iyileştirmeler ek ödül sağlamaz; dolayısıyla eniyileyicinin sınırı aşması için bir nedeni kalmaz.
Genelleştirilmiş Avantaj Tahmini
PPO, avantajları GAE ile tahmin eder; GAE, gamma ve lambda parametrelerini kullanarak birden çok adımdaki getirileri birleştirir. GAE, düzgün ve güvenilir avantaj tahminleri sağlamak için yanlılık ile varyans arasında denge kurar.
def gae(rewards, values, gamma=0.99, lam=0.95):
adv, gae_acc = [], 0
for t in reversed(range(len(rewards))):
delta = rewards[t] + gamma * values[t+1] - values[t]
gae_acc = delta + gamma * lam * gae_acc
adv.insert(0, gae_acc)
return advToplu İş Başına Birden Çok Dönem
REINFORCE'tan farklı olarak PPO, toplanan her veri grubunu birkaç optimizasyon dönemi boyunca yeniden kullanır. Kırpma bunu güvenli hâle getirerek örnek verimliliğini büyük ölçüde artırır.
for _ in range(n_epochs):
# recompute ratio and clipped loss on the same batch
optimizer.zero_grad()
loss.backward()
optimizer.step()Stable-Baselines3 ile PPO
Uygulamada PPO'yu elle yazmanız nadiren gerekir. Stable-Baselines3, sınanmış bir uygulama sağlar. Bunu politika türü, ortam ve ayrıntı düzeyiyle oluşturun, ardından learn çağrısını yapın.
from stable_baselines3 import PPO
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)Eğitilmiş Agent'ı Kullanma
Eğitimden sonra yeni gözlemler için eylemleri almak üzere predict kullanın. Değerlendirme sırasında örnekleme yapmak yerine en olası eylemi seçmek için deterministic=True ayarını yapın.
obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")PPO Neden Öne Çıkar
PPO; kararlı kırpılmış güncellemeleri, GAE avantajlarını ve veri yeniden kullanımını, çok az ayarla pek çok görevde çalışan sağlam ve genel bir algoritmada birleştirir. Robotikten RLHF'ye kadar her alanda kullanılmasının nedeni budur.
Hızlı Kontrol
PPO anlayışınızı sınayın.
Özet: PPO
Güncellemeleri sınırlamak için olasılık oranını ve bir kırpma eşiği olan eps değerini kullanan PPO'nun kırpılmış vekil amaç fonksiyonunu, avantaj tahmini için GAE'yi ve birden çok dönem boyunca veri yeniden kullanımını öğrendiniz. PPO'yu Stable-Baselines3 içinde PPO("MlpPolicy", env, verbose=1) ile kolayca çalıştırdınız.
Sıkça Sorulan Sorular
“Yakınsal Politika Optimizasyonu (PPO)” dersi ücretsiz mi?
Evet — “Yakınsal Politika Optimizasyonu (PPO)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“Yakınsal Politika Optimizasyonu (PPO)” dersinde ne öğreneceğim?
Kırpılmış vekil amaç, GAE avantaj tahmini, stable-baselines3 ile PPO. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Yakınsal Politika Optimizasyonu (PPO)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Politika Gradyanı Yöntemleri: REINFORCE
- Aktör-Eleştirmen Yöntemleri (A2C)
- Yakınsal Politika Optimizasyonu (PPO)
- Özel Gymnasium Ortamları