Epsilon-açgözlülüğü
Bu egzersizde, azalan epsilon-açgözlülüğü uygulayan bir select_action() fonksiyonu yazacaksın.
Epsilon-açgözlülüğü, aracının ortamı keşfetmesini teşvik eder ve bu da öğrenmeyi iyileştirir!
Epsilon-açgözlülüğü çizelgesi, verilen her step için aşağıdaki formülle bir eşik \(\varepsilon\) belirler:
$$\varepsilon = end + (start-end) \cdot e^{-\frac{step}{decay}}$$
select_action() \(\varepsilon\) olasılıkla rastgele bir eylem ve \(1-\varepsilon\) olasılıkla en yüksek Q-değerine sahip eylemi döndürmelidir.
Bu egzersiz
Python ile Deep Reinforcement Learning
kursunun bir parçasıdırEgzersiz talimatları
- Verilen
stepdeğeri içinepsiloneşiğini hesapla. - 0 ile 1 arasında rastgele bir sayı çek.
epsilonolasılıkla rastgele bir eylem döndür.1-epsilonolasılıkla en yüksek Q-değerine sahip eylemi döndür.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
def select_action(q_values, step, start, end, decay):
# Calculate the threshold value for this step
epsilon = end + (____) * math.exp(____ / ____)
# Draw a random number between 0 and 1
sample = random.____
if sample < epsilon:
# Return a random action index
return random.____
# Return the action index with highest Q-value
return torch.____.item()
for step in [1, 500, 2500]:
actions = [select_action(torch.Tensor([1, 2, 3, 5]), step, .9, .05, 1000) for _ in range(20)]
print(f"Selecting 20 actions at step {step}.\nThe action with highest q-value is action 3.\nSelected actions: {actions}\n\n")