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ä tehtävässä, sen yksinkertaisuus ja monipuolisuus tekevät siitä laajasti käytetyn vahvistusoppimisen alalla.
Toimintaperiaate
Algoritmi etenee seuraavasti:
- Alustetaan toimintojen arviot Q(a) jokaiselle toiminnolle a;
- Valitaan toiminto seuraavan säännön mukaisesti:
- Todennäköisyydellä ε: valitaan satunnainen toiminto (etsintä);
- Todennäköisyydellä 1−ε: valitaan toiminto, jolla on korkein arvioitu arvo (hyödyntäminen).
- Suoritetaan toiminto ja havaitaan palkkio;
- Päivitetään toiminnon arviota Q(a) saadun palkkion perusteella;
- Toistetaan 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 parhaan 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ätietoja
ε-ahneen algoritmin tehokkuus riippuu vahvasti ε-arvosta. Kaksi yleistä strategiaa tämän arvon valintaan ovat:
- 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), 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 gradient bandits, ymmärtämiselle.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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ä tehtävässä, sen yksinkertaisuus ja monipuolisuus tekevät siitä laajasti käytetyn vahvistusoppimisen alalla.
Toimintaperiaate
Algoritmi etenee seuraavasti:
- Alustetaan toimintojen arviot Q(a) jokaiselle toiminnolle a;
- Valitaan toiminto seuraavan säännön mukaisesti:
- Todennäköisyydellä ε: valitaan satunnainen toiminto (etsintä);
- Todennäköisyydellä 1−ε: valitaan toiminto, jolla on korkein arvioitu arvo (hyödyntäminen).
- Suoritetaan toiminto ja havaitaan palkkio;
- Päivitetään toiminnon arviota Q(a) saadun palkkion perusteella;
- Toistetaan 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 parhaan 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ätietoja
ε-ahneen algoritmin tehokkuus riippuu vahvasti ε-arvosta. Kaksi yleistä strategiaa tämän arvon valintaan ovat:
- 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), 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 gradient bandits, ymmärtämiselle.
Kiitos palautteestasi!