Keşif ve sömürü dengesini kurma

Python ile Gymnasium'da Reinforcement Learning

Fouad Trad

Machine Learning Engineer

Rastgele eylemlerle eğitim

  • Ajan ortamı keşfeder
  • Öğrenilen bilgiye dayalı strateji iyileştirmesi yok
  • Eğitim bitince ajan bilgiyi kullanır

Bir ortam içindeki bir ajanı gösteren görsel

Python ile Gymnasium'da Reinforcement Learning

Keşif–sömürü ödünleşimi

 

  • Keşif ve sömürüyü dengeler
  • Sürekli keşif strateji iyileştirmesini engeller
  • Yalnızca sömürü, keşfedilmemiş fırsatları kaçırır

Bir görsel; ajan daha fazla ödül keşfetmek için yeni eylemleri dener ve bilgisini sömürmeye çalışırken bazı ödülleri kaçırabilir.

Python ile Gymnasium'da Reinforcement Learning

Yemek seçimi

Bir restoran masası görseli.

Python ile Gymnasium'da Reinforcement Learning

Epsilon-greedy stratejisi

 

  • Epsilon olasılığıyla keşfet

Bir diyagram; epsilon olasılığıyla ajan rastgele eylem seçerek keşfeder.

Python ile Gymnasium'da Reinforcement Learning

Epsilon-greedy stratejisi

 

  • Epsilon olasılığıyla keşfet
  • 1-epsilon olasılığıyla sömür
  • Bilgiyi kullanırken sürekli keşfi sağlar

Bir diyagram; epsilon olasılığıyla ajan rastgele eylem seçerek keşfeder, 1 - epsilon olasılığıyla bilinen en iyi eylemi seçerek sömürür.

Python ile Gymnasium'da Reinforcement Learning

Azalan epsilon-greedy stratejisi

 

  • Zamanla epsilon azaltılır
  • Başta daha fazla keşif
  • Sonrasında daha fazla sömürü
  • Ajan biriken bilgisine giderek daha çok güvenir

Zamanla epsilonun azaldığını gösteren görsel.

Python ile Gymnasium'da Reinforcement Learning

Frozen Lake ile uygulama

env = gym.make('FrozenLake', is_slippery=True)

action_size = env.action_space.n
state_size = env.observation_space.n
Q = np.zeros((state_size, action_size))

alpha = 0.1 gamma = 0.99 total_episodes = 10000

Frozen Lake ortamının bir anlık görüntüsü.

Python ile Gymnasium'da Reinforcement Learning

epsilon_greedy() uygulaması

def epsilon_greedy(state):

if np.random.rand() < epsilon: action = env.action_space.sample() # Explore
else: action = np.argmax(Q[state, :]) # Exploit return action
Python ile Gymnasium'da Reinforcement Learning

Epsilon-greedy eğitimi

epsilon = 0.9   # Exploration rate

rewards_eps_greedy = []
for episode in range(total_episodes):
    state, info = env.reset()
    terminated = False
    episode_reward = 0
    while not terminated:
        action = epsilon_greedy(state)
        new_state, reward, terminated, truncated, info = env.step(action)       
        Q[state, action] = update_q_table(state, action, new_state) 
        state = new_state

episode_reward += reward rewards_eps_greedy.append(episode_reward)
Python ile Gymnasium'da Reinforcement Learning

Azalan epsilon-greedy eğitimi

epsilon = 1.0   # Exploration rate
epsilon_decay = 0.999
min_epsilon = 0.01

rewards_decay_eps_greedy = [] for episode in range(total_episodes): state, info = env.reset() terminated = False episode_reward = 0 while not terminated: action = epsilon_greedy(state) new_state, reward, terminated, truncated, info = env.step(action) episode_reward += reward Q[state, action] = update_q_table(state, action, new_state) state = new_state rewards_decay_eps_greedy.append(episode_reward)
epsilon = max(min_epsilon, epsilon * epsilon_decay)
Python ile Gymnasium'da Reinforcement Learning

Stratejileri karşılaştırma

avg_eps_greedy= np.mean(rewards_eps_greedy)
avg_decay = np.mean(rewards_decay_eps_greedy)
plt.bar(['Epsilon Greedy', 'Decayed Epsilon Greedy'],
        [avg_eps_greedy, avg_decay], 
        color=['blue', 'green'])
plt.title('Average Reward per Episode')
plt.ylabel('Average Reward')
plt.show()

Bir çubuk grafiği; epsilon-greedy ile ortalama ödül ~0,02, azalan epsilon-greedy ile ~0,55.

Python ile Gymnasium'da Reinforcement Learning

Haydi pratik yapalım!

Python ile Gymnasium'da Reinforcement Learning

Preparing Video For Download...