5D Library › 依恋理论的计算模型与伴侣互动动力学 · English
第二章 追—逃回路的耦合方程
「要求—退缩」模式
伴侣研究中最常被描述的冲突模式之一,叫作要求—退缩(demand–withdraw),临床上也称「追—逃」(pursuer–distancer):一方提出要求、批评或抱怨,试图让对方回应和改变;另一方回避讨论、沉默或离开。
证据
谁追、谁逃,与话题有关。 克里斯滕森与希维让已婚夫妇分别讨论一个妻子希望丈夫改变的问题和一个丈夫希望妻子改变的问题。总体上「妻子要求—丈夫退缩」比反过来更常见;但这种不对称主要出现在讨论妻子想要的改变时,讨论丈夫想要的改变时差别明显缩小。研究者据此认为,要求—退缩模式不只来自性别或个性,也来自社会结构:想要改变现状的一方更可能「追」,从现状中获益的一方更可能「逃」 (Christensen and Heavey 1990)。与关系结局的关系。 一项汇总了七十多项研究的元分析发现,要求—退缩模式与较低的关系满意度、较差的沟通以及个人的抑郁与焦虑等相关 (Schrodt et al. 2014)。
这两点提醒我们,追—逃回路不能简单归因于依恋:是谁想要改变、谈的是谁的议题、两人在关系中的权力与分工,都会影响谁扮演哪个角色。依恋理论提供的是另一层解释:依恋焦虑对应「过度激活」的调节策略,在感到疏远时加强寻求;依恋回避对应「去激活」策略,在感到被逼近时拉开距离 (Mikulincer and Shaver 2016)。当这两种策略在同一对伴侣身上相遇时,每一方的应对恰好成为另一方的触发。
一个耦合的玩具模型
用微分方程描述恋爱关系,最有名的例子是斯托加茨半开玩笑的「罗密欧与朱丽叶」:朱丽叶越喜欢罗密欧,罗密欧就越爱她;罗密欧越爱她,朱丽叶就越想躲开;她一躲,罗密欧就冷下来;他一退,朱丽叶又喜欢他了,于是两人的感情周期性地起伏 (Strogatz 1988)。下面的模型更接近要求—退缩的结构,但同样只是一个玩具。
推导
是伴侣 A「追」的强度(要求、追问、争取回应), 是伴侣 B「逃」的强度(沉默、离开、拒绝讨论),都在 0 到 1 之间:
是一个平滑的阈值函数。 表示 A 对 B 的退缩有多敏感, 表示 B 对 A 的追问有多敏感,、 是两人各自的基础驱动(未满足的需要、外部压力), 是冲突持续时慢慢累积、之后慢慢消退的「疲惫」。时间以分钟计。
# The pursue-withdraw (demand-withdraw) loop as two coupled rate equations (a toy model).
# x = partner A's pursuit (requests, criticism, attempts to get a response), 0..1
# y = partner B's withdrawal (silence, leaving the room, "I don't want to talk about it"), 0..1
# tau dx/dt = -x + S(gA*y + uA - z) A pursues harder the more B withdraws
# tau dy/dt = -y + S(gB*x + uB - z) B withdraws more the harder A pursues
# S(v) = 1 / (1 + exp(-8 (v - 0.5))) a smooth threshold
# uA, uB: baseline drive (unmet need, outside stress). z: slow exhaustion that builds while the
# conflict runs and wears off afterwards, tau_z dz/dt = c (x + y)/2 - z (set c = 0 to switch it off).
# Time is in minutes; tau = 1 minute, tau_z = 30 minutes. All numbers illustrative.
import math
def S(v): return 1 / (1 + math.exp(-8 * (v - 0.5)))
def simulate(gA, gB, uA=0.15, uB=0.15, c=0.0, T=240.0, dt=0.01, pulse=(10.0, 12.0, 0.6), x=0.05, y=0.05):
z, tau, tauz, out = 0.0, 1.0, 30.0, []
for i in range(int(T / dt)):
t = i * dt
kick = pulse[2] if pulse[0] <= t < pulse[1] else 0.0 # a two-minute trigger for A
dx = (-x + S(gA * y + uA + kick - z)) / tau
dy = (-y + S(gB * x + uB - z)) / tau
dz = (c * (x + y) / 2 - z) / tauz
x, y, z = x + dx * dt, y + dy * dt, z + dz * dt
if i % 100 == 0: out.append((t, x, y))
return out
def equilibria(gA, gB, uA=0.15, uB=0.15):
# fixed points without exhaustion: x = S(gA*S(gB*x + uB) + uA); count sign changes on a fine grid
f = lambda x: S(gA * S(gB * x + uB) + uA) - x
xs = [i / 4000 for i in range(4001)]
return sum(1 for a, b in zip(xs, xs[1:]) if f(a) * f(b) < 0)
print("equal sensitivity g = gA = gB; a two-minute trigger at t = 10 min; no exhaustion")
print(" g | fixed points | pursuit / withdrawal 60 min after the trigger")
for g in (0.4, 0.6, 0.8, 1.0):
t, x, y = min(simulate(g, g), key=lambda r: abs(r[0] - 72))
t0, x0, _ = min(simulate(g, g, pulse=(0, 0, 0)), key=lambda r: abs(r[0] - 72))
note = ("escalates even without a trigger" if x0 > 0.5 else "trigger tips it; it stays escalated" if x > 0.5
else "back to calm")
print(f" {g:.1f} | {equilibria(g, g):12d} | {x:.2f} / {y:.2f} {note}")
print("the loop, not one partner: lowering EITHER sensitivity from 0.8 to 0.45")
for gA, gB in ((0.8, 0.8), (0.45, 0.8), (0.8, 0.45)):
t, x, y = min(simulate(gA, gB), key=lambda r: abs(r[0] - 72))
print(f" gA = {gA:.2f}, gB = {gB:.2f}: fixed points {equilibria(gA, gB)}, 60 min after trigger x = {x:.2f}, y = {y:.2f}")
base = simulate(0.8, 0.8, c=0.8, T=600.0, pulse=(0, 0, 0)); top = max(x for t, x, y in base if t > 100)
print(f"slow exhaustion (c = 0.8) at the original drive uA = uB = 0.15, no trigger: highest pursuit after 100 min"
f" {top:.2f}, {'no eruptions' if top < 0.5 else 'eruptions'}")
print("with slow exhaustion (c = 0.8) and a higher baseline drive (uA = uB = 0.35), g = 0.8, no trigger:")
traj = simulate(0.8, 0.8, uA=0.35, uB=0.35, c=0.8, T=600.0, pulse=(0, 0, 0))
up = [t for (t, x, _), (_, x2, _) in zip(traj, traj[1:]) if x < 0.5 <= x2]
hi = sum(1 for t, x, _ in traj if x > 0.5 and t > 100) / sum(1 for t, *_ in traj if t > 100)
print(f" escalations begin at t = {', '.join(f'{u:.0f}' for u in up)} min; "
f"period about {(up[-1] - up[1]) / (len(up) - 2):.0f} min; escalated {hi:.0%} of the time")
# equal sensitivity g = gA = gB; a two-minute trigger at t = 10 min; no exhaustion
# g | fixed points | pursuit / withdrawal 60 min after the trigger
# 0.4 | 1 | 0.07 / 0.07 back to calm
# 0.6 | 1 | 0.08 / 0.08 back to calm
# 0.8 | 3 | 0.97 / 0.97 trigger tips it; it stays escalated
# 1.0 | 1 | 0.99 / 0.99 escalates even without a trigger
# the loop, not one partner: lowering EITHER sensitivity from 0.8 to 0.45
# gA = 0.80, gB = 0.80: fixed points 3, 60 min after trigger x = 0.97, y = 0.97
# gA = 0.45, gB = 0.80: fixed points 1, 60 min after trigger x = 0.08, y = 0.09
# gA = 0.80, gB = 0.45: fixed points 1, 60 min after trigger x = 0.09, y = 0.08
# slow exhaustion (c = 0.8) at the original drive uA = uB = 0.15, no trigger: highest pursuit after 100 min 0.06, no eruptions
# with slow exhaustion (c = 0.8) and a higher baseline drive (uA = uB = 0.35), g = 0.8, no trigger:
# escalations begin at t = 1, 65, 123, 180, 238, 296, 353, 411, 468, 526, 583 min; period about 58 min; escalated 26% of the time这个玩具模型显示了几件事。
第一,敏感度低时( 或 ),一次触发之后系统会自己回到平静:只有一个平衡点,而且是平静的。
第二,敏感度较高时(),系统有三个平衡点:平静、升级,以及两者之间一个不稳定的分界点。一次短暂的触发就足以把系统推过分界点,之后即使触发消失,升级状态也会自我维持。这就是许多伴侣描述的「一件小事,怎么就吵成这样」:维持升级的不是那件小事,而是回路本身。
第三,敏感度很高时(),平静状态消失了,不需要触发也会升级。
第四,回路是两个人的:从 出发,只降低 A 的敏感度或只降低 B 的敏感度,效果完全对称,都能使升级状态消失。在模型里,没有「谁该负责」的答案,只有「哪一段回路可以先松开」的问题。
第五,加入缓慢的疲惫,同时把双方的基础驱动从 0.15 提高到 0.35(例如外部压力增大)之后,系统出现极限环(只有疲惫而基础驱动仍为 0.15 时,不会出现爆发):冲突升级、疲惫累积、冲突平息、疲惫消退、再次升级,周期约一小时(参数是示意性的)。这种模式可能对应一些伴侣描述的「隔一阵就大吵一次,吵完又好一阵」。
注
这不是在说谁的敏感度「太高」。 模型中的「敏感度」是一个人在这段关系、这种处境中对对方行为的反应强度,它会随压力、睡眠、过去的伤害、话题与权力关系而变化,不是固定的性格。模型也没有包含双方说话的内容是否合理:如果一方的要求是正当的(例如分担家务、停止伤害性行为),那么「降低追的敏感度」并不是答案。
假说 · 尚未验证
回路增益假说(尚未确立)。在追—逃回路中,升级的持续时间主要取决于两人反应敏感度的乘积(回路增益),而不是任何一方单独的敏感度;因此,只训练一方降低反应、与训练双方各降低一半,效果相近。可以检验的预测:在一项双人随机试验中,「只训练追的一方」「只训练逃的一方」与「双方都训练」三组的冲突升级时长减少幅度相近(在同样的总训练剂量下)。如果某一方单独训练明显更有效,这一假说就需要修正。
本章小结
要求—退缩是伴侣冲突中最常被描述的模式之一,它与关系满意度较低相关;谁追谁逃既与依恋策略有关,也与谁想要改变、话题属于谁有关。一个两变量的玩具模型显示:当双方的反应敏感度足够高时,回路有两个稳定状态,一次小触发就能把它推入自我维持的升级;加入缓慢的疲惫、同时基础驱动较高时会出现周期性爆发。降低任何一方的敏感度效果对称,说明问题在回路而不在某个人。下一章讨论戈特曼与默里用真实对话数据建立的婚姻方程。
参考文献
Fan, Y. (2026). Computational Attachment Theory and Couple Interaction Dynamics: From Anxious-Avoidant Coupled Oscillators and Gottman's Nonlinear Difference Equations to Updating Early Relational Priors [依恋理论的计算模型与伴侣互动动力学] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23754715 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).