Q Python'da Öğrenme: Nedir, Tanımlar [Kodlama Örnekleri]

Yayınlanan: 2020-03-26

Takviyeli öğrenme, bir öğrenme aracısının sürekli etkileşimler yoluyla çevresine göre en iyi şekilde davranmayı öğrendiği zamandır. Ajan, devletler olarak da bilinen çeşitli durumlardan geçer. Tahmin edebileceğiniz gibi, pekiştirmeli öğrenmenin dünyamızda birçok uygulaması var. Veri bilimi algoritmaları hakkında daha fazla bilgi edinmek istiyorsanız daha fazla bilgi edinin.

Ayrıca, birçok algoritmaya sahiptir, en popülerleri arasında Q öğrenmedir . Bu yazıda, bu algoritmanın ne olduğunu ve nasıl çalıştığını tartışacağız.

O halde lafı fazla uzatmadan başlayalım.

İçindekiler

Q Öğrenme nedir?

Q öğrenme, bir pekiştirmeli öğrenme algoritmasıdır ve belirli bir durum için en iyi hareket tarzını bulmaya odaklanır. Politika dışıdır çünkü Q öğrenme işlevinin öğrendiği eylemler mevcut politikanın dışındadır, dolayısıyla bir tane gerektirmez. Toplam ödülünü artıran bir politika öğrenmeye odaklanır. Öğrenme aracısının davranışını geliştirmek için eylem değerlerini (veya Q değerlerini) kullanan basit bir pekiştirmeli öğrenme şeklidir.

Q öğrenme, anlaşılması ve uygulanması zahmetsiz olduğu için pekiştirmeli öğrenmede en popüler algoritmalardan biridir. Q öğrenimindeki 'Q' kaliteyi temsil eder. Daha önce de belirttiğimiz gibi, Q öğrenme belirli bir durum için en iyi eylemi bulmaya odaklanır. Ve kalite, belirli bir eylemin ne kadar yararlı olduğunu ve ulaşmanızda size hangi ödülün yardımcı olabileceğini gösterir.

Önemli Tanımlar

Nasıl çalıştığını tartışmaya başlamadan önce, q öğrenmenin bazı temel kavramlarına bir göz atmalıyız. Başlayalım.

Q-Değerleri

Q değerleri, Eylem değerleri olarak da bilinir. Q(S, A) ile temsil edilirler ve size S durumunda A eyleminin ne kadar iyi olacağına dair bir tahmin verirler. Model, daha sonra tartıştığımız Zamansal Fark Güncelleme kuralını kullanarak bu tahmini yinelemeli olarak hesaplayacaktır. bu bölümde.

Bölümler ve Ödüller

Bir etmen bir başlangıç ​​durumundan başlar, birkaç geçişten geçer ve daha sonra eylemlerine ve ortamına göre mevcut durumundan bir sonrakine geçer. Temsilci harekete geçtiğinde, bir miktar ödül alır. Ve geçişler mümkün olmadığında, bölümün tamamlanmasıdır.

TD-Güncelleme (Geçici Fark)

İşte TD-Güncelleme veya Geçici Fark kuralı:

Q(S,A) Q(S,A) + (R + Q(S',A')-Q(S,A))

Burada S, ajanın mevcut durumunu temsil ederken, S' sonraki durumu temsil eder. A, mevcut eylemi temsil eder, A', Q değeri tahminine göre aşağıdaki en iyi eylemi temsil eder, R, mevcut eyleme göre mevcut ödülü gösterir, indirim faktörünü temsil eder ve adım uzunluğunu gösterir.

Ayrıca okuyun: Veri Bilimi için Ön Koşul. Zamanla nasıl değişir?

Q Öğrenme Python Örneği

Q öğrenme Python'u anlamanın en iyi yolu bir örnek görmektir. Bu örnekte, OpenAI'nin spor salonu ortamını kullanıyoruz ve modelimizi onunla eğitiyoruz. Öncelikle, ortamı yüklemeniz gerekecek. Bunu aşağıdaki komutla yapabilirsiniz:

pip kurulum spor salonu

Şimdi, bu örnek için ihtiyaç duyacağımız kitaplıkları içe aktaracağız:

spor salonu ithal etmek

itertools'u içe aktar

matplotlib'i içe aktar

matplotlib.style'ı içe aktar

numpy'yi np olarak içe aktar

pandaları pd olarak içe aktar

ithalat sistemi

koleksiyonlardan import defaultdict

windy_gridworld'den WindyGridworldEnv'yi içe aktar

ithalat çizimi

matplotlib.style.use('ggplot')

Gerekli kütüphaneler olmadan bu işlemleri başarıyla gerçekleştiremezsiniz. Kitaplıkları içe aktardıktan sonra ortamı oluşturacağız:

env = WindyGridworldEnv()

Şimdi -greedy politikasını oluşturacağız:

def createEpsilonGreedyPolicy(Q, epsilon, num_actions):

“””

dayalı bir epsilon açgözlü politikası oluşturur

belirli bir Q-fonksiyonu ve epsilon üzerinde.

Durumu alan bir işlev döndürür

girdi olarak ve olasılıkları döndürür

numpy dizisi biçimindeki her eylem için

eylem alanının uzunluğunun (olası yanıtlar kümesi).

“””

def policyFunction(durum):

Action_probabilities = np.ones(num_actions,

dtype = kayan nokta) * epsilon / num_actions

best_action = np.argmax(Q[durum])

Action_probabilities[best_action] += (1.0 – epsilon)

Action_probabilities'i döndür

iade politikasıİşlev

İşte bir q-öğrenme modeli oluşturmak için kod:

def qLearning(env, sayı_bölümleri, indirim_faktörü = 1.0,

alfa = 0.6, epsilon = 0.1):

“””

Q-Öğrenim algoritması: Politika dışı TD kontrolü.

İyileştirirken en uygun açgözlü politikayı bulur

Epsilon açgözlü bir politika izleyerek”””

# Eylem değeri işlevi

# Eşleşen iç içe bir sözlük

# durum -> (eylem -> eylem-değeri).

Q = defaultdict(lambda: np.zeros(env.action_space.n))

# Yararlı istatistiklerin kaydını tutar

istatistikler = plotting.EpisodeStats(

bölüm_uzunlukları = np.zeros(sayı_bölüm),

bölüm_ödülleri = np.zeros(num_episodes))

# Bir epsilon açgözlü ilke işlevi oluşturun

# ortam eylem alanı için uygun

ilke = createEpsilonGreedyPolicy(Q, epsilon, env.action_space.n)

# Her bölüm için

aralıktaki ith_episode için(sayı_episodes):

# Ortamı sıfırlayın ve ilk eylemi seçin

durum = env.sıfırlama()

itertools.count() içindeki t için:

# mevcut durumdan tüm eylemlerin olasılıklarını alın

action_probabilities = ilke(durum)

# göre eylem seçin

# olasılık dağılımı

eylem = np.random.choice(np.arange(

len(eylem_olasılıkları)),

p = action_olasılıklar)

# harekete geçin ve ödül alın, bir sonraki duruma geçin

next_state, ödül, bitti, _ = env.step(eylem)

# İstatistikleri güncelle

stats.episode_rewards[i_episode] += ödül

stats.episode_lengths[i_episode] = t

# TD Güncellemesi

best_next_action = np.argmax(S[sonraki_durum])

td_target = ödül + indirim_faktörü * S[next_state][best_next_action]

td_delta = td_target – Q[durum][eylem]

Q[durum][eylem] += alfa * td_delta

# bölüm sonlandırılırsa yapılan Doğrudur

yapılırsa:

kırmak

durum = sonraki_durum

dönüş Q, istatistikler

Şimdi modeli eğitelim:

Q, istatistikler = qLearning(env, 1000)

Modeli oluşturup eğittikten sonra, aynı temel istatistikleri çizebiliriz:

plotting.plot_episode_stats(stats)

Modeli çalıştırmak ve grafiği çizmek için bu kodu kullanın. Ne tür sonuçlar görüyorsunuz? Sonuçlarınızı bizimle paylaşın ve herhangi bir karışıklık veya şüpheyle karşılaşırsanız bize bildirin.

Ayrıca okuyun: Veri Bilimi için Makine Öğrenimi Algoritmaları

Dünyanın en iyi Üniversitelerinden veri bilimi derslerini öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Son düşünceler

Grafiği çizdiğinizde, bölüm başına ödülün zamanla kademeli olarak arttığını göreceksiniz. Ve belirli bölümlerden sonra, olay örgüsü, bölüm başına yüksek ödül limitini aştığını da yansıtıyor. Bu neyi gösterir?

Bu, modelinizin bir bölümde en iyi şekilde davranmasını sağlayarak kazanabileceği toplam ödülü artırmayı öğrendiği anlamına gelir. Python öğrenmenin neden bu kadar çok sektör ve alanda uygulamalar gördüğünü de görmüş olmalısınız.

Takviyeli öğrenmenin dezavantajları nelerdir?

1. Aşırı pekiştirmeli öğrenme, sonuçların kalitesini düşürerek durum fazlalığına neden olabilir.
2. Kolay problem çözme için pekiştirmeli öğrenme önerilmez.
3. Takviyeli öğrenme, büyük miktarda veri ve hesaplama gerektirir.
4. Takviyeli öğrenme, zorlu eğitim tasarımı kurulumu ve keşif ve pekiştirme dengesiyle ilgili sorunlar gibi kendine özgü ve çok karmaşık engellere sahiptir.

Q öğrenme modeli tabanlı mı?

Hayır, Q öğrenimi modellere bağlı değildir. Q-öğrenme, belirli bir durumda belirli bir eylemin değerini belirlemek için modelsiz bir pekiştirmeli öğrenme tekniğidir. Q öğrenme, model içermeyen, çeşitli bağlamlarda kullanılabileceği ve yeni ve bilinmeyen koşullara hızla adapte olabileceği anlamına gelen, mevcut birkaç pekiştirmeli öğrenme algoritmasından biridir. Uyarlamalar gerektirmeden stokastik geçişleri ve ödülleri içeren sorunları halledebilir ve bir çevre modeli gerektirmez. Q-learning, değerlere dayalı bir öğrenme algoritmasıdır. Değer tabanlı algoritmalar, değer fonksiyonunu güncellemek için bir denklem kullanır (özellikle Bellman denklemi).

Q öğrenme ve SARSA birbirinden nasıl farklıdır?

SARSA, keşfederken optimale yakın bir politika öğrenirken, Q-learning optimal politikayı doğrudan öğrenir. Politika dışı SARSA, izlediği politikaya göre eylem değerlerini öğrenirken, politikaya bağlı SARSA, izlediği politikaya göre eylem değerlerini öğrenir. Açgözlülük politikasıyla ilgili olarak, Q-Learning bunu yapar. Her ikisi de bazı benzer koşullar altında, ancak farklı hızlarda gerçek değer fonksiyonuna yakınsar. Q-Learning'in yakınsaması biraz daha uzun sürer, ancak düzenlemeler değişirken öğrenmeye devam edebilir. Doğrusal yaklaşımla birleştirildiğinde, Q-Learning'in yakınsaması garanti edilmez. SARSA, yakınsamaya yaklaşırken keşif adımlarından kaynaklanan cezaları dikkate alırken, Q-öğrenme bunu yapmayacaktır. İdeal yol boyunca önemli bir olumsuz ödül şansı varsa, Q-öğrenme keşif sırasında onu tetiklemeye çalışacaktır, ancak SARSA riskli bir optimal yoldan kaçınmaya çalışacak ve onu kullanmayı yalnızca keşif parametreleri azaldıktan sonra öğrenecektir.