Conteúdo do Curso
Introdução ao Aprendizado por Reforço
Introdução ao Aprendizado por Reforço
Algoritmo Epsilon-Greedy
O algoritmo epsilon-greedy (-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:
- Inicializar as estimativas dos valores das ações para cada ação ;
- Escolher uma ação utilizando a seguinte regra:
- Com probabilidade : selecionar uma ação aleatória (exploração);
- Com probabilidade : selecionar a ação com o maior valor estimado (exploração).
- Executar a ação e observar a recompensa;
- Atualizar a estimativa do valor da ação com base na recompensa observada;
- Repetir os passos 2-4 por um número fixo de etapas de tempo.
O hiperparâmetro (epsilon) controla o equilíbrio entre exploração e exploração:
- Um alto (por exemplo, 0.5) incentiva mais exploração;
- Um 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 -ganancioso depende fortemente do valor de . Duas estratégias são comumente utilizadas para selecionar esse valor:
- fixo: esta é a opção mais genérica, onde o valor de é escolhido como uma constante (por exemplo, 0,1);
- decrescente: o valor de 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 -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.
Obrigado pelo seu feedback!