Epsilon-Ahne Algoritmi
Epsilon-greedy (ε-greedy) -algoritmi on suoraviivainen mutta erittäin tehokas strategia multi-armed bandit -ongelman ratkaisemiseen. Vaikka se ei välttämättä ole yhtä vankka kuin jotkin muut menetelmät tässä erityistehtävässä, sen yksinkertaisuus ja monipuolisuus tekevät siitä laajasti sovellettavan vahvistusoppimisen alalla.
Toimintaperiaate
Algoritmi etenee seuraavasti:
- Alusta toimintojen arvoestimaatit Q(a) jokaiselle toiminnolle a;
- Valitse toiminto seuraavan säännön mukaisesti:
- Todennäköisyydellä ε: valitse satunnainen toiminto (etsintä);
- Todennäköisyydellä 1−ε: valitse toiminto, jolla on korkein arvioitu arvo (hyödyntäminen).
- Suorita toiminto ja havainnoi palkkio;
- Päivitä toiminnon arvoestimaatti Q(a) saadun palkkion perusteella;
- Toista vaiheet 2–4 ennalta määrätyn ajan.
Hyperparametri ε (epsilon) säätelee etsinnän ja hyödyntämisen välistä tasapainoa:
- Korkea ε (esim. 0.5) kannustaa enemmän etsintään;
- Matala ε (esim. 0.01) suosii parhaiten tunnetun toiminnon hyödyntämistä.
Esimerkkikoodi
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]
Lisätietoa
ε-ahne-algoritmin tehokkuus riippuu vahvasti ε-arvosta. Kaksi strategiaa on yleisesti käytössä tämän arvon valitsemiseen:
- Kiinteä ε: yleisin vaihtoehto, jossa ε-arvo valitaan vakioksi (esim. 0.1);
- Vähenevä ε: ε-arvo pienenee ajan myötä tietyn aikataulun mukaisesti (esim. alkaa arvosta 1 ja pienenee asteittain arvoon 0), mikä kannustaa tutkimiseen alkuvaiheessa.
Yhteenveto
ε-ahne-algoritmi on peruslähestymistapa tutkimisen ja hyödyntämisen tasapainottamiseen. Vaikka se on yksinkertainen, se toimii perustana kehittyneempien strategioiden, kuten upper confidence bound (UCB) ja gradienttibanditit, ymmärtämiselle.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.7
Epsilon-Ahne Algoritmi
Pyyhkäise näyttääksesi valikon
Epsilon-greedy (ε-greedy) -algoritmi on suoraviivainen mutta erittäin tehokas strategia multi-armed bandit -ongelman ratkaisemiseen. Vaikka se ei välttämättä ole yhtä vankka kuin jotkin muut menetelmät tässä erityistehtävässä, sen yksinkertaisuus ja monipuolisuus tekevät siitä laajasti sovellettavan vahvistusoppimisen alalla.
Toimintaperiaate
Algoritmi etenee seuraavasti:
- Alusta toimintojen arvoestimaatit Q(a) jokaiselle toiminnolle a;
- Valitse toiminto seuraavan säännön mukaisesti:
- Todennäköisyydellä ε: valitse satunnainen toiminto (etsintä);
- Todennäköisyydellä 1−ε: valitse toiminto, jolla on korkein arvioitu arvo (hyödyntäminen).
- Suorita toiminto ja havainnoi palkkio;
- Päivitä toiminnon arvoestimaatti Q(a) saadun palkkion perusteella;
- Toista vaiheet 2–4 ennalta määrätyn ajan.
Hyperparametri ε (epsilon) säätelee etsinnän ja hyödyntämisen välistä tasapainoa:
- Korkea ε (esim. 0.5) kannustaa enemmän etsintään;
- Matala ε (esim. 0.01) suosii parhaiten tunnetun toiminnon hyödyntämistä.
Esimerkkikoodi
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]
Lisätietoa
ε-ahne-algoritmin tehokkuus riippuu vahvasti ε-arvosta. Kaksi strategiaa on yleisesti käytössä tämän arvon valitsemiseen:
- Kiinteä ε: yleisin vaihtoehto, jossa ε-arvo valitaan vakioksi (esim. 0.1);
- Vähenevä ε: ε-arvo pienenee ajan myötä tietyn aikataulun mukaisesti (esim. alkaa arvosta 1 ja pienenee asteittain arvoon 0), mikä kannustaa tutkimiseen alkuvaiheessa.
Yhteenveto
ε-ahne-algoritmi on peruslähestymistapa tutkimisen ja hyödyntämisen tasapainottamiseen. Vaikka se on yksinkertainen, se toimii perustana kehittyneempien strategioiden, kuten upper confidence bound (UCB) ja gradienttibanditit, ymmärtämiselle.
Kiitos palautteestasi!