Last chance! 50% off DataCamp Premium
Sale ends in
Pekiştirmeli Öğrenme (RL), denetimli ve denetimsiz öğrenmeyle birlikte üç ana makine öğrenmesi paradigmasından biridir. RL’de bir ajan, toplam ödülleri maksimize etmek için çevresiyle etkileşim kurmayı öğrenir. Deneme-yanılma yoluyla farklı çevresel koşullarda en iyi eylemi öğrenir. İnsan Geri Bildirimiyle Pekiştirmeli Öğrenme (RLHF), ajanın her adımda insan girdilerine göre davranışını değiştirmesine olanak tanır.
RL; otonom araçlar, otomatik alım-satım, video oyunlarında bilgisayar oyuncuları, robot eğitimi ve daha birçok problemi çözer. RL algoritmalarını uygulamak için derin sinir ağları kullanıldığında buna Derin Pekiştirmeli Öğrenme denir.
Bu öğreticide, pekiştirmeli öğrenme algoritmalarını geliştirmek ve karşılaştırmak için açık kaynaklı bir Python kütüphanesi olan Gymnasium’a nasıl başlayacağınızı göstereceğim. Kurulumu nasıl yapacağınızı, çeşitli RL ortamlarını nasıl keşfedeceğinizi ve bir RL algoritmasını uygulamak için Python ile basit bir ajanı nasıl oluşturacağınızı anlatacağım.
Gymnasium, RL algoritmalarının geliştirilmesini desteklemek üzere tasarlanmış açık kaynaklı bir Python kütüphanesidir. RL’de araştırma ve geliştirmeyi kolaylaştırmak için Gymnasium şu imkanları sunar:
Geliştiriciler RL algoritmaları oluşturabilir ve aşağıdaki görevler için API çağrılarını kullanabilir:
OpenAI, Gym’i şirketin iş öncelikleri arasında olmadığı için geliştirmeye kayda değer kaynak ayırmadı. Farama Vakfı, RL kütüphanelerini uzun vadede standartlaştırmak ve sürdürmek amacıyla kuruldu. Gymnasium, Farama Vakfı’nın OpenAI’nin Gym’inden çatalladığı (fork) bir projedir. Gymnasium 0.26.2, Gym 0.26.2 için doğrudan yerine geçecek bir sürümdür. Bu çatalla birlikte Farama; tüm API çağrıları için sınıf tabanlı yöntemlerin yanı sıra fonksiyonel yöntemler eklemeyi, vektör ortamlarını desteklemeyi ve sarmalayıcıları iyileştirmeyi hedefliyor. Genel amaç, çerçeveyi daha temiz ve verimli hale getirmektir.
Gymnasium, NumPy ve PyTorch gibi çeşitli bağımlılık programlarının belirli sürümlerine (en son sürümlerine değil) ihtiyaç duyar. Bu nedenle, Gymnasium’u kurmak, kullanmak ve RL programlarını çalıştırmak için yeni bir Conda veya venv ortamı ya da yeni bir not defteri oluşturmanızı öneririz.
Bu öğreticiyle birlikte ilerlemek için şu DataLab çalışma kitabını kullanabilirsiniz.
Gymnasium’u bir sunucuya ya da yerel makineye kurmak için şunu çalıştırın:
$ pip install gymnasium
Google Colab veya DataCamp’in DataLab’i gibi bir Not Defteri kullanarak kurmak için şunu kullanın:
!pip install gymnasium
Yukarıdaki komut, Gymnasium’u ve doğru sürüm bağımlılıklarını kurar.
Kasım 2024 itibarıyla Gymnasium, 60’tan fazla yerleşik ortam içerir. Mevcut yerleşik ortamları gezmek için aşağıdaki örnekte gösterildiği gibi gym.envs.registry.all() işlevini kullanın:
import gymnasium as gym
for i in gym.envs.registry.keys():
print(i)
Ayrıca Gymnasium ana sayfasını ziyaret edebilirsiniz. Sol sütunda tüm ortamlara giden bağlantılar bulunur. Her ortamın web sayfası; eylemler, durumlar vb. hakkında ayrıntılar içerir.
Ortamlar, Classic Control, Box2D ve daha fazlası gibi kategorilere ayrılmıştır. Aşağıda, her gruptaki bazı yaygın ortamları listeliyorum:
Yerleşik ortamların yanı sıra, Gymnasium aynı API’yi kullanarak birçok harici ortam ile de kullanılabilir.
Bu öğreticide kanonik Classic Control ortamlarından birini kullanacağız. Belirli bir ortamı içe aktarmak için .make() komutunu kullanın ve ortamın adını argüman olarak geçin. Örneğin, CartPole (sürüm 1) tabanlı yeni bir ortam oluşturmak için aşağıdaki komutu kullanın:
import gymnasium as gym
env = gym.make("CartPole-v1")
Kısaca, Pekiştirmeli Öğrenme çevresiyle etkileşime giren bir ajandan (örneğin bir robot) oluşur. Bir politika, ajanın eylemlerine karar verir. Ajanın eylemlerine bağlı olarak, ortam her zaman adımında bir ödül (veya ceza) verir. Ajan, kazandığı toplam ödülleri maksimize eden en iyi politikayı RL sayesinde bulur.
Bir RL ortamının temel bileşenleri şunlardır:
Gözlem, ajanın ortam hakkında topladığı bilgidir. Örneğin bir robot olan bir ajan, sensörler kullanarak çevresel bilgi toplayabilir. İdeal olarak ajan, ortamın tüm yönlerini tanımlayan tam durumu gözlemleyebilmelidir. Pratikte ajan, durum için vekil olarak gözlemlerini kullanır. Bu nedenle, ajan’ın eylemlerine gözlemler karar verir.
Bir uzay, matematiksel bir kümeye benzer. Ögelerin uzayı X, X’in tüm olası örneklerini içerir. X uzayı aynı zamanda X türündeki tüm ögelerin yapısını (sözdizimi ve biçimi) tanımlar. Her Gymnasium ortamının iki uzayı vardır: eylem uzayı, action_space ve gözlem uzayı, observation_space. Hem eylem hem gözlem uzayları, üst sınıf gymnasium.spaces.Space’ten türetilir.
Gözlem uzayı, tüm olası gözlemleri içeren uzaydır. Aynı zamanda gözlemlerin hangi formatta saklanacağını tanımlar. Gözlem uzayı genellikle veri türü Box olan bir nesne olarak temsil edilir. Bu bir ndarray’dir ve gözlemlerin parametrelerini açıklar. Kutu (box), her boyutun sınırlarını belirtir. Bir ortamın gözlem uzayını observation_space yöntemiyle görüntüleyebilirsiniz:
print("observation space: ", env.observation_space)
CartPole-v1 ortamı için çıktı aşağıdaki örneğe benzer:
observation space: Box([-4.8 -inf -0.41887903 -inf], [4.8 inf 0.41887903 inf], (4,), float32)
Bu örnekte, CartPole-v1 gözlem uzayı 4 boyutludur. Gözlem dizisinin 4 öğesi şunlardır:
Tek bir gözlem dizisi örneği görmek için .reset() komutunu kullanın.
observation, info = env.reset()
print("observation: ", observation)
CartPole-v1 ortamı için çıktı aşağıdaki örneğe benzer:
[ 0.03481963 -0.0277232 0.01703267 -0.04870504]
Bu dizideki dört öğe, daha önce açıklandığı gibi dört gözlenen niceliğe (araba konumu, araba hızı, direk açısı, direğin açısal hızı) karşılık gelir.
Eylem uzayı, ajanın alabileceği tüm olası eylemleri içerir. Eylem uzayı ayrıca eylemlerin hangi formatta temsil edildiğini tanımlar. Bir ortamın eylem uzayını action_space yöntemiyle görüntüleyebilirsiniz:
print("action space: ", env.action_space)
CartPole-v1 ortamı için çıktı aşağıdaki örneğe benzer:
action space: Discrete(2)
CartPole-v1 ortamında eylem uzayı kesiklidir. Ajanın alabileceği toplam iki eylem vardır:
Önceki bölümlerde RL ve Gymnasium’un temel kavramlarını keşfettik. Bu bölümde Gymnasium’u kullanarak bir RL ajanı nasıl oluşturacağınızı göreceksiniz.
İlk adım, ortamın bir örneğini oluşturmaktır. Yeni ortamlar oluşturmak için .make() yöntemini kullanın.
env = gym.make('CartPole-v1')
Ajanın etkileşimleri, ortamın durumunu değiştirir. .reset() yöntemi ortamı başlangıç durumuna sıfırlar. Varsayılan olarak ortam rastgele bir duruma başlatılır. Program her çalıştığında ortamı aynı duruma başlatmak için SEED parametresini .reset() yöntemiyle kullanabilirsiniz. Aşağıdaki kod bunun nasıl yapıldığını gösterir:
SEED = 1111
env.reset(seed=SEED)
Eylem örneklemesi de rastgelelik içerir. Bu rastgeleliği kontrol etmek ve tamamen çoğaltılabilir bir eğitim yolu elde etmek için NumPy ve PyTorch’un rastgele üreteçlerini tohumlayabiliriz:
np.random.seed(SEED)
torch.manual_seed(SEED)
Markov sürecinin her adımında, ajan rastgele bir eylem seçip terminal duruma ulaşana kadar ortamı keşfedebilir. Eylemleri rastgele seçerek:
Ajanı, önceki deneyimlere (ortamla etkileşimlerine) dayalı olarak eylem seçimini optimize edecek şekilde eğitmek, uzun vadeli ödülleri maksimize etmek için daha verimlidir.
Eğitilmemiş ajan, rastgele başlatılmış bir politikaya dayalı rastgele eylemlerle başlar. Bu politika genellikle bir sinir ağı olarak temsil edilir. Eğitim sırasında ajan, ödülleri maksimize eden optimal politikayı öğrenir. RL’de eğitim süreci politika optimizasyonu olarak da adlandırılır.
Çeşitli politika optimizasyonu yöntemleri vardır. Bellman denklemleri, RL politikalarının değerinin nasıl hesaplanacağını ve en iyi politikanın nasıl belirleneceğini açıklar. Bu öğreticide, policy gradients adı verilen basit bir teknik kullanacağız. Proximal Policy Optimization (PPO) gibi başka yöntemler de vardır.
Policy gradient kullanan bir RL ajanı oluşturmak için, politikayı uygulayacak bir sinir ağı kurar, adım adım ödüllerden ve eylem olasılıklarından getirileri ve kaybı hesaplayan işlevler yazar ve politikayı standart geri yayılım tekniklerini kullanarak yinelemeli olarak güncelleriz.
Politikayı uygulamak için bir sinir ağı kullanırız. CartPole-v1 basit bir ortam olduğundan, şu özelliklere sahip bir sinir ağı kullanırız:
Dolayısıyla politika ağının işlevi, gözlenen durumları eylemlere eşlemektir. Bir giriş gözlemi verildiğinde doğru eylemi tahmin eder. Aşağıdaki kod politika ağını uygular:
class PolicyNetwork(nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim, dropout):
super().__init__()
self.layer1 = nn.Linear(input_dim, hidden_dim)
self.layer2 = nn.Linear(hidden_dim, output_dim)
self.dropout = nn.Dropout(dropout)
def forward(self, x):
x = self.layer1(x)
x = self.dropout(x)
x = F.relu(x)
x = self.layer2(x)
return x
Belirtildiği gibi, Markov sürecinin her adımında ortam, ajanın eylemine ve durumuna bağlı olarak bir ödül verir. RL’de hedef, toplam getiriyi maksimize etmektir.
Pratikte ödülleri toplarken yaygın olarak şunlar yapılır:
Aşağıdaki kod bunun nasıl yapılacağını gösterir:
def calculate_stepwise_returns(rewards, discount_factor):
returns = []
R = 0
for r in reversed(rewards):
R = r + R * discount_factor
returns.insert(0, R)
returns = torch.tensor(returns)
normalized_returns = (returns - returns.mean()) / returns.std()
return normalized_returns
İleri geçiş, ajanın geçerli politikaya göre terminal duruma ulaşana kadar çalıştırılmasını ve adım adım ödüllerin ve eylem olasılıklarının toplanmasını içerir. Aşağıdaki adımlar ileri geçişin nasıl uygulanacağını açıklar:
.step() işlevini kullanın:Softmax işlevini kullanın.def forward_pass(env, policy, discount_factor):
log_prob_actions = []
rewards = []
done = False
episode_return = 0
policy.train()
observation, info = env.reset()
while not done:
observation = torch.FloatTensor(observation).unsqueeze(0)
action_pred = policy(observation)
action_prob = F.softmax(action_pred, dim = -1)
dist = distributions.Categorical(action_prob)
action = dist.sample()
log_prob_action = dist.log_prob(action)
observation, reward, terminated, truncated, info = env.step(action.item())
done = terminated or truncated
log_prob_actions.append(log_prob_action)
rewards.append(reward)
episode_return += reward
log_prob_actions = torch.cat(log_prob_actions)
stepwise_returns = calculate_stepwise_returns(rewards, discount_factor)
return episode_return, stepwise_returns, log_prob_actions
Kayıp (loss), gradyan inişinin uygulandığı niceliği temsil eder. RL’de amaç, getirileri maksimize etmektir. Bu nedenle, beklenen getiri değerini kayıp için bir vekil olarak kullanırız. Beklenen getiri değeri, adım adım beklenen getiriler ile adım adım eylemlerin log olasılıklarının çarpımı olarak hesaplanır. Aşağıdaki kod kaybı hesaplar:
def calculate_loss(stepwise_returns, log_prob_actions):
loss = -(stepwise_returns * log_prob_actions).sum()
return loss
Politikayı güncellemek için, kayıp fonksiyonu açısından geri yayılım çalıştırırsınız. Aşağıdaki update_policy() yöntemi calculate_loss() yöntemini çağırır. Ardından bu kayıp üzerinde geri yayılım çalıştırarak politika parametrelerini, yani politika ağının model ağırlıklarını günceller.
def update_policy(stepwise_returns, log_prob_actions, optimizer):
stepwise_returns = stepwise_returns.detach()
loss = calculate_loss(stepwise_returns, log_prob_actions)
optimizer.zero_grad()
loss.backward()
optimizer.step()
return loss.item()
Getirilerin gradyanına dayalı olarak politikayı güncellemeye policy gradient yöntemi denir.
Artık politikayı eğitmek ve değerlendirmek için gereken tüm bileşenlere sahibiz. Eğitim döngüsünü aşağıdaki adımlarda açıklandığı gibi uygularız:
Başlamadan önce hiperparametreleri tanımlar, bir politika örneği oluşturur ve bir optimize edici yaratırız:
MAX_EPOCHS politikayı eğitmek için yürütmeyi planladığımız azami yineleme sayısıdır. DISCOUNT_FACTOR gelecekteki zaman adımlarından gelen ödüllerin göreli önemini belirler. 1’lik bir iskonto faktörü tüm ödüllerin eşit derecede önemli olduğu, 0 değeri ise yalnızca mevcut zaman adımının ödülünün önemli olduğu anlamına gelir. N_TRIALS ajanın performansını değerlendirmek için getirilerin ortalamasını aldığımız bölüm sayısıdır. N_TRIALS bölüm üzerindeki ortalama getiri eşik değerin üzerindeyse eğitimin başarılı olduğuna karar veririz. REWARD_THRESHOLD: Politika eşik değerden daha büyük bir getiri elde edebiliyorsa başarılı kabul edilir. DROPOUT rastgele sıfırlanacak ağırlıkların oranını belirler. Dropout işlevi, model ağırlıklarının bir kısmını rastgele sıfırlar. Bu, belirli nöronlara bağımlılığı azaltır ve aşırı uyumu önleyerek ağı daha sağlam hale getirir.LEARNING_RATE her adımda politika parametrelerinin ne kadar değişebileceğini belirler. Her yinelemede parametre güncellemesi, gradyan ile öğrenme oranının çarpımıdır. PolicyNetwork sınıfının bir örneği olarak tanımlayın. Politikayı eğitmek için, ortalama getiri (N_TRIALS üzerinde) ödül eşiğinden büyük olana kadar eğitim adımlarını yinelemeli olarak çalıştırırız:
N_TRIALS üzerindeki ortalama getiri ödül eşiğini aşıyor mu kontrol edin. Aşağıdaki kod bu adımları uygular:
def main():
MAX_EPOCHS = 500
DISCOUNT_FACTOR = 0.99
N_TRIALS = 25
REWARD_THRESHOLD = 475
PRINT_INTERVAL = 10
INPUT_DIM = env.observation_space.shape[0]
HIDDEN_DIM = 128
OUTPUT_DIM = env.action_space.n
DROPOUT = 0.5
episode_returns = []
policy = PolicyNetwork(INPUT_DIM, HIDDEN_DIM, OUTPUT_DIM, DROPOUT)
LEARNING_RATE = 0.01
optimizer = optim.Adam(policy.parameters(), lr = LEARNING_RATE)
for episode in range(1, MAX_EPOCHS+1):
episode_return, stepwise_returns, log_prob_actions = forward_pass(env, policy, DISCOUNT_FACTOR)
_ = update_policy(stepwise_returns, log_prob_actions, optimizer)
episode_returns.append(episode_return)
mean_episode_return = np.mean(episode_returns[-N_TRIALS:])
if episode % PRINT_INTERVAL == 0:
print(f'| Episode: {episode:3} | Mean Rewards: {mean_episode_return:5.1f} |')
if mean_episode_return >= REWARD_THRESHOLD:
print(f'Reached reward threshold in {episode} episodes')
break
Son olarak, politikayı eğitmek için main() işlevini çağırın:
main()
Yukarıdaki algoritmayı doğrudan çalıştırmak ve RL ile CartPole ortamını çözmek için bu DataLab çalışma kitabını kullanın.
Bir RL algoritmasının nasıl uygulanacağını gösterdikten sonra, şimdi pratikte yaygın olarak kullanılan bazı ileri teknikleri tartışalım.
RL algoritmalarını sıfırdan uygulamak, özellikle karmaşık ortamlar ve son teknoloji politikalar için uzun ve zorlu bir süreçtir.
Daha pratik bir alternatif olarak Stable Baselines3 gibi yazılımlar kullanılabilir. Denenmiş ve test edilmiş RL algoritması uygulamalarıyla birlikte gelir. Önceden eğitilmiş ajanlar, eğitim betikleri, değerlendirme araçları ve grafik çizme ile video kaydetme modüllerini içerir.
Ray RLib, RL için bir diğer popüler araçtır. RLib, ölçeklenebilir bir çözüm olarak tasarlanmıştır ve RL algoritmalarını çoklu GPU sistemlerde uygulamayı kolaylaştırır. Ayrıca, yeni olanaklar sunan çok ajanlı RL’yi de destekler. Örneğin:
Hem RLib hem de Stable Baselines3 ile OpenAI Gymnasium’dan ortamları içe aktarabilir ve kullanabilirsiniz.
Gymnasium ile paketlenen ortamlar, yeni RL stratejilerini test etmek ve politikaları eğitmek için doğru seçimdir. Ancak çoğu pratik uygulama için, çözmek istediğiniz problemi doğru şekilde yansıtan bir ortam oluşturmanız ve kullanmanız gerekir. Gymnasium’u özel bir ortam oluşturmak için kullanabilirsiniz. Gymnasium özel ortamlarını kullanmanın avantajı, RLib ve Stable Baselines3 gibi birçok harici aracın Gymnasium API yapısı ile çalışacak şekilde önceden yapılandırılmış olmasıdır.
Gymnasium’da özel bir ortam oluşturmak için şunları tanımlamanız gerekir:
reset() işlevi çağrıldığında). step() işlevi çağrıldığında). Daha fazlasını öğrenmek için Gymnasium’un özel ortam oluşturma rehberini takip edin.
Bu öğretideki kod, politika gradyanı algoritmasının CartPole ortamında nasıl uygulanacağını gösterdi. Bu, kesikli eylem uzayına sahip basit bir ortamdır. RL’i daha iyi anlamak için aynı politika gradyanı algoritmasını (ve PPO gibi diğer algoritmaları) diğer ortamlarda uygulamanızı öneririz.
Örneğin, Pendulum ortamı sürekli bir eylem uzayına sahiptir. Herhangi bir durumda sarkaca uygulanan torkun (büyüklük ve yön) tek bir sürekli değişkenle temsil edilmesinden oluşur. Bu tork, -2 ile +2 arasında herhangi bir değer alabilir.
Farklı ortamlarda çeşitli algoritmalarla denemeler yapmak, farklı RL çözümlerini ve bu çözümlerin zorluklarını daha iyi anlamanıza yardımcı olur.
RL ortamları genellikle robotlar, sarkaçlar, dağ arabaları, video oyunları vb. içerir. Ajanın ortam içindeki eylemlerini görselleştirmek, politikanın performansına dair daha sezgisel bir anlayış sağlar.
Gymnasium’da env.render() yöntemi, ajanın ortamla etkileşimlerini görselleştirir. Ortamın mevcut durumunu—oyun ekranlarını, sarkaç veya araba direğinin konumunu vb.—grafiksel olarak gösterir. Ajanın eylemlerinin ve ortamın tepkilerinin görsel geri bildirimi, ajanın performansını ve eğitim sürecindeki ilerlemesini izlemeye yardımcı olur.
Dört render modu vardır: “human”, “rgb_array”, “ansi” ve “rgb_array_list”. Ajanın performansını görselleştirmek için “human” render modunu kullanın. Render modu, ortam başlatılırken belirtilir. Örneğin:
env = gym.make(‘CartPole-v1’, render_mode=’human’)
Görüntülemeyi gerçekleştirmek için, ajanın her eyleminden sonra ( .step() yöntemi çağrılarak) .render() yöntemini çağırın. Aşağıdaki sözde kod bunun nasıl yapılacağını gösterir:
while not done:
…
step, reward, terminated, truncated, info = env.step(action.item())
env.render()
…
Gymnasium, karmaşık RL ortamlarıyla arayüz kurmayı kolaylaştırır. Bununla birlikte, birçok bağımlılığı olan ve sürekli güncellenen bir yazılımdır. Bu nedenle, birkaç yaygın hata türüne dikkat etmek önemlidir.
CartPole-v1 ve CartPole-v0. Ortamın davranışı her iki sürümde de aynı olsa da bölüm uzunluğu, ödül eşiği gibi bazı parametreler farklı olabilir. Bir sürümde eğitilmiş bir politika, aynı ortamın başka bir sürümünde aynı performansı göstermeyebilir. Her ortam sürümü için eğitim parametrelerini güncellemeniz ve politikayı yeniden eğitmeniz gerekir. numpy 2.1.3 ve torch 2.5.1’dir. Ancak Gymnasium, torch 1.13.0 ve numpy 1.23.3 ile en iyi çalışır. Bu bağımlılıklar önceden kurulmuş bir ortama Gymnasium’u yüklerseniz sorunlarla karşılaşabilirsiniz. Gymnasium ile yeni bir Conda ortamında kurulum ve çalışma yapmanızı öneririz. Bu öğreticide RL’in temel ilkelerini inceledik, çeşitli RL ortamlarıyla arayüz kurmak için temiz bir API sunan bir yazılım paketi olarak Gymnasium’u tartıştık ve basit bir RL algoritmasını uygulamak ve bunu bir Gymnasium ortamında kullanmak için nasıl bir Python programı yazacağınızı gösterdik.
Bu öğreticide temelleri anladıktan sonra, taksi rota optimizasyonu ve hisse senedi alım-satım simülasyonları gibi pratik problemleri çözmek için RL kavramlarını uygulamak üzere Gymnasium ortamlarını kullanmanızı öneririm.
Gymnasium, RL algoritmalarını test etmek ve geliştirmek için birçok hazır ortamla birlikte gelir. Bu ortamlar ve yeni özel ortamlar için arayüzü standartlaştırır. Bu da RL algoritmalarının uygulanmasını ve değerlendirilmesini kolaylaştırır.
Hayır. 60’tan fazla hazır ortamın yanı sıra, Gymnasium durum ve eylem uzaylarını tanımlayarak ve ortamın çeşitli eylemlere nasıl tepki vereceğini belirleyerek yeni ortamlar oluşturmanıza olanak tanır.
Özetle, Farama Vakfı tarafından bakım yapılan Gymnasium, artık OpenAI tarafından bakım yapılmayan Gym’in yeni ve yükseltilmiş sürümüdür. Gymnasium’un, Gym 0.26.2 için doğrudan yerine geçecek şekilde çalışması beklenir.
Politika tabanlı yöntemlerde, policy gradient gibi, ajan doğrudan politika parametrelerini değiştirerek hangi politikanın en büyük beklenen getiriyi sağladığını bulur.
Değer tabanlı yöntemlerde ise ajan değer fonksiyonu üzerinde eğitilir. Optimal değer fonksiyonunun öğrenilmesi, optimal politikanın türetilmesine yardımcı olur.
Kodları sıfırdan yazmak, farklı RL algoritmalarını anlamanın en iyi yoludur. Üretim kullanımı için Stable Baselines3, RLib ve CleanRL gibi araçlar vardır. Bu araçlar, yaygın RL algoritmalarının önceden oluşturulmuş dağıtımlarını içerir; ortamınıza bağlı olarak bunları yapılandırmanız ve ince ayar yapmanız gerekir.
Bu kurslarla pekiştirmeli öğrenme hakkında daha fazla bilgi edinin!
Kurs
Kurs
Kurs
blog
Dario Radečić
15 dk.

blog
Abid Ali Awan
14 dk.
Eğitim
Adel Nehme
Eğitim
Kurtis Pykes
8 dk.