5D Library › Attention Networks, the Working-Memory Bottleneck and Self-Determination Theory · 中文
Chapter 2 The Working-Memory Bottleneck: Chunks, Schemas and Cognitive Load
Attention decides which information is selected; working memory decides how much of it can be held at once and what can be done with it. Almost everything that requires “thinking it through” (mental arithmetic, reading a complicated set of instructions, following an argument in a meeting) has to pass through this narrow channel.
From “7 ± 2” to “about 4 chunks”
Evidence
Miller 1956. Miller’s famous article in Psychological Review set studies of one-dimensional absolute judgement (telling apart a number of pitches, say) beside studies of immediate memory span, noted that both fell in the range of “about seven”, and half-jokingly called it “the magical number seven, plus or minus two”. But he stressed a key difference: the limit of immediate memory is counted in chunks, not in amounts of information (bits); by recoding items into larger chunks people can hold far more than seven bits (Miller 1956). Cowan 2001. Cowan’s review in Behavioral and Brain Sciences re-examined the capacity literature and argued that when strategies such as rehearsal and chunking are controlled or ruled out, adults’ working memory (which he described as the capacity of the focus of attention) is about 3 to 5 chunks, about 4 on average; the larger “7” usually reflects rehearsal or the grouping of items into chunks (Cowan 2001).
So “people can remember at most seven things” is not accurate. A better statement is that, without rehearsal and without merging the material, people can hold about 4 chunks at once; and how big a chunk is depends on what the person already has in long-term memory.
Chunking as compression
Evidence
Chess. Chase and Simon showed chess players of different strength a position for 5 seconds and asked them to reconstruct it from memory on an empty board. For positions from real games, masters did far better than novices; with pieces placed at random, the masters’ advantage essentially vanished. They concluded that masters’ advantage lies not in a larger working memory but in a long-term store of many familiar configurations of pieces, which lets them encode a position as a few large chunks (Chase and Simon 1973). Long-term working memory. Ericsson and Kintsch went further and proposed that, within their own domain, experts use “retrieval structures” in long-term memory that extend the effective capacity of working memory far beyond a few chunks, which explains how skilled readers and experts can keep track of so much information (Ericsson and Kintsch 1995).
Calculation
The program below writes chunking as compression: working memory has slots, and each slot holds one chunk however big it is. Long-term memory supplies a library of schemas; the string is parsed greedily, longest known chunk first, and a second-level schema can bind several first-level chunks into one.
# 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)For the same 26 letters, the novice remembers letter by letter, faces 26 chunks and keeps only 4 letters; someone who knows the acronyms cuts the string into 9 chunks of two or three letters and keeps about 12; the “expert” with second-level schemas groups them into 4 chunks, “US agencies”, “degrees”, “broadcasters” and “countries”, and holds the whole string in working memory. In information terms the raw string is about 122 bits, while the expert needs only 4 pointers into a library of 13 schemas, about 15 bits. Shuffle the same letters and the schemas hardly match any more, so the expert’s advantage vanishes, mirroring Chase and Simon’s finding for random positions.
The program is of course only illustrative: real chunks are not as clean as string matching, and their boundaries vary between people and tasks. But it captures the point: the working-memory bottleneck is counted in chunks, and chunk size is set by knowledge in long-term memory. The most reliable way to increase how much a person “can think about at once” is not to enlarge the slots but to build knowledge that can be packed into them.
Cognitive load theory
Evidence
Sweller 1988. Sweller argued in Cognitive Science that conventional means–ends problem solving, though it finds answers, uses so much cognitive capacity that little is left for learning schemas; solving many problems is therefore not necessarily the best way to learn how to solve them (Sweller 1988). Three kinds of load. In 1998 Sweller, van Merriënboer and Paas divided cognitive load into intrinsic load (set by the interactivity of the elements of the material itself), extraneous load (caused by the way material is presented, and irrelevant to learning) and germane load (load devoted to building schemas and beneficial to learning), and proposed that instructional design should reduce extraneous load (Sweller et al. 1998). Redefinition. In 2010 Sweller revised the framework: both intrinsic and extraneous load are determined by element interactivity, and germane load is no longer treated as a third load to be added to the other two, but as the working-memory resources allocated to dealing with intrinsic load (Sweller 2010).
Calculation
A toy “load budget” written in the spirit of Sweller (2010): load is counted in interacting elements that must be held at once, against a capacity of about 4 chunks. Intrinsic load = interacting elements of the material not yet packed by the learner’s schemas; extraneous load = elements added by the format (for example, holding a formula in mind while searching a separate diagram for its parts); germane load = the resources actually devoted to the intrinsic elements.
# 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 littleThe budget shows three things. First, for a novice, a “split-attention” format takes up 3 extra slots and leaves only 1 for the content; integrating text and diagram gives those 3 slots back to the content. Second, splitting 7 interacting elements into two steps of 4 brings intrinsic load within capacity. Third, for an expert who already has the schemas, the same format costs little, because most elements are already packed. The numbers are illustrative; real cognitive load is hard to measure directly and is usually inferred from subjective ratings, secondary-task performance or learning outcomes.
Hypothesis · not established
Offloading hypothesis (not yet established). In work that requires keeping track of several unfinished items at once, writing them down externally (on paper, a list or a board) frees working memory and lowers the error rate on the main task, and the benefit grows with the number of unfinished items. Testable prediction: in a randomised experiment, a “write the open items down” group and a “keep them in mind” group should differ little with 2 open items and clearly with 6. If the groups do not differ at any number, the hypothesis is wrong.
Chapter summary
Working-memory capacity is not “7 ± 2” but, once rehearsal and chunking are excluded, about 3 to 5 chunks; the difference between chunks and bits is exactly what Miller himself stressed. Experts’ advantage comes mainly from schemas in long-term memory, which let them compress many items into a few chunks; when material and schemas do not match, the advantage disappears. Cognitive load theory distinguishes intrinsic from extraneous load; in its later revision, germane load is understood as resources allocated to intrinsic load rather than a third, additive load. The next chapter asks where the costs come from when attention switches back and forth between tasks.
References
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).