Demo 5:人形平均场计算机恢复噪声图片

把每个像素想成一名学生:教师先给每人一张带噪观测卡 yᵢ(黑卡=+1,白卡=-1),学生再把观测卡和上下左右邻居上一轮报告的均值 mⱼ 合起来,按同一条公式同步更新自己的信念 mᵢ。目标是从带噪观测卡 y 恢复隐藏二值图片。

+1:黑色-1:白色m≈0:不确定红框:被翻转观测输出:q(+1)>0.5 则答 1

四栏课堂黑板:真实图、观测卡、当前信念、学生输出

真实干净图 x★

带噪观测 y

当前平均场信念 m(t)

学生输出答案 a(t)

黑 = +1白 = -1灰 = 不确定红框 = 观测被翻转输出 1 = q(+1)>0.5输出 0 = q(+1)≤0.5

课堂操作指导语:教师和学生分别做什么

  1. 教师准备真实图片。先选择一张黑白小图,例如默认的粗 L。真实隐藏像素记为 xᵢ★∈{-1,+1}:黑色是 +1,白色是 -1
  2. 教师发观测卡。每个学生拿到一张观测卡 yᵢ,大多数时候 yᵢ=xᵢ★,但其中一组固定位置被翻转。默认 8×8 时,每个图案固定翻转 13 个像素(约 20%),这些位置是预先搜索出来、适合展示恢复的噪声类型。红框格表示这个观测卡其实被翻错了;课堂真实操作时学生不知道红框,只知道自己手里的 yᵢ=+1yᵢ=-1
  3. 初始化。默认每个学生先把自己的观测卡变成初始信念:mᵢ(0)=tanh(γyᵢ)。若选“mᵢ(0)=0”,则表示学生一开始完全不确定,只在第一轮才使用观测和邻居信息。
  4. 报告阶段。第 t 轮开始时,每个学生只向上下左右邻居报告旧值 mᵢ(t)。不要报告刚算出来的新值。
  5. 计算阶段。学生 i 把收到的旧邻居值相加:Sᵢ(t)=Σⱼ∈N(i)mⱼ(t),再算局部场 hᵢ(t)=γyᵢ+wSᵢ(t)
  6. 同步写入阶段。全班同时把新信念写成 mᵢ(t+1)=tanh(hᵢ(t))。下一轮开始前,任何人都不能把新值继续传给邻居。
  7. 读出图片。把信念转成输出概率 qᵢ(+1)=(1+mᵢ)/2。若 qᵢ(+1)>0.5,学生输出 1 并举黑卡;否则输出 0 并举白卡。右侧“恢复正确率”用这个 1/0 输出读出结果。

同步更新诊断

迭代轮数
0
本轮只读上一轮邻居值
观测正确率
y vs x★
恢复正确率
1/0 输出 vs x★
mean |Δm|
上一轮平均变化量
恢复提升
恢复率 - 观测率

同步协议:请把一轮更新拆成“报告旧值 → 求邻居和 → 算局部场 → 同时写新值”四步。所有节点先读取上一轮 mⱼ(t),各自计算 Sᵢ(t)=Σmⱼ(t),再同时写出 mᵢ(t+1)=tanh(γyᵢ+wSᵢ)。本轮新值不能在同一轮继续传播;这避免了座位顺序影响结果。
调参提示:默认 8×8 粗 L、γ=1.0、w=0.65 是演示恢复版,恢复效果更明显;若要课堂手算,可临时把 w 调成 0.5,此时公式变成 hᵢ=yᵢ+0.5Σmⱼ。当前只保留恢复较稳的图案。默认 8×8 时,每个图案都使用搜索得到的固定翻转 mask(13 个像素,约 20%),因此每次载入同一图案都会看到同一组观测卡。

非线性函数表

教学结论与方法对比

平均场不是精确推断;它只保存每个像素的单点均值 mᵢ。邻居影响通过平均值传播,但不保存相邻像素的联合相关。

  • w 太大:边界会被过度平滑。
  • γ 太大:系统会过度相信带噪观测。
  • 噪声强或图片细节太细时,平均场可能恢复失败;课堂演示保留粗 L、实心圆、三角形、菱形、爱心、小鱼、粗 T、粗 1、十字路标、块状门牌底色和马克杯这类恢复较稳的图案;细线、人脸、笑脸/哭脸等稀疏特征已从 preset 中删除。
  • 平均场:每个节点只报一个数 mᵢ;Tree approximation:删除部分边,在保留的树上做精确 sum-product;Bethe / loopy BP:每条边上传递二值消息或维护局部 belief,更保留相关,但课堂手算负担更大。