5D Library › 注意力网络、工作记忆瓶颈与内在动机的自决定理论 · English
第六章 心流:挑战与技能的通道、脑机制假说与一个控制器模型
心流是内在动机研究中最常被引用、也最常被夸大的概念之一。它描述的是一种全神贯注、行动与意识融为一体、时间感改变、活动本身就是回报的体验。本章先看这个概念从哪里来、怎样测量,再看关于它的脑机制有哪些假说与证据,最后用一个学习者模型讨论「难度恰好」意味着什么。
从三通道到八通道
证据
最初的描述。 契克森米哈赖 1975 年的《超越厌倦与焦虑》访谈了攀岩者、棋手、舞者、作曲家和外科医生等,描述了他们在活动中体验到的全神贯注与乐趣,并提出:当一项活动的挑战与一个人的技能相匹配时,人会进入心流;挑战高于技能导致焦虑,低于技能导致厌倦 (Csikszentmihalyi 1975)。1990 年的《心流》把这些描述整理为心流体验的若干特征,包括清楚的目标、即时的反馈、注意力的高度集中、自我意识的暂时消退与时间感的改变 (Csikszentmihalyi 1990)。经验取样与八通道模型。 马西米尼与卡利用经验取样法(一天中多次随机提示被试记录当下的活动、挑战与技能)研究日常经验,发现单纯的「挑战与技能平衡」不足以预测心流:两者都低时的平衡更接近淡漠。他们把挑战与技能按每个人自己的平均水平标准化,按方向分成八个通道,只有挑战和技能都高于个人平均时才对应心流;另外七个通道依次是激发、焦虑、担忧、淡漠、厌倦、放松与掌控 (Massimini and Carli 1988)。元分析。 方、扎列斯基与利奇汇总了 28 项研究,发现挑战—技能平衡与心流之间存在中等程度的关系,与内在动机的关系较小 (Fong et al. 2015)。
推导
用一个虚构的人一周 60 次随机提示的评分(0 到 9 分)演示八通道分类:先以这个人自己的平均值与标准差把技能和挑战标准化,再按角度分配到八个 45° 的通道;同时与旧的「平衡即心流」三通道看法比较。
# Eight-channel model (Massimini & Carli 1988): skill and challenge are z-scored within the person;
# the angle assigns one of eight 45-degree channels; flow = both above the person's own mean.
# Compared with the three-channel "balance = flow" view. Fictional data: 60 beeps, ratings 0-9.
import math, random
random.seed(11)
NAMES = ["control", "flow", "arousal", "anxiety", "worry", "apathy", "boredom", "relaxation"]
# centre angles (degrees, skill on x-axis): flow at 45, arousal at 90, anxiety at 135, worry at
# 180, apathy at 225, boredom at 270, relaxation at 315, control at 0
CENTRE = {"control": 0, "flow": 45, "arousal": 90, "anxiety": 135, "worry": 180, "apathy": 225,
"boredom": 270, "relaxation": 315}
def channel(zs, zc):
ang = math.degrees(math.atan2(zc, zs)) % 360
return min(CENTRE, key=lambda k: min(abs(ang - CENTRE[k]), 360 - abs(ang - CENTRE[k])))
beeps = []
for _ in range(60):
kind = random.choice(["work", "work", "chores", "tv", "hobby"])
s, c = {"work": (6, 6), "chores": (5, 2), "tv": (2, 1), "hobby": (7, 7)}[kind]
beeps.append((kind, min(9, max(0, round(random.gauss(s, 1.3)))),
min(9, max(0, round(random.gauss(c, 1.5))))))
ms = sum(b[1] for b in beeps) / 60; mc = sum(b[2] for b in beeps) / 60
sd = lambda v, m: math.sqrt(sum((x - m) ** 2 for x in v) / (len(v) - 1))
ss, sc = sd([b[1] for b in beeps], ms), sd([b[2] for b in beeps], mc)
counts, balance_flow, apathy_as_balance = {k: 0 for k in NAMES}, 0, 0
for kind, s, c in beeps:
ch = channel((s - ms) / ss, (c - mc) / sc)
counts[ch] += 1
if abs(s - c) <= 1: # three-channel view: balanced = flow
balance_flow += 1
apathy_as_balance += ch == "apathy"
print(f"person's means: skill {ms:.1f}, challenge {mc:.1f} (0-9 scale)")
order = sorted(NAMES, key=lambda k: CENTRE[k])
print("eight-channel model, counter-clockwise from 'control':")
print(" " + ", ".join(f"{k} {counts[k]}" for k in order))
print(f"three-channel 'balance' view calls {balance_flow} beeps flow; of these,"
f" {apathy_as_balance} fall in the apathy channel")
print("(low challenge matched by low skill is balance without flow: the 1988 revision)")
# person's means: skill 5.0, challenge 4.8 (0-9 scale)
# eight-channel model, counter-clockwise from 'control':
# control 7, flow 22, arousal 7, anxiety 1, worry 2, apathy 15, boredom 4, relaxation 2
# three-channel 'balance' view calls 42 beeps flow; of these, 11 fall in the apathy channel
# (low challenge matched by low skill is balance without flow: the 1988 revision)在这个虚构的例子里,60 次提示中有 22 次落在心流通道。若按「挑战与技能相差不超过 1 分即为平衡」的旧看法,会有 42 次被算作心流,其中 11 次在八通道模型中其实属于淡漠:低挑战配低技能,例如疲惫时看电视。这就是 1988 年修订的意义:平衡是心流的必要条件之一,但不是充分条件,而且要以每个人自己的平均水平为参照。
心流的脑机制:假说与证据
假说 · 尚未验证
瞬时前额叶功能低下假说(迪特里希提出,尚未确立)。迪特里希 2004 年提出,心流时,负责外显、有意识加工的前额叶系统的活动暂时降低,熟练技能依赖的内隐系统得以不受干扰地运行;这可以解释心流中自我意识的消退和时间感的改变 (Dietrich 2004)。这一假说在提出时主要基于对外显与内隐系统的理论分析,直接检验的证据有限。如果心流状态下外侧前额叶的活动普遍升高而不是降低,这一假说至少需要大幅修正。
证据
心算任务中的心流。 乌尔里希、凯勒、赫尼希、瓦勒与格伦用心算任务在扫描仪中诱发三种状态:难度随被试能力自动调节(心流)、难度过低(厌倦)和难度过高(负荷过载)。与另外两种状态相比,心流条件下额下回等区域的活动相对升高,而内侧前额叶与杏仁核的活动相对降低 (Ulrich et al. 2014)。内侧前额叶的下降与自我参照加工减少的解释相符;杏仁核的下降可能与负面情绪唤醒降低有关。但外侧额叶区域并没有一致地下降,因此这项研究不能简单地被读作「前额叶整体关闭」。
一个按目标正确率调节难度的学习者
作者的框架希望写出挑战—技能相空间中的轨迹:动态匹配难度,使学习者沿着对角线上升。这里借用一个机器学习中的结果作为控制目标,但必须先说明它的来源与限度。
证据
「85% 规则」。 威尔逊、谢纳夫、斯特拉恰与科恩证明,对于一类用梯度下降学习二分类任务的学习者,在训练时把难度设在使错误率约为 15.87%(正确率约 84%–85%)的水平,学习速度最快。他们在人工神经网络和一个心理物理学习模型中演示了这一结果 (Wilson et al. 2019)。这是对特定学习模型的数学推导;它是否适用于人的技能学习,更不用说心流体验,尚未得到直接检验。
推导
学习者模型照威尔逊等人的设定:二分类任务的正确率 , 是精度(「技能」), 是题目的容易程度,挑战记作 。学习速度与正确率对 的期望梯度成正比;若控制器把正确率维持在 ,这个梯度正比于 ,在 (约 84%)时最大。此外,把每次结果的惊奇度 的平均值,即结果熵 ,作为「挑战」的信息论度量,这是一个建模选择。
# Learner after Wilson et al. (2019): P(correct) = Phi(beta*delta); skill beta, challenge 1/delta.
# Holding accuracy at Phi(z), the expected learning gradient is ~ z*phi(z)/beta, largest at z = 1
# (about 84 %). Applying this to human flow is an ANALOGY. Outcome entropy H(p) is a modelling
# choice for "challenge"; it peaks at 50 %.
import math
from statistics import NormalDist
N = NormalDist()
ETA, TRIALS = 0.02, 400
def learn(target=None, fixed_delta=None, beta=1.0):
path = []
for t in range(TRIALS + 1):
if fixed_delta is None:
z = N.inv_cdf(target); delta = z / beta
else:
delta = fixed_delta; z = beta * delta
p = N.cdf(z)
if t % 100 == 0: path.append((t, beta, 1 / delta, p))
beta += ETA * delta * N.pdf(z) # expected gradient of accuracy w.r.t. beta
return path
def H(p): return -p * math.log2(p) - (1 - p) * math.log2(1 - p) if 0 < p < 1 else 0.0
print("controller target | skill after 400 trials | challenge/skill | outcome entropy (bits)")
for tg in (0.60, 0.70, 0.84, 0.95, 0.99):
t, b, ch, p = learn(target=tg)[-1]
print(f"{tg:17.0%} | {b:22.2f} | {ch / b:15.2f} | {H(tg):10.2f}")
print("fixed difficulty (no controller), item easiness delta = 1.0:")
for t, b, ch, p in learn(fixed_delta=1.0)[::2]:
print(f" trial {t:3d}: skill {b:.2f}, challenge {ch:.2f}, accuracy {p:.0%}")
print("with the controller, challenge/skill stays constant: the path is a straight ray")
print("through the origin in challenge-skill space (a diagonal channel); with fixed")
print("difficulty accuracy drifts towards 100 % and the learner slides into the boredom side")
# controller target | skill after 400 trials | challenge/skill | outcome entropy (bits)
# 60% | 1.60 | 3.95 | 0.97
# 70% | 1.98 | 1.91 | 0.88
# 84% | 2.21 | 1.01 | 0.63
# 95% | 1.93 | 0.61 | 0.29
# 99% | 1.41 | 0.43 | 0.08
# fixed difficulty (no controller), item easiness delta = 1.0:
# trial 0: skill 1.00, challenge 1.00, accuracy 84%
# trial 200: skill 1.64, challenge 1.00, accuracy 95%
# trial 400: skill 1.95, challenge 1.00, accuracy 97%
# with the controller, challenge/skill stays constant: the path is a straight ray
# through the origin in challenge-skill space (a diagonal channel); with fixed
# difficulty accuracy drifts towards 100 % and the learner slides into the boredom side结果显示:把正确率维持在 84% 时,400 次练习后技能从 1.0 升到 2.21,是几种目标中最高的;目标为 60%(太难)时只升到 1.60,目标为 99%(太容易)时只升到 1.41。控制器使挑战与技能的比值保持不变(84% 时约为 1.0),所以学习者在相空间中沿一条射线上升,这正对应作者设想的「沿对角线上升」。没有控制器、难度固定时,技能升到 1.95,但正确率从 84% 漂移到 97%,学习者逐渐滑向厌倦一侧。
信息论的度量给出一个值得注意的反差:结果熵在正确率 50% 时最大(接近 1 比特),在 84% 时为 0.63 比特,在 99% 时只有 0.08 比特。如果把「挑战」定义为结果的不确定性,那么最大的挑战在 50%,而在这个模型里最快的学习却在 84%。两者不一致说明:「信息量最大」与「学得最快」不是一回事,用香农熵来刻画心流中的挑战,需要说明为什么选这个度量,而不能把它当作心流的定义。
假说 · 尚未验证
最佳挑战区间假说(尚未确立)。在自适应难度的练习中,把正确率维持在约 80%–85%,与维持在 60% 或 95% 相比,既带来更快的技能增长,也带来更高的自我报告心流。可以检验的预测:在一项三组随机实验中,80%–85% 组的练习后测验成绩与心流评分都高于另外两组。如果技能增长最快的组与心流评分最高的组不是同一组,本章借用 85% 规则作为心流控制目标的类比就需要放弃。
本章小结
心流描述挑战与技能都高时的全神贯注体验;八通道模型把两者按个人自己的平均水平标准化,只有两者都高于平均时才对应心流,低挑战配低技能更接近淡漠。元分析显示挑战—技能平衡与心流有中等程度的关系。「瞬时前额叶功能低下」是假说;影像研究显示心流时内侧前额叶与杏仁核活动相对下降,但外侧额叶区域并未一致下降。一个借用「85% 规则」的学习者模型显示,按目标正确率调节难度可以使学习者沿相空间中的一条射线上升;但结果熵最大在 50%,不在 85%,说明信息论度量是一个需要论证的建模选择。下一章把这些现代研究与宋明理学的「主敬」以及先秦的「虚壹而静」「用志不分」并读。
参考文献
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).