跳到主要内容

RBF 网络 — 不用反向传播的神经网络

这一章讲三件事: 「中心 + 距离」这种原型思想怎么变成一个神经网络; 它的训练怎么做到全程不用梯度下降;以及它和 MLP 同题对比的真实战绩。 读完你会认识神经网络家族里最特立独行的一支——今天已边缘化, 但它的「原型」思想活在了核方法和很多地方。

1. 问题:能不能让「神经元」有位置感

第 04 章的神经元只会加权求和:给它任何输入,它都按同一套权重算—— 神经元自己没有「位置」,不知道输入落在数据空间的哪个角落。

RBF 网络(radial basis function network,径向基函数网络)反着设计: 隐层每个神经元对应输入空间里的一个中心点(center),只对「靠近自己」的输入强响应。 响应函数通常是高斯函数(正态曲线的形状:离中心越远,响应指数衰减)1。 原书开篇给的两个头衔:1988 年由 Broomhead 与 Lowe 提出;通用逼近器 ——隐藏神经元够多时,能以任意精度(想多准就多准)逼近任何连续函数2

输入空间里摆几个「地标」:
● 中心 A ● 中心 B
↖ ↗
输入 x
神经元 A 的响应 = 高斯(‖x − A‖):x 离 A 近 → 响应接近 1;远 → 趋近 0
神经元 B 同理。

图说:每个隐层神经元 = 一座灯塔,只照亮自己周围一圈。

宽度由 σ 控制:σ 小,灯塔只照脚下(响应尖锐、只认非常近的输入); σ 大,照得宽(响应平缓、相邻地标互相重叠)3

2. 主走查:三步训完,一步都不用梯度下降

这是本章的全部机关。 神经网络的「训练」通常是第 05 章那套梯度下降; RBF 把训练拆成三步,前两步连「训练」都算不上:

第 1 步:定中心——用 k-means 聚类

中心摆哪?不学,直接用 k-means 聚类找:k-means 是无监督算法, 把数据点分成 K 堆、每堆的质心就是一个「自然的」中心4。 机制:随机初始化 K 个中心 → 每个数据点归最近的中心 → 每堆重算均值当新中心 → 重复到中心不再动。「网络该在哪设灯塔」这个问题,数据自己会回答——数据密的地方就该有。

第 2 步:定宽度——一条公式

σ 不学,按公式算:σ = d / √(2M),d 是中心之间的最大距离,M 是中心个数5。 直觉:地标越密(M 大)、离得越近(d 小),每座灯塔的照圈就该越小—— 公式把这两个量一次定死。

第 3 步:定输出权重——解一次线性方程组

到这一步,隐层已经完全确定(中心、宽度都有了):对每个训练样本算它对每个中心的 响应,排成一个矩阵 G(行=样本,列=中心)。输出层是线性的—— 预测 = 响应的加权和,权重未知。于是「训练输出层」变成解方程 G·W = T (T 是标准答案),用最小二乘一步解出:W = (GᵀG)⁻¹GᵀT6

三步总览:
① k-means 定中心(无监督,无梯度)
② σ = d/√(2M) 定宽度(公式,无梯度)
③ W = (GᵀG)⁻¹Gᵀ 解线性方程组(代数,无梯度)

图说:反向传播在这里没有任何活可干——
没有要逐层回传的误差,因为每一层都是「被直接解出来」的。
这与第 05 章是两种训练哲学:RBF 是「搭积木」,反向传播是「雕刻」。

拿 5 个二维点把三步算到底

演示数据(这五个点与下面全部数值都是为演示编的,不是书里的): 左堆 (0,0) (0,1) (1,0),右堆 (5,5) (5,6)。取 K=2:

① k-means 定中心:左堆质心 = (1/3, 1/3) ≈ (0.33, 0.33);右堆质心 = (5, 5.5)
② 定宽度:两中心距离 d = √(4.67² + 5.17²) ≈ 7.0;M=2
σ = 7.0 / √(2×2) = 7.0 / 2 = 3.5
③ 解输出权重:来了新点 x = (1,1),先算它对两个中心的响应
到中心 A 距离 √(0.67²+0.67²) ≈ 0.94
→ φ_A = exp(−0.94²/(2×3.5²)) = exp(−0.036) ≈ 0.96
到中心 B 距离 √(4²+4.5²) ≈ 6.0
→ φ_B = exp(−6.0²/(2×3.5²)) = exp(−1.47) ≈ 0.23
全部训练样本照此填成矩阵 G(5 行 2 列),解 G·W=T 得两个权重——
训练结束,自始至终没有一步梯度下降。

图说:①的「中心」是数据自己聚出来的,②是公式一除,③是一次线性回归。
每一步都带具体的数——这就是「无梯度训练」的全程。

为什么能这么干: 全部非线性都集中在隐层(高斯响应),而隐层参数不参与训练 (是聚类和公式给的);要学的只剩输出层一个线性映射——线性最小二乘有解析解, 一次解完。代价同样明白:网络的表达力被锁死在「你选的 K 个中心」上,没有端到端微调。

3. RBF 对 MLP:书里唯一一组同题实测

原书 7.2 给了定性对比,7.3 给了实测。定性三条7:

MLPRBF
强项高维数据里挖深层特征低维、局部模式;中心即「原型点」,可解释
训练梯度下降,慢三步走,快(收敛快是原书开篇卖点)
风格逐层抽象地标式覆盖

实测:UCI 银行营销数据集(预测客户是否订阅——答应购买——定期存款),原书结论是 RBF 与 MLP 准确率同为 88%,但 RBF 训练成本低得多——结论:这类任务选 RBF8这是全书 8 章里唯一一次「两种架构同题对比」的数字,值得记住; 顺带看它的用例配置:bank-full.csv,数值列保留、类别列做标签编码, 测试集占 33%,隐中心只有 K=89

4. 作者的判断与证据

  • 算法完整、可复现的: 三步训练的每一步都有公式和对应代码 (k-means 调 sklearn、σ 的双重循环、G 矩阵构建、最小二乘四行), 是本章可靠的部分;88% 的对比结论也明确标了出处语境10
  • 代码硬伤三处(要如实标): ① 用例开头让读者「参考前面给出的 RBFNet 类」——全章没有这个类11; ② σ 的计算出现了两次(步骤 5 与步骤 7),第一次那版还有变量(代码里存值的命名)错误 (Cent/cent 混用、numpy 未按别名导入)12; ③ 理论节的公式排成 e^(−‖X−Center‖/σ)(无平方),代码用的却是 exp(−距离²/(2σ)²)——以代码版为准,公式疑为排版丢失平方号13
  • 章节自评一处失真: 开头承诺讲「算法开发」并「对比 RBF 与 MLP 的优劣」, 实际对比只有一张定性清单加一组 88%——深度不及承诺,数字也只此一组。

判断(我们的,不是书里的): RBF 网络在 2025 年的教材里出现,更像「历史展品」。 它输掉的不是「分类准不准」(88% 打平),而是时代命题(大家最关心的问题)变了:图像、语言的任务里 特征必须自己学(第 01 章的表示学习),而 RBF 的中心靠聚类、宽度靠公式, 恰恰放弃了端到端学习。它的「中心+距离」思想并没有死——核方法、 注意力里的相似度打分、第 11 章的 SOM,都是这个思想的直系后代。 如果错,会错在: 如果某个低维、需要强可解释性、数据量小的工业场景 (原书引的故障诊断类论文正是这类)里 RBF 仍是首选,那「展品」一词就言过其实—— 更准确的说法是:退出了主流舞台,留在了自己的利基里

5. 边界与局限

  • 原书没讲的死穴: 中心数 K 与 σ 全靠人工选(K=8 是拍的),没有「学出多少算多少」的机制; 数据一多,G 矩阵随之变大,矩阵求逆的代价平方级上涨——高维大数据下吃不开的两个硬理由。
  • 书里也没讲它为什么还在用: 函数插值(在已知点之间补出中间值)、控制系统的在线建模(响应可局部更新) 是 RBF 至今的利基,原书的应用清单提到了插值,没点破这层因果。
  • 与下一章的关系(书里没点,我们点): RBF 和 SOM 共享同一套原型思想 ——「用一个带位置的模板响应输入」。差别在 RBF 的中心服务于预测答案, SOM 的网格服务于画地图。连读两章,「原型」这条先验就完整了。

6. 可带走的

  1. RBF 的神经元有位置:每个隐层神经元=输入空间一个中心,只对邻近输入强响应;
  2. 响应用高斯,σ 管灯塔照多宽:σ 小只认脚下的点,σ 大邻居互相重叠;
  3. 训练三步走:k-means 定中心 → σ=d/√(2M) 定宽度 → 解线性方程组定输出权重;
  4. 全程没有梯度下降——非线性被锁进隐层,要学的只剩线性输出,最小二乘一步解完;
  5. 它是通用逼近器,但表达力锁死在「K 个中心」上,没有端到端微调;
  6. 书里唯一一组同题对比:银行营销任务 RBF 与 MLP 同为 88%,RBF 便宜得多;
  7. 定性分工:MLP 挖高维深层特征,RBF 吃低维局部模式、中心可解释;
  8. 它输给时代的点:放弃了表示学习;它的思想活成了核方法与注意力里的相似度打分;
  9. 本章算法部分可引;「RBFNet 类」不存在、σ 算了两遍、公式平方号疑似丢失——代码以实测为准。

7. 原文地图

主题原书章原文位置
Broomhead & Lowe 1988 / 通用逼近器7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:5(搜「Broomhead」) · text/44-ch07-7-radial-basis-function-networks.txt:23(搜「universal」)
收敛快7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:9(搜「converge」)
高斯中心响应7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:13(搜「localized」) · text/44-ch07-7-radial-basis-function-networks.txt:113(搜「Gaussian」)
三层架构7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:101(搜「three main layers」)
σ 控宽度7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:165(搜「spread」)
k-means 四步7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:186(搜「k-means」) · text/44-ch07-7-radial-basis-function-networks.txt:189(搜「steps」)
σ=d/√(2M) 公式7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:221(搜「2M」) · text/44-ch07-7-radial-basis-function-networks.txt:225(搜「maximum distance」)
σ 太小/太大的后果7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:234(搜「If sigma is too small」)
GW=T 线性系统7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:252(搜「dot product」) · text/44-ch07-7-radial-basis-function-networks.txt:261(搜「GW」)
输出层线性7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:249(搜「linear」)
训练五步7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:269(搜「summarized as follows」) · text/44-ch07-7-radial-basis-function-networks.txt:287(搜「supervised」)
RBF vs MLP 定性7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:298(搜「Comparison」) · text/44-ch07-7-radial-basis-function-networks.txt:309(搜「Convergence Rate」)
中心=原型可解释7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:325(搜「Interpretability」)
银行营销用例7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:336(搜「Term Deposit」) · text/44-ch07-7-radial-basis-function-networks.txt:341(搜「Bank Marketing」)
标签编码与切分7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:423(搜「bank-full」) · text/44-ch07-7-radial-basis-function-networks.txt:471(搜「0.33」)
K=87 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:583(搜「K_cent = 8」)
G 矩阵高斯公式7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:665(搜「math.exp」)
最小二乘四行7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:706(搜「GTG」)
88% 对比结论7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:6(搜「88」) · text/44-ch07-7-radial-basis-function-networks.txt:820(搜「computational cost」)
RBFNet 类缺失7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:9(搜「RBFNet」)
σ 算两遍且首版有错7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:543(搜「Determine」) · text/44-ch07-7-radial-basis-function-networks.txt:13(搜「Cent」) · text/44-ch07-7-radial-basis-function-networks.txt:611(搜「Determine the value」)
公式与代码不一致7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:13(搜「Center」) · text/44-ch07-7-radial-basis-function-networks.txt:665(搜「math.exp」)
插值应用7 Radial Basis Function Networkstext/44-ch07-7-radial-basis-function-networks.txt:39(搜「Interpolation」)

Footnotes

  1. 出处:「7 Radial Basis Function Networks」第 13 段(text/44-ch07-7-radial-basis-function-networks.txt:13,搜「localized」)与第 113 段(搜「Gaussian」)。原文:RBF 是定位于输入空间特定中心点的局部激活函数,典型为高斯函数,输出随距离增大指数衰减。

  2. 出处:「7 Radial Basis Function Networks」第 5 段(text/44-ch07-7-radial-basis-function-networks.txt:5,搜「Broomhead」)与第 23 段(搜「universal」)。原文:1988 年 Broomhead 与 Lowe 提出;隐藏神经元足够时能以任意精度逼近任何连续函数。

  3. 出处:「7 Radial Basis Function Networks」第 165 段(text/44-ch07-7-radial-basis-function-networks.txt:165,搜「spread」)与第 232 段(搜「If sigma is too small」)。原文:σ 小→高斯窄、只响应紧邻中心的输入;σ 大→覆盖宽、响应重叠。

  4. 出处:「7 Radial Basis Function Networks」第 186 段(搜「k-means」)与第 189 段(搜「steps」)。四步:初始化 K 个中心 → 按欧氏距离分配 → 取均值更新 → 重复至收敛;第 209 段点题:聚类中心直接充当隐层神经元的中心。

  5. 出处:「7 Radial Basis Function Networks」第 221 段(text/44-ch07-7-radial-basis-function-networks.txt:221,搜「2M」)与第 225 段(搜「maximum distance」)。公式 σ = d/√(2M);d 为任意两中心间的最大距离,M 为隐神经元总数。

  6. 出处:「7 Radial Basis Function Networks」第 249 段(搜「linear」)、第 261 段(搜「GW」)与第 706 段(text/44-ch07-7-radial-basis-function-networks.txt:706,搜「GTG」)。代码:GTG=GᵀG;GTG_inv=inv(GTG);fac=GTG_inv·Gᵀ;W=fac·Y_train。

  7. 出处:「7 Radial Basis Function Networks」第 298 段(搜「Comparison」)、第 309 段(搜「Convergence Rate」)与第 325 段(搜「Interpretability」)。原文五条:MLP 擅长高维深层特征;RBF 收敛快(单隐层+高斯直连);同为通用逼近器;RBF 学习稳健、不易过拟合;中心即原型、可解释。

  8. 出处:「7 Radial Basis Function Networks」第 6 段(text/44-ch07-7-radial-basis-function-networks.txt:6,搜「88」)与第 816 段(搜「computational cost」)。原文:RBF 与 MLP 预测准确率同为 88%,但 MLP 训练计算成本高得多,此场景建议选 RBF。

  9. 出处:「7 Radial Basis Function Networks」第 341 段(搜「Bank Marketing」)、第 423 段(搜「bank-full」)、第 471 段(搜「0.33」)与第 583 段(text/44-ch07-7-radial-basis-function-networks.txt:583,搜「K_cent = 8」)。预处理:七个数值列保留原值,其余列 LabelEncoder。

  10. 出处:「7 Radial Basis Function Networks」第 269 段(搜「summarized as follows」)起。训练五步含公式与代码;k-means(:581-609)、σ 循环(:611-620)、G 矩阵(:656-702)、最小二乘(:704-733)、预测与阈值(:735-813)。

  11. 出处:「7 Radial Basis Function Networks」第 9 段(text/44-ch07-7-radial-basis-function-networks.txt:9,搜「RBFNet」)。原话:「You can use the code provided earlier as a reference for implementing the RBFNet class」——该类在全章从未定义。

  12. 出处:「7 Radial Basis Function Networks」第 543 段(搜「Determine」)与第 611 段(搜「Determine the value」)。步骤 5 与步骤 7 重复计算 σ;步骤 5 用了未定义的 Centnumpy(导入别名是 np),内层循环上界是列数而非中心数。

  13. 出处:「7 Radial Basis Function Networks」第 13 段(text/44-ch07-7-radial-basis-function-networks.txt:13,搜「Center」)与第 665 段(搜「math.exp」)。理论公式排成 e^(−‖X−Center‖/σ),代码为 exp(−dist²/(2σ)²);平方号的差异疑为 PDF 提取丢失,以代码(标准二次型高斯)为准。