5D Library › 注意力网络、工作记忆瓶颈与内在动机的自决定理论 · English

第二章 工作记忆的瓶颈:组块、图式与认知负荷

注意力决定什么信息被选中,工作记忆决定被选中的信息能同时保留多少、能被怎样加工。几乎所有需要「想一想」的事情(心算、读一段复杂的说明、在会议中跟上论证)都要经过这个狭窄的通道。

从「7 ± 2」到「约 4 个组块」

证据

米勒 1956。 米勒在《心理学评论》上的著名文章把一维绝对判断(例如分辨几种音高)和即时记忆广度的研究放在一起,指出两者都在「七个左右」的范围内,并以半开玩笑的口吻称之为「神奇的数字 7 ± 2」。但他同时强调了一个关键区别:即时记忆的限制是以组块(chunk)计的,不是以信息量(比特)计的;人们可以通过把项目重新编码成更大的组块,记住远多于七个比特的信息 (Miller 1956)。考恩 2001。 考恩在《行为与脑科学》上的综述重新审查了容量研究,认为当复述和组块化等策略被控制或排除时,成人的工作记忆(他称为注意焦点的容量)约为 3 到 5 个组块,平均约 4 个;较大的「7」往往来自被试使用了复述或把项目合并成组块 (Cowan 2001)。

所以,「人最多能记住 7 件事」并不准确。更准确的说法是:在不能复述、不能把材料合并的条件下,人大约能同时把握 4 个组块;而一个组块有多大,取决于这个人长时记忆里已经有什么。

组块化是一种压缩

证据

国际象棋。 蔡斯与西蒙让不同水平的棋手看一个棋局 5 秒钟,然后凭记忆在空棋盘上复原。来自真实对局的棋局,大师复原得远比新手好;而棋子随机摆放时,大师的优势基本消失。他们据此认为,大师的优势不在于更大的工作记忆,而在于长时记忆中储存了大量熟悉的棋子组合,可以把一个棋局编码成少数几个大组块 (Chase and Simon 1973)。长时工作记忆。 埃里克森与金奇进一步提出,专家在自己的领域里能借助长时记忆中的「提取结构」,让工作记忆的有效容量远远超出几个组块,这解释了为什么熟练的阅读者或专家能同时把握大量信息 (Ericsson and Kintsch 1995)。

推导

下面的程序把组块化写成一种压缩:工作记忆有 K=4K = 4 个槽位,一个槽位放一个组块,不论组块多大。长时记忆提供一个图式库;字符串被贪婪地切分,先匹配最长的已知组块,第二层图式又可以把几个第一层组块绑成一个。

# Chunking as compression: K = 4 slots, one chunk per slot whatever its size. Greedy parse with a
# schema library (longest chunk first); level-2 schemas bind level-1 chunks. If the parse fits in K
# slots all is recalled, else only K chunks survive. Letters and schemas are illustrative.
import math, random
K = 4
STRING = "FBICIANSAPHDMBABBCCNNUSAUK"
LEVEL1 = {"FBI", "CIA", "NSA", "PHD", "MBA", "BBC", "CNN", "USA", "UK"}
LEVEL2 = {("FBI", "CIA", "NSA"): "US-AGENCIES", ("PHD", "MBA"): "DEGREES",
          ("BBC", "CNN"): "BROADCASTERS", ("USA", "UK"): "COUNTRIES"}

def parse(s, lib):
    out, i = [], 0
    while i < len(s):
        for L in range(min(5, len(s) - i), 0, -1):
            if L == 1 or s[i:i + L] in lib:
                out.append(s[i:i + L]); i += L; break
    return out

def bind(chunks, lib2):
    out, i = [], 0
    while i < len(chunks):
        for key in sorted(lib2, key=len, reverse=True):
            if tuple(chunks[i:i + len(key)]) == key:
                out.append(lib2[key]); i += len(key); break
        else:
            out.append(chunks[i]); i += 1
    return out

def recalled_letters(chunks, level1_of):
    kept = sorted(chunks, key=lambda c: -len(level1_of(c)))[:K]
    return min(len(STRING), sum(len(level1_of(c)) for c in kept))

inv = {v: "".join(k) for k, v in LEVEL2.items()}
size = lambda c: inv.get(c, c)
novice = list(STRING)
inter = parse(STRING, LEVEL1)
expert = bind(inter, LEVEL2)
print(f"string of {len(STRING)} letters; working memory holds K = {K} chunks")
for name, ch in (("novice (letters)", novice), ("level-1 acronyms", inter),
                 ("level-2 schemas", expert)):
    fits = "fits" if len(ch) <= K else "overflows"
    print(f"  {name:17s}: {len(ch):2d} chunks, {fits}; letters recalled about "
          f"{recalled_letters(ch, size):2d} of {len(STRING)}")
print("  expert parse:", " | ".join(expert))
bits = len(STRING) * math.log2(26)
lib = len(LEVEL1) + len(LEVEL2)
print(f"raw information {bits:.0f} bits; the expert stores 4 pointers into a library of "
      f"{lib} schemas, about {4 * math.log2(lib):.0f} bits")
rng = random.Random(4)
rnd = "".join(rng.sample(STRING, len(STRING)))   # same letters, shuffled
r = bind(parse(rnd, LEVEL1), LEVEL2)
print(f"shuffled string: expert parse has {len(r)} chunks, letters recalled about "
      f"{recalled_letters(r, size)}")
print("  the advantage vanishes when the material does not match the schemas (cf. random boards)")
# string of 26 letters; working memory holds K = 4 chunks
#   novice (letters) : 26 chunks, overflows; letters recalled about  4 of 26
#   level-1 acronyms :  9 chunks, overflows; letters recalled about 12 of 26
#   level-2 schemas  :  4 chunks, fits; letters recalled about 26 of 26
#   expert parse: US-AGENCIES | DEGREES | BROADCASTERS | COUNTRIES
# raw information 122 bits; the expert stores 4 pointers into a library of 13 schemas, about 15 bits
# shuffled string: expert parse has 24 chunks, letters recalled about 6
#   the advantage vanishes when the material does not match the schemas (cf. random boards)

同样 26 个字母,新手按字母记,有 26 个组块,只能保留 4 个字母;认识缩写的人把它们切成 9 个三字母或两字母组块,能保留约 12 个字母;拥有第二层图式的「专家」把它们归为「美国机构」「学位」「广播公司」「国家」4 个组块,全部装进工作记忆。从信息量看,原始字符串约 122 比特;专家只需要在一个 13 个图式的库里存 4 个指针,约 15 比特。把同样的字母打乱后,图式几乎匹配不上,专家的优势也就消失了,这与蔡斯与西蒙在随机棋局上的发现相对应。

这个程序当然只是示意:真实的组块并不像字符串匹配那样干净,组块的边界也会因人、因任务而异。但它抓住了要点:工作记忆的瓶颈以组块计,而组块的大小由长时记忆中的知识决定。提高一个人「同时能想多少」,最可靠的办法不是扩大槽位,而是积累可以打包的知识。

认知负荷理论

证据

斯威勒 1988。 斯威勒在《认知科学》上的文章指出,常规的「手段—目的分析」式问题解决虽然能找到答案,却占用大量认知资源,留给图式学习的资源很少;因此,大量做题不一定是学会解题的最好办法 (Sweller 1988)。三种负荷。 斯威勒、范梅里恩伯尔与帕斯 1998 年把认知负荷分为内在负荷(由材料本身各要素之间的交互性决定)、外在负荷(由材料的呈现方式造成,与学习无关)和相关负荷(用于构建图式、有益于学习的负荷),并提出教学设计应当降低外在负荷 (Sweller et al. 1998)。重新定义。 斯威勒 2010 年修订了这一框架:内在与外在负荷都由「要素交互性」决定,而相关负荷不再被看成可以与另外两种相加的第三种负荷,而是工作记忆中被分配去处理内在负荷的那部分资源 (Sweller 2010)。

推导

按斯威勒 2010 年的说法写一个玩具「负荷预算」:负荷以必须同时把握的交互要素计,容量约为 4 个组块。内在负荷 = 材料中尚未被学习者图式打包的交互要素;外在负荷 = 呈现方式额外增加的要素(例如必须把公式记在心里,同时在另一处寻找对应的图);相关负荷 = 实际用于内在要素的资源。

# Toy load budget after Sweller (2010): load = interacting elements held at once, capacity ~4.
# Intrinsic = elements not yet chunked; extraneous = elements added by the format; germane = the
# share of resources actually devoted to the intrinsic elements (not a third additive load).
CAP = 4.0

def budget(elements, chunked, extraneous):
    intrinsic = max(0, elements - chunked)
    total = intrinsic + extraneous
    over = max(0.0, total - CAP)
    # resources go first to the extraneous demands imposed by the format, the rest to the content
    germane = max(0.0, min(intrinsic, CAP - extraneous))
    return intrinsic, total, over, germane

CASES = [
    ("novice, split-attention format", 7, 0, 3),
    ("novice, integrated format", 7, 0, 0),
    ("novice, integrated, worked in 2 steps", 4, 0, 0),
    ("expert, split-attention format", 7, 6, 3),
]
print("case                                    | intrinsic | +extraneous | over capacity | germane")
for name, e, ch, ex in CASES:
    i, t, o, g = budget(e, ch, ex)
    print(f"{name:39s} | {i:9d} | {t:11.0f} | {o:13.0f} | {g:4.0f} of {i}")
print("reading: removing the split-attention demand frees 3 slots for the content itself; breaking")
print("the material into steps lowers intrinsic load for a novice; for the expert, schemas have")
print("already chunked most elements, so the same format costs little")
# case                                    | intrinsic | +extraneous | over capacity | germane
# novice, split-attention format          |         7 |          10 |             6 |    1 of 7
# novice, integrated format               |         7 |           7 |             3 |    4 of 7
# novice, integrated, worked in 2 steps   |         4 |           4 |             0 |    4 of 4
# expert, split-attention format          |         1 |           4 |             0 |    1 of 1
# reading: removing the split-attention demand frees 3 slots for the content itself; breaking
# the material into steps lowers intrinsic load for a novice; for the expert, schemas have
# already chunked most elements, so the same format costs little

这个预算说明三件事。第一,对新手而言,「分离注意」的呈现方式额外占用 3 个槽位,留给内容本身的只剩 1 个;把图文整合在一起,就能把 3 个槽位还给内容。第二,把 7 个交互要素拆成两步,每步 4 个,内在负荷就降到容量之内。第三,对已有图式的专家,同样的呈现方式代价很小,因为大部分要素已经被打包了。数字都是示意性的;真实的认知负荷很难直接测量,通常只能从主观评分、次任务表现或学习结果间接推断。

假说 · 尚未验证

外部卸载假说(尚未确立)。在需要同时跟踪多件未完成事项的工作中,把这些事项写到外部(纸、清单或看板)上,可以释放工作记忆,使主要任务的错误率下降,而且未完成事项越多,好处越大。可以检验的预测:在一项随机实验中,「把待办事项写下来」组与「只在心里记着」组相比,在未完成事项为 2 个时差异很小,为 6 个时差异明显。如果两组在任何数量下都没有差别,这一假说就是错的。

本章小结

工作记忆的容量不是「7 ± 2」,而是在排除复述与组块化之后约 3 到 5 个组块;米勒本人强调的正是组块与比特的区别。专家的优势主要来自长时记忆中的图式,使他们能把大量项目压缩成少数几个组块;材料与图式不匹配时,优势随之消失。认知负荷理论区分内在负荷与外在负荷;相关负荷在后来的修订中被理解为分配给内在负荷的资源,而不是第三种可相加的负荷。下一章讨论当注意力在不同任务之间来回切换时,代价从哪里来。

参考文献

Chase, William G., and Herbert A. Simon. 1973. “Perception in Chess.” Cognitive Psychology 4 (1): 55–81. https://doi.org/10.1016/0010-0285(73)90004-2.
Cowan, Nelson. 2001. “The Magical Number 4 in Short-Term Memory: A Reconsideration of Mental Storage Capacity.” Behavioral and Brain Sciences 24 (1): 87–114. https://doi.org/10.1017/S0140525X01003922.
Ericsson, K. Anders, and Walter Kintsch. 1995. “Long-Term Working Memory.” Psychological Review 102 (2): 211–45. https://doi.org/10.1037/0033-295X.102.2.211.
Miller, George A. 1956. “The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information.” Psychological Review 63 (2): 81–97. https://doi.org/10.1037/h0043158.
Sweller, John. 1988. “Cognitive Load During Problem Solving: Effects on Learning.” Cognitive Science 12 (2): 257–85. https://doi.org/10.1207/s15516709cog1202_4.
Sweller, John. 2010. “Element Interactivity and Intrinsic, Extraneous, and Germane Cognitive Load.” Educational Psychology Review 22 (2): 123–38. https://doi.org/10.1007/s10648-010-9128-5.
Sweller, John, Jeroen J. G. van Merriënboer, and Fred G. W. C. Paas. 1998. “Cognitive Architecture and Instructional Design.” Educational Psychology Review 10 (3): 251–96. https://doi.org/10.1023/A:1022193728205.

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).