5D Library › 注意力网络、工作记忆瓶颈与内在动机的自决定理论 · English
第三章 切换的代价:任务切换、注意力残留与几秒钟的打断
「多任务」在日常语言里常被当作一种能力。实验室研究看到的则主要是代价:从一个任务转到另一个任务,需要时间,会增加错误,而且这种代价不能靠「准备得更充分」完全消除。
切换代价与残余代价
证据
交替序列范式。 罗杰斯与蒙塞尔让被试按可预测的顺序(例如 AABB)在两个简单分类任务之间交替,比较切换试次与重复试次的反应时。切换试次明显更慢、更易出错;当两次反应之间的间隔从很短延长到约 600 毫秒时,切换代价明显减小,但延长到 1 秒以上之后仍然存在相当大的残余代价。他们认为,任务设置的重新配置一部分可以由内源性控制提前完成,另一部分只有在刺激出现后才能完成 (Rogers and Monsell 1995)。综述。 蒙塞尔 2003 年的综述总结了任务切换研究的主要发现:切换代价、准备效应、即使充分准备也不消失的残余代价,以及在混合任务的区组中即使是重复试次也比单一任务区组慢的「混合代价」 (Monsell 2003)。
推导
下面用一个玩具模型来写这个结构:两个任务设置的激活水平 、 各自衰减,并互相抑制:
是控制输入:被提示的任务得到 ,另一个为 0。照罗杰斯与蒙塞尔的思路,刺激出现之前新任务的输入最多只能达到 0.65,其余部分要等刺激出现后才到位。当新旧任务的激活差超过一个判断标准时作出反应;刺激出现时旧任务的残留激活越高,出错的概率越大。所有参数都是示意性的。
# Competing task sets with decay and mutual inhibition (toy model, units ms, values illustrative):
# tau da1/dt = -a1 + c1 - w*a2, tau da2/dt = -a2 + c2 - w*a1
# Before the stimulus the new set's input is capped at PREP (after Rogers & Monsell 1995);
# RT = base + time until a_new - a_old > CRIT; errors rise with a_old at stimulus onset.
import math
TAU, W, PREP, CRIT, BASE, DT = 150.0, 0.6, 0.65, 0.80, 450.0, 1.0
def trial(switch, rsi):
a_new, a_old = (0.0, 1.0) if switch else (1.0, 0.0) # state left by the previous trial
t, c_new = 0.0, PREP if switch else 1.0
def step(a, b, ca, cb):
da = (-a + ca - W * b) / TAU; db = (-b + cb - W * a) / TAU
return max(0.0, a + da * DT), max(0.0, b + db * DT)
while t < rsi: # preparation interval
a_new, a_old = step(a_new, a_old, c_new, 0.0); t += DT
old_at_onset = a_old
rt = 0.0
while a_new - a_old < CRIT: # stimulus: full input to the new set
a_new, a_old = step(a_new, a_old, 1.0, 0.0); rt += DT
p_err = 0.02 + 0.25 / (1 + math.exp(-(old_at_onset - 0.30) / 0.08))
return BASE + rt, p_err
print("preparation (RSI ms) | repeat RT | switch RT | switch cost | switch error rate")
for rsi in (50, 150, 300, 600, 1200, 2400):
r, _ = trial(False, rsi); s, e = trial(True, rsi)
print(f"{rsi:20d} | {r:9.0f} | {s:9.0f} | {s - r:11.0f} | {e:10.1%}")
r, _ = trial(False, 5000); s, _ = trial(True, 5000)
print(f"residual cost with unlimited preparation: about {s - r:.0f} ms (cannot be prepared away)")
# preparation (RSI ms) | repeat RT | switch RT | switch cost | switch error rate
# 50 | 450 | 738 | 288 | 26.9%
# 150 | 450 | 677 | 227 | 16.8%
# 300 | 450 | 605 | 155 | 2.6%
# 600 | 450 | 546 | 96 | 2.6%
# 1200 | 450 | 534 | 84 | 2.6%
# 2400 | 450 | 534 | 84 | 2.6%
# residual cost with unlimited preparation: about 84 ms (cannot be prepared away)模型重现了实验的定性形状:准备时间为 50 毫秒时切换代价约 288 毫秒,出错率约 27%;准备时间延长到 600 毫秒,代价降到约 96 毫秒;再延长到 1 秒以上,代价停在约 84 毫秒,这部分不能靠准备消除。具体数值取决于示意参数,不应拿来与任何实验逐一比较。
注意力残留
证据
勒罗伊 2009。 勒罗伊在两项实验中让被试先做一个文字任务(能完成或不能完成,有或没有时间压力),然后转去评估求职简历。在两个任务之间插入的词汇判断任务里,对第一个任务相关词的反应更快,表明注意仍然停留在第一个任务上。第一项实验(84 名本科生)发现,在时间压力下完成了第一个任务的人残留最少;第二项实验(78 名本科生)发现,他们在简历评估上表现最好。勒罗伊称这种现象为注意力残留,并认为在时间压力下完成任务带来一种「认知上的了结」,让人更能完全转向下一个任务 (Leroy 2009)。
注意力残留说明,切换的代价不只是几百毫秒的重新配置:一件没有了结的事会继续占用一部分注意与工作记忆。但要注意勒罗伊实验的范围:任务是实验室里的短任务,测量是几分钟之内的残留,不能直接推出「残留会持续多久」。
办公室里的打断:「23 分钟」是什么
证据
观察研究。 马克、冈萨雷斯与哈里斯在一家为金融机构提供信息技术与会计服务的外包公司详细观察了 24 名信息工作者(经理、分析师与软件开发人员),总计 700 多小时。他们把相关的活动归为「工作领域」(working sphere)。人们在一个工作领域中平均停留 11 分 4 秒就会转向别的领域;57.1% 的工作领域片段被打断;被打断的工作中 77.2% 在当天恢复,这些当天恢复的工作平均在 25 分 26 秒之后才被重新拾起,其间平均经过 2.26 个其他工作领域;由外部打断的工作恢复得较快(平均 22 分 37 秒),由自己中断的较慢(平均 29 分 1 秒),但这一差别只是趋势()(Mark et al. 2005)。实验研究。 马克、古迪特与克洛克让 48 名被试处理电子邮件,并在其中插入打断。被打断时人们完成得反而更快,质量没有显著下降,但报告了更高的压力、挫败感、时间压力和脑力负荷 (Mark et al. 2008)。
流传甚广的「被打断后需要 23 分钟才能恢复专注」大约是这些数字的转述,但意思已经变了:原研究测量的是多久之后回到被打断的工作,其间人们大多在做别的事;它没有测量专注程度。
几秒钟的打断与下一步的错误
证据
阿尔特曼、特拉夫顿与汉布里克 2014。 300 名大学生做一个需要按固定顺序执行多个步骤的程序性任务,过程中偶尔被要求输入一串字符(打断)。第一项实验中打断平均约 4.4 秒,打断后第一步的序列错误率为 5.8%,基线(同一程序第 2 至 5 步的错误率)为 1.8%,增至三倍多;第二项实验中打断平均约 2.8 秒,错误率为 4.3%,基线为 2.0%,增至两倍多。与顺序无关的其他错误不受打断影响 (Altmann et al. 2014)。研究者用「目标记忆」的激活理论解释:记录「做到哪一步了」的心理标记在打断期间衰减 (Altmann and Trafton 2002)。
推导
这两个数据点能告诉我们什么?下面的程序把超出基线的错误率写成 的描述性形式(这是我们的选择,不是原作者的模型),并检查它是否已经呈现饱和。
# Altmann, Trafton & Hambrick (2014): sequence errors after interruptions of about 2.8 s (4.3 %,
# baseline 2.0 %) and 4.4 s (5.8 %, baseline 1.8 %), from two separate experiments.
# Descriptive fit (our choice, not the authors' model): excess error = b * D**k.
import math
DATA = [(2.76, 0.043, 0.020), (4.36, 0.058, 0.018)] # duration (s), error rate, baseline
(d1, p1, b1), (d2, p2, b2) = DATA
e1, e2 = p1 - b1, p2 - b2
k = math.log(e2 / e1) / math.log(d2 / d1)
b = e1 / d1 ** k
print(f"excess sequence errors: {e1:.1%} after {d1} s, {e2:.1%} after {d2} s")
print(f"ratio to own baseline: {p1 / b1:.1f} x and {p2 / b2:.1f} x ('doubled', 'tripled')")
print(f"power fit: excess = {b * 100:.2f} % * D^{k:.2f}, a little steeper than linear")
print(f" (about {e1 / d1 * 100:.1f} percentage points per second of interruption)")
lin_ratio = d2 / d1
print(f"a saturating curve through the origin can rise at most {lin_ratio:.2f}-fold"
f" from {d1} to {d2} s;")
print(f"the data rise {e2 / e1:.2f}-fold, so within this range they show no sign of levelling off")
print("extrapolation (shape assumed, NOT supported by the data):")
for d in (10.0, 30.0):
print(f" {d:4.0f} s: power law {min(1.0, b1 + b * d ** k):.0%}; but the next-step error rate"
f" must level off somewhere")
print("these are errors at the NEXT step of an interrupted procedure, not minutes of lost focus")
# excess sequence errors: 2.3% after 2.76 s, 4.0% after 4.36 s
# ratio to own baseline: 2.1 x and 3.2 x ('doubled', 'tripled')
# power fit: excess = 0.67 % * D^1.21, a little steeper than linear
# (about 0.8 percentage points per second of interruption)
# a saturating curve through the origin can rise at most 1.58-fold from 2.76 to 4.36 s;
# the data rise 1.74-fold, so within this range they show no sign of levelling off
# extrapolation (shape assumed, NOT supported by the data):
# 10 s: power law 13%; but the next-step error rate must level off somewhere
# 30 s: power law 43%; but the next-step error rate must level off somewhere
# these are errors at the NEXT step of an interrupted procedure, not minutes of lost focus结果显示:每秒打断大约使下一步的序列错误率增加 0.8 个百分点,在 2.8 到 4.4 秒的范围内看不出趋于饱和的迹象。但两个点来自不同的实验与被试,只能算两个点,不是一条曲线;向 10 秒、30 秒外推完全没有数据支持。更重要的是,这里的错误是被打断的那个程序的下一步出错,不是「之后几分钟都无法专注」。
「看一眼消息毁掉 15 分钟」?
作者的框架中有一句话:「看一眼微信 10 秒毁掉接下来 15 分钟。」本书没有找到直接支持这一说法的研究:没有实验测量过 10 秒的查看对之后 15 分钟工作的影响。上面的证据说明打断有代价,但不能给出「15 分钟」这样的具体数字。
推导
用一个玩具的「一小时预算」看看,「15 分钟」这样的结论有多依赖假设。每次切换包括约 0.3 秒的重新配置、30 秒找回位置,以及注意力残留:切换后效率先降低 30%,再以时间常数 恢复。 不是任何研究测得的量。
# One-hour budget for switching: reconfiguration (s), resumption (s) and attention residue,
# efficiency 1 - R*exp(-t/TAU_RES) after each switch. R and TAU_RES are NOT measured quantities;
# the program shows how strongly the answer depends on TAU_RES.
import math
HOUR = 3600.0
RECONF, RESUME, R = 0.3, 30.0, 0.30 # seconds, seconds, initial efficiency loss
def effective_minutes(switches, tau_res):
if switches == 0:
return 60.0
gap = HOUR / switches # evenly spaced switches
lost = switches * (RECONF + RESUME)
work = max(0.0, gap - RECONF - RESUME)
# integral of R*exp(-t/tau) over one working stretch
residue = R * tau_res * (1 - math.exp(-work / tau_res)) if tau_res > 0 else 0.0
lost += switches * residue
return max(0.0, (HOUR - lost) / 60)
print("effective working minutes in one hour (60 = no loss)")
print("switches/hour | residue tau = 0 s | 60 s | 5 min | 15 min")
for n in (0, 2, 6, 12, 30, 60):
row = [effective_minutes(n, t) for t in (0, 60, 300, 900)]
print(f"{n:13d} | {row[0]:17.1f} | {row[1]:4.1f} | {row[2]:5.1f} | {row[3]:6.1f}")
print("claim to test: 'a 10-second glance at a message ruins the next 15 minutes'")
one = 60 - effective_minutes(1, 900)
print(f" with tau = 15 min this toy model loses {one:.1f} min per glance; with tau = 60 s, "
f"{60 - effective_minutes(1, 60):.1f} min.")
print(" the answer is set by an assumed parameter, so the model cannot confirm the claim")
# effective working minutes in one hour (60 = no loss)
# switches/hour | residue tau = 0 s | 60 s | 5 min | 15 min
# 0 | 60.0 | 60.0 | 60.0 | 60.0
# 2 | 59.0 | 58.4 | 56.0 | 51.2
# 6 | 57.0 | 55.2 | 49.3 | 44.3
# 12 | 53.9 | 50.4 | 43.3 | 40.0
# 30 | 44.9 | 37.9 | 33.2 | 32.0
# 60 | 29.7 | 22.7 | 21.2 | 20.9
# claim to test: 'a 10-second glance at a message ruins the next 15 minutes'
# with tau = 15 min this toy model loses 4.9 min per glance; with tau = 60 s, 0.8 min.
# the answer is set by an assumed parameter, so the model cannot confirm the claim在这个模型里,每小时切换 12 次时,有效工作时间从 60 分钟降到 54 分钟(不考虑残留)到 40 分钟(残留时间常数 15 分钟)不等;一次「看一眼」的代价从 0.8 分钟到 4.9 分钟不等,完全取决于 的假设。这正说明:模型可以帮助我们组织问题,却不能代替测量。
假说 · 尚未验证
残留时间常数假说(尚未确立)。一次简短的查看手机之后,主要任务的效率下降随时间按指数规律恢复,时间常数在 1 到 5 分钟之间,而不是 15 分钟。可以检验的预测:在一项实验中,在持续的校对任务中随机安排一次 10 秒的查看消息,比较查看后每一分钟的错误率与未查看的对照段;错误率的超出部分在 5 分钟之内应降到初始值的三分之一以下。如果 15 分钟后仍有明显超出,这一假说就是错的,「15 分钟」的说法反而得到支持。
本章小结
任务切换有可靠的代价:切换试次更慢、更易出错,准备可以减少代价,但有一部分残余代价无法靠准备消除。未了结的任务留下注意力残留,在时间压力下完成任务可以减少残留。几秒钟的打断就能使下一步的序列错误率约增至两倍到三倍;「23 分钟」是被打断工作的平均恢复间隔,不是恢复专注的时间;「看一眼消息毁掉 15 分钟」没有直接证据。下一章转向动机:奖励在什么情况下会挤出一个人对活动本身的兴趣。
参考文献
Fan, Y. (2026). Attention Networks, the Working-Memory Bottleneck and Self-Determination Theory: From Posner's Tripartite Network and Motivation Crowding-Out to the Information Theory of Flow, Read Beside Neo-Confucian Reverence (Jìng) [注意力网络、工作记忆瓶颈与内在动机的自决定理论] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23761341 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).