Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Algoritmo Epsilon-Greedy | Problema do Bandido de Múltiplos Braços
Introdução ao Aprendizado por Reforço

bookAlgoritmo Epsilon-Greedy

O algoritmo epsilon-greedy (ε\varepsilon-greedy) é uma estratégia simples, porém altamente eficaz, para abordar o problema do multi-armed bandit. Embora possa não ser tão robusto quanto outros métodos para essa tarefa específica, sua simplicidade e versatilidade o tornam amplamente aplicável no campo de aprendizado por reforço.

Como Funciona

O algoritmo segue estes passos:

  1. Inicializar as estimativas dos valores das ações Q(a)Q(a) para cada ação aa;
  2. Escolher uma ação utilizando a seguinte regra:
    • Com probabilidade ε\varepsilon: selecionar uma ação aleatória (exploração);
    • Com probabilidade 1ε1 - \varepsilon: selecionar a ação com o maior valor estimado (exploração).
  3. Executar a ação e observar a recompensa;
  4. Atualizar a estimativa do valor da ação Q(a)Q(a) com base na recompensa observada;
  5. Repetir os passos 2-4 por um número fixo de etapas de tempo.

O hiperparâmetro ε\varepsilon (epsilon) controla o equilíbrio entre exploração e exploração:

  • Um ε\varepsilon alto (por exemplo, 0.5) incentiva mais exploração;
  • Um ε\varepsilon baixo (por exemplo, 0.01) favorece a exploração da melhor ação conhecida.

Código de Exemplo

class EpsilonGreedyAgent:
  def __init__(self, n_actions, epsilon):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.epsilon = epsilon # epsilon
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters

  def select_action(self):
    """Select an action according to the epsilon-greedy strategy"""
    # With probability epsilon - random action
    if np.random.rand() < self.epsilon:
      return np.random.randint(self.n_actions)
    # Otherwise - action with highest estimated action value
    else:
      return np.argmax(self.Q)

  def update(self, action, reward):
    """Update the values using sample average estimate"""
    # Increasing the action selection counter
    self.N[action] += 1
    # Updating the estimated action value
    self.Q[action] += (reward - self.Q[action]) / self.N[action]

Informações Adicionais

A eficiência do algoritmo ε\varepsilon-ganancioso depende fortemente do valor de ε\varepsilon. Duas estratégias são comumente utilizadas para selecionar esse valor:

  • ε\varepsilon fixo: esta é a opção mais genérica, onde o valor de ε\varepsilon é escolhido como uma constante (por exemplo, 0,1);
  • ε\varepsilon decrescente: o valor de ε\varepsilon diminui ao longo do tempo de acordo com algum cronograma (por exemplo, começa em 1 e diminui gradualmente até 0) para incentivar a exploração nas fases iniciais.

Resumo

O algoritmo ε\varepsilon-ganancioso é uma abordagem de referência para equilibrar exploração e exploração. Embora simples, serve como base para compreender estratégias mais avançadas, como limite superior de confiança (UCB) e bandits de gradiente.

question mark

Qual é uma característica principal do algoritmo ε\varepsilon-ganancioso?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.7

bookAlgoritmo Epsilon-Greedy

Deslize para mostrar o menu

O algoritmo epsilon-greedy (ε\varepsilon-greedy) é uma estratégia simples, porém altamente eficaz, para abordar o problema do multi-armed bandit. Embora possa não ser tão robusto quanto outros métodos para essa tarefa específica, sua simplicidade e versatilidade o tornam amplamente aplicável no campo de aprendizado por reforço.

Como Funciona

O algoritmo segue estes passos:

  1. Inicializar as estimativas dos valores das ações Q(a)Q(a) para cada ação aa;
  2. Escolher uma ação utilizando a seguinte regra:
    • Com probabilidade ε\varepsilon: selecionar uma ação aleatória (exploração);
    • Com probabilidade 1ε1 - \varepsilon: selecionar a ação com o maior valor estimado (exploração).
  3. Executar a ação e observar a recompensa;
  4. Atualizar a estimativa do valor da ação Q(a)Q(a) com base na recompensa observada;
  5. Repetir os passos 2-4 por um número fixo de etapas de tempo.

O hiperparâmetro ε\varepsilon (epsilon) controla o equilíbrio entre exploração e exploração:

  • Um ε\varepsilon alto (por exemplo, 0.5) incentiva mais exploração;
  • Um ε\varepsilon baixo (por exemplo, 0.01) favorece a exploração da melhor ação conhecida.

Código de Exemplo

class EpsilonGreedyAgent:
  def __init__(self, n_actions, epsilon):
    """Initialize an agent"""
    self.n_actions = n_actions # Number of available actions
    self.epsilon = epsilon # epsilon
    self.Q = np.zeros(self.n_actions) # Estimated action values
    self.N = np.zeros(self.n_actions) # Action selection counters

  def select_action(self):
    """Select an action according to the epsilon-greedy strategy"""
    # With probability epsilon - random action
    if np.random.rand() < self.epsilon:
      return np.random.randint(self.n_actions)
    # Otherwise - action with highest estimated action value
    else:
      return np.argmax(self.Q)

  def update(self, action, reward):
    """Update the values using sample average estimate"""
    # Increasing the action selection counter
    self.N[action] += 1
    # Updating the estimated action value
    self.Q[action] += (reward - self.Q[action]) / self.N[action]

Informações Adicionais

A eficiência do algoritmo ε\varepsilon-ganancioso depende fortemente do valor de ε\varepsilon. Duas estratégias são comumente utilizadas para selecionar esse valor:

  • ε\varepsilon fixo: esta é a opção mais genérica, onde o valor de ε\varepsilon é escolhido como uma constante (por exemplo, 0,1);
  • ε\varepsilon decrescente: o valor de ε\varepsilon diminui ao longo do tempo de acordo com algum cronograma (por exemplo, começa em 1 e diminui gradualmente até 0) para incentivar a exploração nas fases iniciais.

Resumo

O algoritmo ε\varepsilon-ganancioso é uma abordagem de referência para equilibrar exploração e exploração. Embora simples, serve como base para compreender estratégias mais avançadas, como limite superior de confiança (UCB) e bandits de gradiente.

question mark

Qual é uma característica principal do algoritmo ε\varepsilon-ganancioso?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3
some-alt