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
course content

Conteúdo do Curso

Introdução ao Aprendizado por Reforço

Introdução ao Aprendizado por Reforço

1. Teoria Central de RL
2. Problema do Bandido de Múltiplos Braços
3. Programação Dinâmica
4. Métodos de Monte Carlo
5. Aprendizado por Diferença Temporal

book
Algoritmo 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

course content

Conteúdo do Curso

Introdução ao Aprendizado por Reforço

Introdução ao Aprendizado por Reforço

1. Teoria Central de RL
2. Problema do Bandido de Múltiplos Braços
3. Programação Dinâmica
4. Métodos de Monte Carlo
5. Aprendizado por Diferença Temporal

book
Algoritmo 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
some-alt