Pekiştirmeli Öğrenme
Reinforcement Learning · RL
Ajanın bir ortamda eylemler deneyerek, ödül ve cezalardan uzun vadeli kazancını maksimize edecek davranışı öğrendiği makine öğrenmesi yaklaşımı.
Pekiştirmeli öğrenmede ortada bir ajan (agent), bir ortam (environment) ve bir ödül sinyali (reward) vardır. Ajan ortamda bir eylem yapar, ortamın durumu değişir, geri bir ödül alır. Ajanın hedefi tek bir adımı değil, uzun vadede toplam ödülü maksimize edecek davranış politikasını (policy) öğrenmektir.
En kritik fark: doğru cevap önceden verilmez. Ajan deneyerek, bazen kötü kararlar alarak, bazen de gelecekte iyi olabilecek kötü görünen kararları keşfederek öğrenir. Bu keşif vs sömürü (exploration vs exploitation) dengesi, RL'in karakterini belirler.
Modern RL, derin sinir ağlarıyla birleşince derin pekiştirmeli öğrenme olur — DeepMind'ın AlphaGo'su, OpenAI'nin Dota botları, araba sürme simülasyonları, robot kollar bu sayede mümkün oldu. Büyük dil modellerinin insan tercihine göre ayarlanması (RLHF) de aslında bir RL çeşididir.
Bir bebeğin yürümeyi öğrenmesi gibi. İlk denemede düşer, beklenmedik bir destek (sandalye, duvar) bulduğunda biraz mesafe alır, biraz daha öz güven kazanır. Hiç kimse ona "şu kası şu açıyla kullan" diyen kural listesi vermez. Düşmek küçük bir ceza, yürümek küçük bir ödül; bebek bu sinyalle aylarca deneyerek dengeyi bulur. RL de tam olarak bu ödül sinyaliyle çalışır.
Bir lojistik şirketi 10.000 kuryeyi 5.000 sipariş arasında dağıtmak istiyor. Bu, klasik kurallarla çözülmeye çok zor bir problem: trafik, hava, kuryenin yorgunluğu, restoran hızı, müşteri sabırsızlığı — hepsi her saniye değişiyor.
RL ajanı binlerce simüle edilmiş günü oynar. "Kurye 47'yi sipariş 312'ye yönlendir" dediğinde ortam ona bir sayı döner: müşteri memnuniyeti yüksek, kurye yolu kısa = +8 ödül. Aynı kuryeyi yanlış siparişe gönderirse trafiğe takılır, müşteri iptal eder = -5 ceza. Yüz binlerce simülasyondan sonra ajan, hiçbir mühendisin elle yazamayacağı sezgilere sahip olur — gerçek operasyonda devreye alınır ve kuralla yazılan eski sistemden çok daha iyi sonuç verir.
import numpy as np
import gymnasium as gym
env = gym.make("FrozenLake-v1", is_slippery=False)
n_states = env.observation_space.n
n_actions = env.action_space.n
# Q-tablosu: durum × eylem → beklenen toplam ödül
Q = np.zeros((n_states, n_actions))
alpha = 0.1 # öğrenme hızı
gamma = 0.95 # gelecek ödüllerin değeri
epsilon = 0.1 # keşif oranı
for episode in range(5000):
state, _ = env.reset()
done = False
while not done:
# Keşif vs sömürü: ya rastgele dene, ya en iyiyi seç
if np.random.random() < epsilon:
action = env.action_space.sample()
else:
action = int(np.argmax(Q[state]))
next_state, reward, done, _, _ = env.step(action)
# Q-değerini güncelle (Bellman denklemi)
Q[state, action] += alpha * (
reward + gamma * np.max(Q[next_state]) - Q[state, action]
)
state = next_state- Aksiyon dizilerinin uzun vadeli sonuçları varsa (oyun, robotik, lojistik)
- Etiketli veri yok ama bir 'iyi/kötü' sinyali tanımlanabiliyorsa
- Ortam simüle edilebiliyorsa — RL bol veriyle uçar
- Klasik optimizasyon zor: çok değişkenli, dinamik ortamlar
- Tek seferlik kararlar için — denetimli öğrenme yeter
- Simülasyon yoksa ve gerçek dünyada deneme pahalıysa (tıbbi karar)
- Ödül fonksiyonunu tanımlamak imkânsızsa
- Yorumlanabilirlik kritikse — RL politikaları çoğunlukla kara kutu
Ödül hilesi (reward hacking)
Ajan, asıl niyetini değil ödülü maksimize eder. Bir robotik kola 'kutuyu kaldır' diye ödül verirsen, kutuyu sadece kaldırıp bırakmayı öğrenebilir. Ödül tasarımı, RL'in en zor mühendislik problemidir.
Keşif vs sömürü dengesizliği
Çok keşif yaparsa öğrenme yavaş, çok sömürü yaparsa lokal minimumda takılır. Epsilon-greedy, decaying epsilon, entropy bonus gibi tekniklerle dengelenir.
Veri verimsizliği
RL milyonlarca deneme ister. Atari oyunlarında saniyede yüz binlerce kare oynayabiliyor olman lazım. Gerçek dünyada bu lüks yok — bu yüzden simülasyon ve sim-to-real teknikleri kritik.