updateWeightsNoCueCompetition {edl} | R Documentation |
Function implementing the Rescorla-Wagner learning equations without cue competition for a single learning event.
Description
Function implementing the Rescorla-Wagner learning equations without cue competition (for illustration purposes) for a single learning event. A set of cues and outcomes are provided, and a weightmatrix that needs to be updated.
Usage
updateWeightsNoCueCompetition(
cur.cues,
cur.outcomes,
wm = NULL,
eta = 0.01,
lambda = 1,
alpha = 0.1,
beta1 = 0.1,
beta2 = 0.1
)
Arguments
cur.cues |
A vector with cues. |
cur.outcomes |
A vector with outcomes. |
wm |
A weightmatrix of class matrix. If not provided a new weightmatrix is returned. Note that the cues and outcomes do not necessarily need to be available as cues and outcomes in the weightmatrix: if not present, they will be added. |
eta |
Learning parameter, typically set to 0.01.
If |
lambda |
Constant constraining the connection strength. |
alpha |
Learning parameter (scaling both positive and negative evidence adjustments), typically set to 0.1. |
beta1 |
Learning parameter for positive evidence, typically set to 0.1. |
beta2 |
Learning parameter for negative evidence, typically set to 0.1. |
Value
A weightmatrix (matrix)
Author(s)
Dorothee Hoppe, based on RescorlaWagner
See Also
Other functions for explaining error-driven learning:
RWlearningNoCueCompetition()
,
RWlearningNoOutcomeCompetition()
,
updateWeightsNoOutcomeCompetition()
Examples
# load example data:
data(dat)
# add obligatory columns Cues, Outcomes, and Frequency:
dat$Cues <- paste("BG", dat$Shape, dat$Color, sep="_")
dat$Outcomes <- dat$Category
dat$Frequency <- dat$Frequency1
head(dat)
dim(dat)
# now use createTrainingData to sample from the specified frequencies:
train <- createTrainingData(dat)
# this training data can actually be used train network:
wm <- RWlearningNoCueCompetition(train)
# retrieve trained network:
new <- getWM(wm)
train2 <- createTrainingData(dat)
updateWeightsNoCueCompetition(getValues(train2$Cues[1]),
getValues(train2$Outcomes[1]), wm=new)
# comparison between eta and alpha, beta1, beta2:
check.cues <- c("BG", "car", "red")
new[check.cues,]
tmp1 <- updateWeights(check.cues,
c("vehicle", "animal"), wm=new)
tmp2 <- updateWeights(check.cues,
c("vehicle", "animal"), wm=new, eta=NULL)
tmp3 <- updateWeights(check.cues,
c("vehicle", "animal"), wm=new, beta1=0.2)
tmp4 <- updateWeights(check.cues,
c("vehicle", "animal"), wm=new, eta=NULL, beta1=0.2)
# these two should be the same:
tmp1[check.cues,]
tmp2[check.cues,]
# now we change beta2, but this does not change anything,
# because eta is being used:
tmp3[check.cues,]
# when we turn eta off, beta2 changes the values:
tmp4[check.cues,]