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 käytetyn 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 (explorointi);
- Todennäköisyydellä 1−ε: valitse toiminto, jolla on korkein arvioitu arvo (eksploitointi).
- 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 exploraation ja eksploitaation välistä tasapainoa:
- Korkea ε (esim. 0.5) kannustaa enemmän explorointiin;
- Matala ε (esim. 0.01) suosii parhaan tunnetun toiminnon eksploitaatiota.
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 voimakkaasti ε-arvosta. Kaksi strategiaa on yleisesti käytössä tämän arvon valitsemiseksi:
- 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 vähitellen arvoon 0) kannustaen tutkimista alkuvaiheessa.
Yhteenveto
ε-ahne algoritmi on peruslähestymistapa tutkimisen ja hyödyntämisen tasapainottamiseen. Vaikka se on yksinkertainen, se toimii perustana kehittyneempien strategioiden, kuten ylärajan luottamusväli (UCB) ja gradienttibanditit, ymmärtämiselle.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain the difference between fixed and decaying epsilon strategies?
How does epsilon-greedy compare to other exploration strategies like UCB?
Can you give a real-world example where epsilon-greedy is used?
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 käytetyn 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 (explorointi);
- Todennäköisyydellä 1−ε: valitse toiminto, jolla on korkein arvioitu arvo (eksploitointi).
- 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 exploraation ja eksploitaation välistä tasapainoa:
- Korkea ε (esim. 0.5) kannustaa enemmän explorointiin;
- Matala ε (esim. 0.01) suosii parhaan tunnetun toiminnon eksploitaatiota.
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 voimakkaasti ε-arvosta. Kaksi strategiaa on yleisesti käytössä tämän arvon valitsemiseksi:
- 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 vähitellen arvoon 0) kannustaen tutkimista alkuvaiheessa.
Yhteenveto
ε-ahne algoritmi on peruslähestymistapa tutkimisen ja hyödyntämisen tasapainottamiseen. Vaikka se on yksinkertainen, se toimii perustana kehittyneempien strategioiden, kuten ylärajan luottamusväli (UCB) ja gradienttibanditit, ymmärtämiselle.
Kiitos palautteestasi!