径向基函数网络(RBF Network)的原理与训练过程
题目描述
径向基函数网络是一种三层前馈神经网络,常用于函数逼近、分类和时间序列预测。其核心思想是利用径向基函数(如高斯函数)作为隐藏层神经元的激活函数,将输入数据映射到高维特征空间,从而实现对非线性关系的拟合。本题要求掌握RBF网络的基本结构、工作原理以及具体的训练步骤。
解题过程
1. 网络结构理解
RBF网络包含三层:
- 输入层:接收特征向量 \(\mathbf{x} = [x_1, x_2, ..., x_d] \in \mathbb{R}^d\)。
- 隐藏层:由 \(m\) 个径向基函数单元构成。每个单元对应一个中心向量 \(\mathbf{c}_j \in \mathbb{R}^d\) 和宽度参数 \(\sigma_j\)。第 \(j\) 个隐藏神经元的输出为:
\[ \phi_j(\mathbf{x}) = \exp\left(-\frac{\|\mathbf{x} - \mathbf{c}_j\|^2}{2\sigma_j^2}\right) \]
这里使用高斯函数,其输出随输入与中心距离的增大而衰减。
- 输出层:对隐藏层输出进行线性加权求和。对于回归问题(单输出),最终输出为:
\[ f(\mathbf{x}) = \sum_{j=1}^{m} w_j \phi_j(\mathbf{x}) + b \]
其中 \(w_j\) 是权重,\(b\) 是偏置。分类问题可接Softmax函数。
2. 训练步骤分解
训练需确定三个参数:隐藏层中心 \(\{\mathbf{c}_j\}\)、宽度 \(\{\sigma_j\}\)、输出层权重 \(\{w_j\}\) 和偏置 \(b\)。过程分两步:
步骤1:确定隐藏层参数(无监督学习)
- 中心选择:使用聚类算法(如K-means)从训练数据 \(\{\mathbf{x}_1, ..., \mathbf{x}_n\}\) 中找出 \(m\) 个聚类中心作为 \(\mathbf{c}_j\)。
- 随机初始化 \(m\) 个中心点。
- 迭代执行:
- 将每个样本分配到最近的中心所属聚类。
- 重新计算每个聚类的均值作为新中心。
- 直到中心点收敛。
- 宽度计算:每个中心 \(\mathbf{c}_j\) 的宽度 \(\sigma_j\) 通常取该中心到最近其他中心距离的平均值:
\[ \sigma_j = \frac{1}{K} \sum_{k=1}^{K} \|\mathbf{c}_j - \mathbf{c}_k\| \]
其中 \(K\) 是最近中心的个数(常取 \(K=m\) 或固定值如3)。
步骤2:训练输出层参数(有监督学习)
- 将训练数据输入隐藏层,得到隐藏层输出矩阵 \(\mathbf{\Phi} \in \mathbb{R}^{n \times m}\),其中元素 \(\Phi_{ij} = \phi_j(\mathbf{x}_i)\)。
- 输出层权重 \(\mathbf{w} = [w_1, ..., w_m]^T\) 和偏置 \(b\) 通过最小化均方误差求解:
\[ \min_{\mathbf{w}, b} \sum_{i=1}^{n} \left( y_i - \left( \sum_{j=1}^{m} w_j \phi_j(\mathbf{x}_i) + b \right) \right)^2 \]
- 写成矩阵形式:令 \(\mathbf{\tilde{\Phi}} = [\mathbf{\Phi}, \mathbf{1}]\)(添加全1列对应偏置),则解为:
\[ \mathbf{\tilde{w}} = (\mathbf{\tilde{\Phi}}^T \mathbf{\tilde{\Phi}})^{-1} \mathbf{\tilde{\Phi}}^T \mathbf{y} \]
其中 \(\mathbf{\tilde{w}} = [\mathbf{w}; b]\)。若 \(\mathbf{\tilde{\Phi}}^T \mathbf{\tilde{\Phi}}\) 不可逆,可加入正则项使用岭回归。
3. 预测过程
对新样本 \(\mathbf{x}_\text{new}\):
- 计算隐藏层输出:\(\phi_j(\mathbf{x}_\text{new}) = \exp\left(-\frac{\|\mathbf{x}_\text{new} - \mathbf{c}_j\|^2}{2\sigma_j^2}\right)\)。
- 输出层线性组合:\(f(\mathbf{x}_\text{new}) = \sum_{j=1}^{m} w_j \phi_j(\mathbf{x}_\text{new}) + b\)。
关键点总结
- RBF网络通过局部响应的径向基函数捕捉非线性模式,适合插值类问题。
- 训练效率高,因隐藏层参数可通过无监督方式快速初始化。
- 宽度参数 \(\sigma_j\) 影响函数平滑度:过小会导致过拟合,过大会使函数过于平缓。