21 settembre 2018
Machine Learning Meetup organizzato da Alumni Mathematica in collaborazione con Sprint Lab e l'Italian Association for Machine Learning.
TITOLO DEL TALK: Reinforcement Learning
ABSTRACT: Reinforcement Learning, ovvero come creare algoritmi capaci di adattarsi ad ambienti dinamici. Il sogno della Artificial General Intelligence, o strong artificial intelligence è quello di creare algoritmi che risolvono qualsiasi tipo di problema. Algoritmi generici capaci di adattarsi al problema e all'ambiente dinamico al fine di apprendere i comportamenti e i cambiamenti dell'ambiente e vincere. Il reinforcement learning è una branca del machine learning che determina il punto di contatto tra quello che viene definito narrow learning (machine learning) ovvero la specializzazione dei problemi di apprendimento, e il mondo dell'intelligenza artificiale più generico (strong artificial intelligence) dove l'algoritmo risolve i problemi senza essere specializzato nel farlo.
Il seminario tratterà:
1 - Definizione di Reinforcement Learning
2 - Markov Decision Processes (MDPs)
3 - Algoritmi per la risoluzione degli (MDPs)
4 - OpenAI Gym
5 - Q-Learning
6 - Deep Reinforcement Learning con Deep-Q Learning
7 - Futuro del Deep Reinforcement Learning
8 - Applicazioni del Reinforcement Learning.
RELATORE: Vincenzo Dentamaro Master Student in Georgia Institute of Technology Atlanta, Laureato informatica TPS presso l' università di Bari, precedenti esperienze lavorative in Johnson Controls Inc. come Software Engineer, IBM Roma come stagista, CEO & CTO Nextome S.R.L.. Appassionato di machine learning e algebra lineare. Detentore di 2 brevetti internazionali, diverse pubblicazioni scientifiche nel campo dell'indoor positioning e del pattern recognition. Vincitore con Nextome di diversi premi a livello internazionale come Seal Of Excellence Commissione Europea, 1st prize Busan Metropolitan City (South Korea), Global Mobile Innovator Tournament Award by IBM at Mobile World Congress, MIT Technology Review.
2. Apprendimento supervisionato
x: vettore delle features
a: labels (classi)
decision
rule
x a
learner
training set
x1 ⤇ a1
x2 ⤇ a2
x3 ⤇ a3
…
Goal: Costruire una regola di
classificazione
Istruttivo -> come raggiungere il
goal
3. Apprendimento non supervisionato
x
x: vettore delle featres
a: labels (classi) non presente
decision
rule
learner
esempi
x1 x2
x3
…
Il goal è costruire una regola
che clusterizzi, aggreghi,
esempi simili nello stesso
cluster e esempi differenti in
altri.
4. Apprendimento per rinforzo
x
x: vettore delle featres
a: labels (classi)
v: valore di feedback per quella
scelta
Il goal è costruire una regola
che massimizzi il valore atteso.
Valutativo -> quanto «bene»
abbiamo raggiunto il goal.
Nel RL descriviamo un
problema non la soluzione.
decision
rule
learner
Esempi
x1, a1 ⤇ v1
x2, a2 ⤇ v2
x3, a3 ⤇ v3
…
6. Trovare il percorso più rapido
Spiaggia
Sabbia bollente
GOAL:
Raggiungere la riva
nel minor tempo
possibile.
Reward?
7. IPOTESI alla base del
reinforcement learning
I comportamenti intelligenti nascono
dalle azioni del singolo individuo nella
ricerca di massimizzare i segnali di
feedback ricevuti in un ambiente
dinamico e complesso.
Ora siamo pronti ad incominciare… ma dove
vogliamo arrivare?
11. Markov Decision Process (MDP)
Definizione:
S: Insieme di stati
A: Insieme di azioni
Pr(st|st-1,at): probabilità di transitare nello
stato st trovandoci nello stato st-1 e effettuando
azione at
rt : Funzione di Reward
Discount factor μ ∈ [0,1]
○ Controlla l’importanza di rewards futuri , o =
reward immediati, 1 = tutti i reward egualmente
Ambienti deterministici vs ambienti
stocastici
Meglio 100 euro adesso o 1000 euro in 1000 anni?
12. La proprietà markoviana
Il passato non conta
Conta solo il presente
Il presente sintetizza tutte le scelte passate
13. Policy
Agente – Sceglie quale azione effettuare
Policy – Funzione dello stato corrente
Azione – Il sistema ritorna la migliore azione
da effettuare
Image courtesy: OpenAI Blog on Evolution
Strategies
14. Famiglie di algoritmi per
mdp
Model based
1. L’agente conosce il modello
dell’MDP
2. Viene usato dall’agente in
modalità offline, per pianificare
in offline, quale azione
intraprendere a partire da ogni
stato
3. Eg: Value-iteration & policy-
iteration
Model Free
1. Nessun modello di riferimento
2. L’agente, interagendo con
l’ambiente, migliora una
funzione, chiamata funzione di
qualità, che è il «cervello»
dell’agente e contiene una
rappresentazione imperfetta
dello spazio «state-action» in
ogni momento.
3. Eg: Q-Learning
15. L’equazione di Richard Bellman
U(s) è la funzione di utilità nello stato s, cioè il valore atteso per tutti i rewards a
partire dallo stato s utilizzando una policy.
R(s) è il reward immediato
è invece il reward dal futuro, l’utilita scontata dello stato s’ raggiunto a
partire dallo stato s mediante azione a
Gamma serve a dare più o meno importanza alla sommatoria dei valori di reward
futuri stimati.
16. Value Iteration
Calcola iterativamente l’optimal state value function V(s)
Convergenza garantita in un numero finito di iterazioni
17. Policy Iteration
Ridefinisce la policy ad ogni step (iterativo anch’esso)
Un metodo per la codifica dell’algoritmo di Policy Iteration prevede
l’utilizzo di Value Iteration per il calcolo della value function.
Convergenza garantita in un numero di passi << di value iteration
Costo di ogni passo?
18. Value vs Policy Iteration
Usato per planning offline
Conoscenza a priori di MDP
In teoria, Policy Iteration è computazionalmente migliore di Value
Iteraiton
○ Minor numero di iterazioni
○ Ogni iterazione è molto costosa
○ siccome la maggiorparte delle implementazioni disponibili usano
value iteration per ogni step di policy iteration, il tempo di
esecuzione di policy iteration è > di value iteration.
19. Q Learning
Model free
● Qualità dell’azione che si è deciso di intraprendere trovandosi in un determinato stato
● Bellman equation →
Q'[s, a] = (1 - α) · Q[s, a] + α · (r + γ · Q[s', argmax_a'(Q[s', a'])])
α = learning rate per variare il peso delle nuove esperienze rispetto i valori passati
r = è il reward immediato per aver intrapreso l’azione a trovandosi nello stato s
γ = è il fattore di sconto (discount factor) usato per scontare progressivamente i valori futuri.
s’ = è lo stato in cui finiamo
argmax_a’(Q[s’,a’]) = è l’azione risultante, che massimizza la Q-Value rispetto a tutte le possibili
azioni a’ nello stato s’.
20. Exploration / Exploitation
Exploitation:
Continua a prendere decisioni basandosi
sulla conoscenza attuale al fine di
massimizzare il guadagno a breve termine.
Exploration: Esplora lo spazio
degli stati. Aumenta la conoscenza
per un guadagno a lungo termine
di solito a spese di un guadagno a
breve termine.
21. alpha = 0.5
gamma = 0.9
episodes = 10000
epsilon = 0.5
epsilon_decay = 0.99
best_q = None
previous_reward = -10000
# Episodes
for episode in range(episodes):
# Refresh state
state = env.reset()
done = False
t_reward = 0
# Run episode
for i in range(episodes):
if done:
break
current = state
rnd = np.random.uniform(0,1)
action = np.argmax(Q[current])
#choose a greedy action with 1-epsilon
if epsilon >= rnd:
#random action
action = np.random.randint(0, env.action_space.n)
epsilon = epsilon * epsilon_decay
else:
state_action = Q[current]
action = np.argmax(state_action)
if exploration == 'greedy':
if np.random.uniform() < epsilon:
action = np.random.random_integers(0, env.action_space.n - 1)
action = np.argmax(Q[current, :] + np.random.randn(1, env.action_space.n) * (1 / float(episode + 1)))
state, reward, done, info = env.step(action)
t_reward += reward
Q[current, action] += alpha * (reward + gamma * np.max(Q[state, :]) - Q[current, action])
rewards.append(t_reward)
if(t_reward > previous_reward):
previous_reward = t_reward
iterations.append(i)
Q-LEARNING
R. Sutton dice che Q learning converge se ogni stato è visitato indefinitamente
spesso.
22. env = gym.make("Taxi-v2")
# Q-function
Q = defaultdict(lambda : 0.) # Q-function
n = defaultdict(lambda : 1.) # number of visits
actionspace = range(env.action_space.n)
greedy_action = lambda s : max(actionspace, key=lambda a : Q[(s,a)])
max_q = lambda sp : max([Q[(sp,a)] for a in actionspace])
import random
epsilon = 0.1
gamma = 0.9
max_episodes = 30000
max_steps = 1000
# Simulation
episodescores = []
for _ in range(max_episodes):
nextstate = env.reset()
currentscore = 0.
for _ in range(max_steps):
state = nextstate
# Epsilon-Greedy
if epsilon > random.random() :
action = env.action_space.sample()
else :
action = greedy_action(state)
nextstate, reward, done, info = env.step(action)
currentscore += reward
# Q-learning
if done :
Q[(state,action)] = Q[(state,action)] + 1./n[(state,action)] * ( reward - Q[(state,action)] )
break
else :
Q[(state,action)] = Q[(state,action)] + 1./n[(state,action)] *
( reward + gamma * max_q(nextstate) - Q[(state,action)] )
Q-LEARNING
LA VERSIONE TABULARE VA BENE SEMPRE?
23. Quanto è grande lo state-space di pacman ?
s
Quanti pellet può mangiare Ms.Pac-Man ? circa 250
Lo state-space è grande 2250
più del numero di atomi
presenti nell’universo osservabile.
Come si fa? Usiamo l’approssimazione!
34. Bibliografia
[1] SUTTON, Richard S., et al. Reinforcement learning: An introduction. MIT press,
1998. Anche versione 2 Draft https://goo.gl/3Hz88y
[2] N. Nikovski, Daniel, 1999/02/20, Fast Reinforcement Learning in Continuous
Action Spaces
[3]Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis
Antonoglou, Daan Wierstra, and Martin A. Riedmiller. Playing atari with deep
reinforcement learning. CoRR, abs/1312.5602, 2013.
[4] VAN HASSELT, Hado; GUEZ, Arthur; SILVER, David. Deep Reinforcement
Learning with Double Q-Learning. In: AAAI. 2016. p. 2094-2100.
[5]Matiisen Tambet, Demystifying Deep Reinforcement Learning, December 22
2015, Intel AI.
CONTATTI
Vincenzo Dentamaro
Email vincenzodentamaro@gmail.com o
v.dentamaro@nextome.net oppure
vincenzo@gatech.edu
Linkedin
https://www.linkedin.com/in/vincenzodentamaro/