Kurssisisältö
Johdatus Vahvistusoppimiseen
Johdatus Vahvistusoppimiseen
Gradienttinen Bandiittialgoritmi
Moniasemaisten bandiittien yhteydessä perinteiset menetelmät, kuten epsilon-ahne ja UCB, arvioivat toimintojen arvoja päättääkseen, mitä toimintoa käyttää. Gradienttibanditit lähestyvät asiaa kuitenkin eri tavalla — ne oppivat toimintojen mieltymykset arvojen arvioimisen sijaan. Näitä mieltymyksiä säädetään ajan myötä käyttäen stokastista gradienttinousua.
Mieltymykset
Sen sijaan, että ylläpidettäisiin toimintojen arviota , gradienttibanditit ylläpitävät mieltymysarvoja jokaiselle toiminnolle . Näitä mieltymyksiä päivitetään stokastisen gradienttinousun avulla odotettujen palkkioiden maksimoimiseksi. Jokaisen toiminnon todennäköisyys lasketaan softmax-funktion avulla:
missä:
- on toiminnon mieltymys ajanhetkellä ;
- on todennäköisyys valita toiminto ajanhetkellä ;
- Nimittäjä varmistaa, että todennäköisyydet summautuvat yhteen.
Softmax on keskeinen funktio koneoppimisessa, ja sitä käytetään yleisesti muuttamaan reaalilukujen listoja todennäköisyyksien listoiksi. Tämä funktio toimii pehmeänä approksimaationa -funktiolle, mahdollistaen luontevan tutkimisen antamalla matalamman mieltymyksen toiminnoille ei-nolla todennäköisyyden tulla valituksi.
Päivityssääntö
Kun toiminto valitaan ajanhetkellä , preferenssiarvot päivitetään seuraavan säännön mukaisesti:
missä:
- on askelkokonaisuus;
- on saatu palkkio;
- on tähän mennessä havaittu keskimääräinen palkkio.
Intuitio
Jokaisella aikavälillä kaikkia preferenssejä siirretään hieman. Siirto riippuu pääasiassa saatu palkkio ja keskimääräinen palkkio -arvoista, ja se voidaan selittää seuraavasti:
- Jos saatu palkkio on suurempi kuin keskimääräinen, valitusta toiminnosta tulee suositumpi ja muiden toimintojen suosio vähenee;
- Jos saatu palkkio on pienempi kuin keskimääräinen, valitun toiminnon preferenssi vähenee, kun taas muiden toimintojen preferenssit kasvavat, mikä kannustaa tutkimiseen.
Esimerkkikoodi
def softmax(x):
"""Simple softmax implementation"""
return np.exp(x) / np.sum(np.exp(x))
class GradientBanditsAgent:
def __init__(self, n_actions, alpha):
"""Initialize an agent"""
self.n_actions = n_actions # Number of available actions
self.alpha = alpha # alpha
self.H = np.zeros(n_actions) # Preferences
self.reward_avg = 0 # Average reward
self.t = 0 # Time step counter
def select_action(self):
"""Select an action according to the gradient bandits strategy"""
# Compute probabilities from preferences with softmax
probs = softmax(self.H)
# Choose an action according to the probabilities
return np.random.choice(self.n_actions, p=probs)
def update(self, action, reward):
"""Update preferences"""
# Increase the time step counter
self.t += 1
# Update the average reward
self.reward_avg += reward / self.t
# Compute probabilities from preferences with softmax
probs = softmax(self.H) # Getting action probabilities from preferences
# Update preference values using stochastic gradient ascent
self.H -= self.alpha * (reward - self.reward_avg) * probs
self.H[action] += self.alpha * (reward - self.reward_avg)
Lisätietoja
Gradienttibanditeilla on useita mielenkiintoisia ominaisuuksia:
- Preferenssien suhteellisuus: toimintojen preferenssien absoluuttisilla arvoilla ei ole vaikutusta toimintojen valintaan — vain niiden suhteellisilla eroilla on merkitystä. Kaikkien preferenssien siirtäminen samalla vakiolla (esim. lisäämällä 100) johtaa samaan todennäköisyysjakaumaan;
- Vertailuarvon vaikutus päivityssäännössä: vaikka päivityskaavassa käytetään yleensä keskimääräistä palkkiota vertailuarvona, tämän arvon voi korvata millä tahansa vakiolla, joka ei riipu valitusta toiminnosta. Vertailuarvo vaikuttaa oppimisen nopeuteen, mutta ei muuta optimaalista ratkaisua;
- Askelkoon vaikutus: askelkoon arvo kannattaa säätää tehtävän mukaan. Pienempi askelkoko takaa vakaamman oppimisen, kun taas suurempi arvo nopeuttaa oppimisprosessia.
Yhteenveto
Gradienttibanditit tarjoavat tehokkaan vaihtoehdon perinteisille bandittialgoritmeille hyödyntämällä preferenssipohjaista oppimista. Niiden merkittävin ominaisuus on kyky tasapainottaa luonnollisesti tutkimista ja hyväksikäyttöä.
Kiitos palautteestasi!