Gittins index
- 資料
- s成功回数、f失敗回数
- 試行回数が大きくなるとインデックスはs/(s+f)に収束する
- 期待値はベータ分布事後分布を用いる
- インデックスの収束値からのずれは、その時点での予想報酬量のばらつきが多いほど、大きくなる
- インデックスの収束値からのずれは、成功率の下での成否の値のばらつきが大きいほど、小さくなる。成功率が0、1に近いほど小さくなる
- インデックスの収束値からのずれを近似式で提案している
- yは成否シークエンス、aは選択アーム列、は報酬量、は続行確率
試行回数が少ないほど、その時点での予想報酬量のばらつきが多いので、
my.gitting.psi <- function(s){ ret <- sqrt(s/2) ret[which(s>0.1)] <- 0.49-0.11*(s[which(s>0.1)])^(-1/2) ret[which(s>1)] <- 0.63-0.26*(s[which(s>1)])^(-1/2) ret[which(s>5)] <- 0.77-0.58*(s[which(s>5)])^(-1/2) ret[which(s>15)] <- (2*log(s[which(s>15)]) -log(log(s[which(s>15)])) - log(16*pi))^(1/2) return(ret) } s <- seq(from=0,to=20,length=200) plot(s,my.gitting.psi(s)) my.E <- function(s,f){ (s+1)/(s+f+2) } my.v <- function(s,f){ (s+1)*(f+1)/((s+f+2)^2*(s+f+2+1)) } my.sigma<- function(s,f){ n <- s+f p <- my.E(s,f) n*p*(1-p) } my.BrezziLai <- function(s,f,gamma){ E <- my.E(s,f) v <- my.v(s,f) s <- my.sigma(s,f) C <- -log(gamma) S <- v/(C*s) psi <- my.gitting.psi(S) ret <- E + v^(1/2) * psi return(ret) } s <- f <- 0:100 sf <- expand.grid(s,f) g <- 0.999 bb <- my.BrezziLai(sf[,1],sf[,2],g) library(rgl) plot3d(sf[,1],sf[,2],bb)