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
Mahtavaa!
Completion arvosana parantunut arvoon 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!