MPRの2つ目の原理、Constraint 制約について説明していきます。
前回の記事では、強化の頻度によって覚醒の度合いが上がるということと、覚醒の度合いと反応の度合いには線形の関係性があるということを書きました。しかしながら、実際の生体の動きを見てみると、どんなに覚醒をしたとしても、反応の度合いには天井が生じてしまいます。そんな天井、つまりConstraint 制約がどのように生まれるかを説明していきます。
まずはIRTについての説明の後に、Constraintについて理解を深めていきます。
IRT 反応間間隔とresponse rate反応率の関係性
IRT 反応間間隔
IRTとは、Inter-Response Timeです。言葉の通りですが、これは反応と反応との間の時間を意味します。
反応と反応との間と書いていますが、このIRTはどのような時間の構成要素によって成立しているでしょうか。それは、「反応に要する時間」δと、「本当の反応間間隔」τです。
一応式にすると、
\[ IRT = \delta + \tau \]
となります。では、それぞれのギリシャ文字の説明をしていきます。
δは、反応に要する時間と言っていますが、これは標的になっている行動の発生に必要な時間です。標的となる反応が「レバーを押す」という行動だとしましょう。スキナー箱の設定にもよるでしょうが、通常「レバーを押す」というのは「動物の反応によりレバーで制御する接点が接続して電気回路に通電が起こった」というように点で表現がされてしまいます。つまり、0秒で反応が生起したように見えてしまうということです。しかしながら、実際の動物の反応を見てみると「レバーを押す」という行動には必ず0秒より大きい時間が必要になります。特に工夫せずにスキナー箱で記録したら0秒で動いたように見えてしまうものの、0秒で動く、つまり瞬間移動ができる動物がいたら怖いですもんね。クロロはなんかすごい速さで手刀を打ち込めますが、それでも「俺でなきゃ見逃せないね」という名言が出る程度の速さなので瞬間移動ではありません。クロロが手刀を打ち込むのにすら「反応に要する時間」δが発生しているわけですね。
後で重要になるので再度書いておきます。スキナー箱では、0秒で反応しているように見えたとしても、実際に「反応に要する時間」δはどんなに小さくとも必ず0より大きな値になります。
次のτは、シンプルな話で、次の反応までの時間から反応に要する時間δを差し引いた時間です。仮に反応と反応との時間間隔が1秒ならば、
\[ τ = 1 - δ \]
と表記できます。
ちなみに、このτは、先ほどδを差し引いた時間と書きましたが、言い換えるならば、標的になっている行動(上の例ではレバー押し)以外の行動に割くことができる時間とも言えます。
Response Rate 反応率を出してみる
Response Rate 反応率を出すことを考えましょう。ここでは、bという変数が1秒あたりの反応回数、つまり反応率を指します。この時、反応率bは伝統的には以下の式で表現することができます。
\[ b = \frac{1}{\delta + \tau} \]
シンプルな話ですね。反応間間隔であるIRTで1を割るだけですね。その値が反応率になるということです。
ところで、1秒のIRTでのτの算出の式を以下の通り書きました。
\[ τ = 1 - δ \]
少し違和感がありますが、反応率b、つまり1秒間にb回反応をするという状況の下で、どれだけ他の行動に時間を割けるかの総和がτであるとすると、それは以下の式で表す事ができます。
\[ τ = 1 - bδ \]
この時、bの値が1/δに近づくことを考えましょう。これは「反応に要する時間」δだけで1秒という時間が埋め尽くされる状態です。言い換えるならば、休み(τ)なく反応し続けている状態ですね。つまりτ=0になっている状態です。式にするとこうなります。
\[ 0 = 1 - bδ \]
その時、bの最大値bmaxは以下の式で表せます。
\[ b_{max} = \frac{1}{\delta} \]
ここで、重要なのはbmax には絶対に上限が生じます。
具体的に考えてみましょう。たとえば、よく訓練を積んでレバーの早押しができるラットがいるとします。また、このラットのレバー押しそれ自体の限界の速さが、0.1秒だったとします。つまり、δの限界の下限が0.1という状態です。この時、このラットが1秒間に反応できる回数の限界は、1/0.1で、10回になります。これは休みなく限界速度でレバーを押している状態です。このラットはこれ以上早くボタンを押す事ができませんから、bmax は10を超える事ができなくなってしまいます。
以上から、最初の方に書いた伝統的な反応率の式
\[ b = \frac{1}{\delta + \tau} \]
には、一つ重大な問題が生じます。それは、高頻度に行動が行われている状態を考えようとしても、bには必ず1/δという上限が必ず付き纏ってしまうということです。訓練を積んだラットの例だと、反応率の上限は必ず10回になってしまうということですね。この上限がConstraintになります。
問題とは言っていますが、学問として反応率を考えない場合には、僕もこの定義で良い気はします。「反応に要する時間」δが反応率の上限を決めてしまうというだけの話ですからね。
一方、τを使って反応率bを以下の式で定義してみたと考えてみましょう。
\[ b = \frac{1}{\tau} \]
この時、「反応に要する時間」δを分離して、真の反応間隔τをとる事ができたとします。
先ほどの早押しラットを思い出しましょう。「レバーを押す」という行動を分解してみると
レバーに手をかける
レバーを押し込む
レバーから手を離す
という一連の動作になります。この時、それぞれについて時点を取ることができたとします。たとえば
レバーに触れた時の電流の変化を感知する(0.05秒点)
レバーを押し込んでスイッチがオンになる(0.10秒点)
レバーから手を離して生じた電流の変化を感知する(0.15秒点)
レバーに触れた時の電流の変化を感知する(0.35秒点)
レバーを押し込んでスイッチがオンになる(0.40秒点)
レバーから手を離して生じた電流の変化を感知する(0.45秒点)
とします。この計測方法ではレバーに触れた0.05秒点から手を離して生じた電流の変化である0.15秒の間の時間である0.1秒というのが「反応に要する時間」δであり、「手を離している時間」、つまりは手を離して(0.15秒点)からレバーに触れた(0.35秒点)の時間、0.2秒がτに対応します。
動物の行動は、先ほども書きましたがどんなに短くとも必ず時間が必要であり、δは0になりません。しかし、τについて考えてみましょう。これは、究極的には0にすることができます。なぜなら休まなければ良いからです。
先ほどの例であれば、
レバーに触れた時の電流の変化を感知する(0.05秒点)
レバーを押し込んでスイッチがオンになる(0.10秒点)
レバーから手を離さないため電流の変化を感知できない(0.??秒点)
レバーを押し込んでスイッチがオンになる(0.20秒点)
レバーから手を離さないため電流の変化を感知できない(0.??秒点)
レバーを押し込んでスイッチがオンになる(0.30秒点)
というような挙動をラットが示したとしましょう。この時、τというのは0です。となると、b = 1/τで表現した反応率であれば、bは無限大にすることができるようになります。つまり、反応率の上限がなくなるんですね。
Peter R. Killeen and Sitomer (2003) 曰く、1/τで表現した反応率の方が、上限がなくなるからより良い測定方法である可能性があるとのことです。
arousal 覚醒と反応率の関連性
さて、arousalと反応率の関係性について Peter R. Killeen et al. (2002) は以下の関係性を発見しました。
その発見とは、1/τ は、覚醒レベルAと相関するということでした。また、前回の記事の最後に書いたように覚醒レベルは、A = arという式で表現されます。これらから以下の式が得られます。aは特定の強化子に対する活性度であるspecific activation、rは、強化子の出現頻度です。
\[ \frac{1}{\tau} = ar \]
さらに式を変形すると、
\[ \tau = \frac{1}{ar} \]
となります。
さて、伝統的に反応率として利用されていた
\[ b = \frac{1}{\delta + \tau} \]
という式に、代入して変形すると、以下の式になります。
\[ b = \frac{r}{\delta r + \frac{1}{a}} \]
この式の分母の左側を見てみましょう。反応には必ず時間を要するため、δrというのは必ず0より大きくなります。一方右側の、1/aについて見てみましょう。aの値が大きくなると、0に近づいていきます。つまり、この分母の最小値は、必ずδの大きさに依存してしまいます。
また、分子のrは、強化の頻度です。
以上より、上で問題点として挙げた通りですが、最大の反応率bmaxは先に示した式のように天井が生じてしまいます。
\[ b_{max} = \frac{1}{\delta r} \]
この関係性をグラフにしておきます。
##なんのパッケージ使ってるかを示すために、見えるようにしておきます。
rm(list = ls())
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
rate_get <- function(delta, r, a){
b <- r / (delta * r + (1/a))
return(b)
}
##deltaは生物がマックスの速度で動いているものと捉えるために、固定の0.1秒に設定
DF_rate <- data.frame(
r = rep(1:10, 100)
,a = rep(c(1:10), each = 100)
,delta = 0.1
)
DF_rate <- DF_rate %>% mutate(
.
,b = rate_get(delta = DF_rate$delta, r = DF_rate$r, a = DF_rate$a)
)
DF_rate %>% ggplot(
.
,aes(x = a, y = b, colour = r)
) + geom_point()
このグラフのように、1/0.1 = 10の天井を超えないような反応率が出てきます。
Constraintとは
\[ b = \frac{r}{\delta r + \frac{1}{a}} \]
この式で示されるMPRの第二の重要な原理とは、反応率bは、「反応に要する時間」δというConstraint 制約が課されるということです。
おまけ IRTの分布を描いてみる
ちなみに、Peter R. Killeen et al. (2002) では、FRスケジュール下での生物の反応についてのIRTの分布を出しています。今手元にラットくんがいないので、Rコードでその分布を描いてみたいと思います。
\[ IRT = \delta + \tau \]
という式ですが、Peter R. Killeen et al. (2002) の実験では、δの値は0.07秒で固定されていますが、その後のτの時間というのは平均的には、0.22秒だったそうです。ただし、τは右の裾野が広いような分布になっていました。つまり、指数関数的な分布になっていたということです。
これらを設定して作図しましょう。
n_resp <- 1e4 # 反応数
delta <- 0.07 # 反応に要する時間 (s)
lambda <- 1/0.22 # delta後の発生率
tau <- rexp(n_resp, rate = lambda)
irt <- delta + tau
# ビンごとに相対頻度を集計
bin_width <- 0.10
breaks <- seq(0, ceiling(max(irt)/bin_width)*bin_width, by = bin_width)
DF_IRT <- data.frame(
IRT = irt
) %>% mutate(
.
,bin = cut(IRT, breaks = breaks, right = FALSE)
) %>% count(# 各ビンの度数
bin
,.drop = FALSE
) %>% mutate(
rel_freq = n / sum(n) # 相対頻度
,bin_center = (as.numeric(bin) - 0.5) * bin_width # ビン中央
)
##理論的な指数分布の値を追加しとく。
DF_IRT <- DF_IRT %>% mutate(
.
,theory = ifelse(
bin_center < delta, 0
,lambda * exp(-lambda * (bin_center - delta)) * bin_width
)
)
ggplot(
DF_IRT
,aes(x = bin_center, y = rel_freq)
) + geom_col(
fill = "grey80"
,colour = "black"
,width = bin_width
) + geom_line(
aes(y = theory)
,colour = "red"
,size = 1
) +
scale_x_continuous(
"IRT (s)"
,breaks = seq(0, max(breaks), 0.1)
) +
scale_y_continuous("Relative frequency") +
labs(title = "Simulated IRT distribution ",
subtitle = paste("delta =", delta, "s ; tau = ", round(mean(tau), 2), "/s")) +
theme_bw(base_size = 14)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
グラフの説明をしておきます。横軸はIRTの長さです。縦軸は、そのIRTの相対的な出現頻度です。
ヒストグラムのbin達は、実際に観測される頻度です。
一方、赤色の線は、τの指数関数的な出現確率に基づいた、理論的な線です。τは、δの時間内に出現するはずがないので、δを超える(このグラフなら0.1を超える)までは生じ得ないため、0.2秒以降に赤色の線が出現します。面白いのが元の論文では、このδのことをrefractory periodと記述しています。まるで神経が反応できないかのような表現ですね。
さて、ヒストグラムのbin達を改めて見ましょう。このグラフを見てみるとよくわかりますが、IRTの出現は、δの秒数の近くに集まります。これが、反応率bは、「反応に要する時間」δという制約が課されるということを行動の観察レベルで確認できるということですね。
まだこの先は読めていませんが、FRは休止が起きやすいわけですが、VRやRRでは休止が起きにくいとされていますよね。環境側のランダムさによって、この指数関数の分布を調整するような操作が効いてきたら、休止が起きにくくなったりしそうですね。