update_rw <- function(value, alpha=0.15, lambda=1) {
value + alpha * (lambda - value)
}
1 Regola di Rescorla-Wagner
Il modello di Rescorla-Wagner fornisce una regola di apprendimento che descrive come cambia la forza associativa durante il condizionamento pavloviano. Supponiamo di prendere uno stimolo inizialmente neutro (ad es. un tono) e di associarlo a un risultato che ha un valore intrinseco per l’organismo (ad es. un premio – oppure una punizione). Col tempo l’organismo impara ad associare il tono al premio e risponderà al tono più o meno allo stesso modo in cui risponde al premio. In questo esempio il premio è lo stimolo incondizionato (US) e il tono è stimolo condizionato (SC).
Secondo il modello Rescorla-Wagner, la regola per l’aggiornamento della forza associativa tra US e SC è basata sul divario tra l’aspettativa di ricompensa e il risultato che viene effettivamente ottenuto:
-
è il valore dello stimolo nella prova , che riflette l’aspettativa di una ricompensa, -
è la ricompensa ricevuta nella prova , -
è il tasso di apprendimento.
Pertanto, il valore assegnato ad uno stimolo viene aggiornato in base all’errore di previsione (la differenza tra il feedback ricevuto
Il tasso di apprendimento
2 Condizionamento
Per chiarire il funzionamento della regola di Rescorla-Wagner la implementiamo in una funzione R
:
In una prima simulazione costituita da una sequenza di 40 prove esaminiamo come varia l’aspettativa di ricompensa dello stimolo
n_trials <- 40
strength <- numeric(n_trials)
strength
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[39] 0 0
for(trial in 2:n_trials) {
strength[trial] <- update_rw( strength[trial-1] )
}
print(strength)
[1] 0.0000000 0.1500000 0.2775000 0.3858750 0.4779937 0.5562947 0.6228505
[8] 0.6794229 0.7275095 0.7683831 0.8031256 0.8326568 0.8577582 0.8790945
[15] 0.8972303 0.9126458 0.9257489 0.9368866 0.9463536 0.9544006 0.9612405
[22] 0.9670544 0.9719962 0.9761968 0.9797673 0.9828022 0.9853819 0.9875746
[29] 0.9894384 0.9910226 0.9923692 0.9935139 0.9944868 0.9953138 0.9960167
[36] 0.9966142 0.9971221 0.9975538 0.9979207 0.9982326
plot(
1:n_trials,
strength,
type = 'l',
ylim = c(0,1),
xlab = "Prove",
ylab = "Aspettativa di ricompensa")
points(1:n_trials, strength)
Applicando la regola di Rescorla-Wagner, il valore (ovvero, l’aspettativa di ricompensa) dello stimolo
strength <- numeric(n_trials)
for(trial in 2:n_trials) {
strength[trial] <- update_rw(alpha = 0.5, strength[trial-1] )
}
plot(
1:n_trials,
strength,
type = 'l',
ylim = c(0,1),
xlab = "Prove",
ylab = "Aspettativa di ricompensa"
)
points(1:n_trials, strength)
È chiaro dunque che il parametro
3 Estinzione
Consideriamo ora l’estinzione dell’associazione che è stata appresa. In questa seconda simulazione, le prime 25 prove saranno identiche a quelle della simulazione precedente. In esse verrà sempre fornita una ricompensa (
Quello che ci aspettiamo di vedere in questa situazione è che dopo la prova 25, quando il premio viene rimosso, la forza dell’associazione inizi a indebolirsi perché l’agente sta ora associando il CS con l’assenza di premio (cioè il parametro
n_trials <- 50
strength <- numeric(n_trials)
lambda <- 1 # initial reward value
for(trial in 2:n_trials) {
# remove the shock after trial 25
if(trial > 25) {
lambda <- 0
}
# update associative strength on each trial
strength[trial] <- update_rw(
value = strength[trial-1],
lambda = lambda
)
}
plot(
1:n_trials,
strength,
type = 'l',
ylim = c(0,1),
xlab = "Prove",
ylab = "Aspettativa di ricompensa"
)
points(1:n_trials, strength)
L’estinzione è efficace nel rimuovere l’associazione, ma la sua efficacia richiede del tempo, non è immediata. Se ci fermiamo alla 35-esima prova, per esempio, allo stimolo
4 Regola soft-max
Una volta attribuita una aspettativa di ricompensa agli stimoli, l’agente deve scegliere tra i diversi stimoli che sono presenti. Potrebbe sembrare ovvio scegliere, tra i vari stimoli presenti, quello a cui è associata l’aspettativa di ricompensa più altra (“massimizzazione della probabilità”) in questo particolare compito. Ma gli organismi biologici non si comportano così. Piuttosto, tendono a scegliere più spesso lo stimolo a cui è associata l’aspettativa di ricompensa maggiore, ma non sempre. Ci sono marcate differenze individuali nella strategia di scelta che si colloca tra due estremi: un’estremo è quello in cui l’aspettativa di valore determina la scelta; l’altro estremo è quello in cui la scelta tra gli stimoli è puramente casuale (ovvero, non è in alcun modo determinata dall’aspettativa di ricompensa associata agli stimoli).
Per descrivere il continuum tra queste due diverse strategie di scelta
Per modellare il modo in cui gli agenti traducono i valori di aspettativa di ricompensa in una scelta, viene utilizzato un modello in grado di catturare queste diverse possibili strategie di scelta. A questo fine viene usata la cosiddetta equazione soft-max:
softmax <- function(beta, x) {
1 / (1 + exp(-beta * x))
}
beta <- 5
x <- seq(-1, 1, length.out = 100)
y <- softmax(beta, x)
plot(
x,
y,
type = 'l',
#ylim = c(0,1),
xlab = "Valore (A) - valore (B)",
ylab = "p(scelta = A)"
)
Si noti che
- La probabilità di scegliere lo stimolo A aumenta in modo monotono con la differenza di valore A - B.
- La funzione softmax ci dice che l’agente sceglierà lo stimolo A la maggior parte delle volte quando
, ma non sempre. - Da qui deriva il termine ‘softmax’: l’agente sceglie lo stimolo con il valore maggiore la maggior parte delle volte (ma non sempre), quindi questa è una funzione di massimizzazione ‘soft’.
Informazioni sulla sessione di lavoro
Session Info
Sono qui fornite le informazioni sulla sessione di lavoro insieme all’elenco dei pacchetti usati. I pacchetti contrassegnati con un asterisco(*) sono stati usati esplicitamente nello script.
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.2.2 (2022-10-31)
os macOS Big Sur ... 10.16
system x86_64, darwin17.0
ui X11
language (EN)
collate it_IT.UTF-8
ctype it_IT.UTF-8
tz Europe/Rome
date 2022-11-22
pandoc 2.19.2 @ /Applications/RStudio.app/Contents/MacOS/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
cli 3.4.1 2022-09-23 [1] CRAN (R 4.2.0)
digest 0.6.30 2022-10-18 [1] CRAN (R 4.2.2)
evaluate 0.18 2022-11-07 [1] CRAN (R 4.2.2)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.2.0)
htmltools 0.5.3 2022-07-18 [1] CRAN (R 4.2.0)
htmlwidgets 1.5.4 2021-09-08 [1] CRAN (R 4.2.0)
jsonlite 1.8.3 2022-10-21 [1] CRAN (R 4.2.2)
knitr 1.41 2022-11-18 [1] CRAN (R 4.2.2)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.2.0)
rlang 1.0.6 2022-09-24 [1] CRAN (R 4.2.0)
rmarkdown 2.18 2022-11-09 [1] CRAN (R 4.2.0)
rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.2.0)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.0)
stringi 1.7.8 2022-07-11 [1] CRAN (R 4.2.1)
stringr 1.4.1 2022-08-20 [1] CRAN (R 4.2.0)
xfun 0.35 2022-11-16 [1] CRAN (R 4.2.0)
yaml 2.3.6 2022-10-18 [1] CRAN (R 4.2.2)
[1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library
──────────────────────────────────────────────────────────────────────────────