INT301 Bio-computation 生物计算(神经网络)Pt.6 径向基函数网络(Radial-Basis Function Networks)
摘要: 径向基函数网络(RBF网络)是一种基于曲线拟合思想的神经网络,通过径向基函数(如高斯函数)构建插值表面来学习输入与输出的映射关系。RBF网络由输入层、隐藏层和输出层组成,其中隐藏层应用非线性变换将数据映射到高维空间,输出层进行线性组合。网络通过伪逆法计算权重,利用高维空间中的线性可分性解决复杂非线性问题。与正则化网络相比,RBF网络通过减少基函数数量提高计算效率,避免大规模矩阵求逆问题,适
文章目录
1. 径向基函数网络(RBF网络)
神经网络的常见任务:
分类(Classification):将输入数据分配到预定义的类别中。例如,识别手写数字(0到9)或判断电子邮件是否为垃圾邮件。
预测(Prediction):根据输入数据预测未来的值或连续的输出。例如,预测股票价格或天气变化。
神经网络的核心功能是学习输入数据和输出结果之间的关系。这种关系可以通过一个函数来表示,神经网络的目标就是找到这个函数。
例如,对于一个天气预测模型,输入可能是温度、湿度、气压等气象数据,输出是未来几天的天气情况。
神经网络通过训练数据来学习输入和输出之间的映射关系。训练过程中,网络调整其内部参数(如权重和偏置),以最小化预测输出和真实输出之间的误差。
这个学习过程通常通过优化算法(如梯度下降)来实现。
从数学角度看,神经网络的学习过程可以被看作是曲线拟合或函数逼近问题。也就是说,神经网络试图找到一个函数,使得这个函数能够尽可能准确地描述输入和输出之间的关系。
例如,对于一个简单的线性回归问题,目标是找到一条直线(函数)来拟合数据点;而对于更复杂的关系,可能需要更复杂的函数(如多项式或非线性函数)来拟合。
曲线拟合是一种数学方法,用于找到一个函数(或曲线),使其能够尽可能好地拟合一组给定的数据点。插值问题是一种特殊的曲线拟合问题,要求找到一个函数,使其精确地通过所有给定的数据点。换句话说,插值函数在每个数据点上的值必须等于该点的真实值。在机器学习和神经网络中,学习过程可以被看作是找到一个“插值表面”(Interpolating Surface),这个表面在高维空间中提供对训练数据的最佳拟合。
径向基函数网络(RBF网络)的设计正是基于这种曲线拟合或函数逼近的观点。
RBF网络通过使用径向基函数(如高斯函数)作为隐藏层的激活函数,能够高效地逼近复杂的函数关系。
这种设计使得RBF网络在处理某些类型的函数逼近问题时表现出色,尤其是在需要快速学习和高精度逼近的场景中。
1.1 径向基函数(Radial-Basis Functions,RBFs)
径向基函数(RBF)网络通常使用插值方法来解决函数拟合问题。这种方法的核心思想是构建一个插值函数,该函数在给定的数据点上精确地匹配这些点的值,同时在数据点之间平滑地变化。
径向基函数技术建议构造插值函数 F F F,其形式如下:
F ( x ) = ∑ i = 1 N w i ϕ ( ∥ x − x i ∥ ) F(x) = \sum_{i=1}^{N} w_i \phi(\| x - x_i \|) F(x)=∑i=1Nwiϕ(∥x−xi∥),其中 ϕ ( ∥ x − x i ∥ ) \phi(\| x - x_i \|) ϕ(∥x−xi∥)是一组非线性径向基函数, x i x_i xi是这些函数的中心点, ∥ ⋅ ∥ \| ⋅ \| ∥⋅∥是欧几里得范数(即两点之间的距离)。
径向基函数(RBF)是一个实值函数,其值仅依赖于距离原点的距离: ϕ ( x ) = ϕ ( ∥ x ∥ ) \phi(\mathbf{x}) = \phi(\|\mathbf{x}\|) ϕ(x)=ϕ(∥x∥)。
另一种形式的径向基函数依赖于距离一个中心点 c c c的距离: ϕ ( x , c ) = ϕ ( ∥ x − c ∥ ) \phi(\mathbf{x}, c) = \phi(\|\mathbf{x} - c\|) ϕ(x,c)=ϕ(∥x−c∥)。
任何满足上述性质的函数都是径向基函数。
例如:
- 多二次函数(Multiquadrics)
ϕ ( x ) = ( x 2 + c 2 ) 1 / 2 for some c > 0 \phi(x) = (x^2 + c^2)^{1/2} \quad \text{for some } c > 0 ϕ(x)=(x2+c2)1/2for some c>0 - 逆多二次函数(Inverse Multiquadratics)
ϕ ( x ) = 1 ( x 2 + c 2 ) 1 / 2 for some c > 0 \phi(x) = \frac{1}{(x^2 + c^2)^{1/2}} \quad \text{for some } c > 0 ϕ(x)=(x2+c2)1/21for some c>0 - 高斯函数(Gaussian)
ϕ ( x ) = exp ( − x 2 2 σ 2 ) for some σ > 0 \phi(x) = \exp\left(-\frac{x^2}{2\sigma^2}\right) \quad \text{for some } \sigma > 0 ϕ(x)=exp(−2σ2x2)for some σ>0
所以正如前面所说,如果一个函数的值仅依赖于输入向量与某个中心点之间的距离,而不依赖于输入向量的方向,那么这样的函数就被称为径向基函数。
一个函数 ϕ : R n → R \phi: \mathbb{R}^n \rightarrow \mathbb{R} ϕ:Rn→R是径向基函数,如果存在某个函数 ψ : R → R \psi: \mathbb{R} \rightarrow \mathbb{R} ψ:R→R使得对于所有的 x ∈ R n \mathbf{x} \in \mathbb{R}^n x∈Rn和某个固定的中心点 c ∈ R n \mathbf{c} \in \mathbb{R}^n c∈Rn,都有: ϕ ( x ) = ψ ( ∥ x − c ∥ ) \phi(\mathbf{x}) = \psi(\|\mathbf{x} - \mathbf{c}\|) ϕ(x)=ψ(∥x−c∥)。
1.2 高斯径向基函数(Gaussian Radial Basis Function)
高斯RBF:
ϕ ( x ) = exp ( − ( x − c ) 2 r 2 ) \phi(x) = \exp\left(-\frac{(x−c)^2}{r^2}\right) ϕ(x)=exp(−r2(x−c)2),其中 c c c是中心点, r r r是半径参数,控制函数的宽度。
高斯RBF的值随着距离中心点的增加而单调递减。这意味着函数值在中心点附近最大,随着距离的增加逐渐减小。
高斯RBF具有局部性,即它们只在中心点附近的邻域内给出显著的响应。这种特性使得高斯RBF在构建局部模型时非常有用。
高斯RBF在生物学上更合理,因为它们的响应是有限的。这意味着高斯RBF不会在远离中心点的地方产生无限大的响应,这在生物学和神经科学中是更符合实际情况的。
1.3 正则化网络(Regularization Networks)
正则化网络是一种机器学习模型,它通过引入正则化项来防止过拟合,从而提高模型的泛化能力。在这种网络中,插值函数 F F F被建模为多元高斯函数的线性叠加。
插值函数 F F F的表达式如下:
F ( x ) = ∑ i = 1 N w i exp ( − ∥ x − x i ∥ 2 2 σ i 2 ) F(x) = \sum_{i=1}^{N} w_i \exp\left(-\frac{\|x - x_i\|^2}{2\sigma_i^2}\right) F(x)=∑i=1Nwiexp(−2σi2∥x−xi∥2),其中:
N N N是给定输入样本的数量。
x i x_i xi是第 i i i个输入样本。
w i w_i wi是第 i i i个高斯函数的权重。
σ i \sigma_i σi是第 i i i个高斯函数的标准差,控制函数的宽度。
正则化网络是一种通用逼近器,这意味着如果网络拥有足够多的单元(神经元),它就可以在某个紧集(compact set,即封闭且有界的集合)上任意好地逼近任何多变量连续函数。
这一特性的数学基础来自于通用逼近定理(Universal Approximation Theorem),该定理指出:
一个具有至少一个隐藏层的前馈神经网络,如果隐藏层使用非线性激活函数,那么它可以在紧集上任意好地逼近任何连续函数。
但正则化网会遇到这样的问题:
在正则化网络中,高斯函数的数量通常与训练样本的数量一一对应。这意味着如果训练样本数量很大,网络中需要的高斯函数数量也会很大。
当训练样本数量很大时,需要组合大量的基函数(高斯函数),这会导致计算效率低下。
在实际应用中,找到线性基函数权重需要对非常大的矩阵 Φ T Φ Φ^TΦ ΦTΦ进行求逆操作。这里的 Φ Φ Φ是一个包含所有基函数值的矩阵, Φ T Φ^T ΦT是其转置。当矩阵非常大时,求逆操作不仅计算量大,而且数值稳定性差。
为了避免上述问题,需要减少网络的复杂度,即减少基函数的数量。通过减少基函数的数量,我们尝试找到一个近似解,这个解接近于正则化网络产生的解,但计算效率更高。
1.4 径向基函数网络的基本结构
它由三层组成:
- 输入层(Input Layer):
输入层接收输入数据,即示例向量(example vectors)。
这些输入数据是原始的特征数据,它们被直接传递到下一层,即隐藏层,而不进行任何变换或处理。 - 隐藏层(Hidden Layer):
隐藏层应用非线性变换函数(通常是径向基函数)到输入数据上。
这些非线性变换将输入数据扩展到一个通常非常高维的隐藏空间中。这意味着数据在隐藏层中被映射到一个更高维的空间,这有助于捕捉输入数据的复杂关系和模式。
在RBF网络中,隐藏层通常使用高斯函数或其他类型的径向基函数作为激活函数。 - 输出层(Output Layer):
输出层对隐藏层的输出应用线性变换。
这意味着输出层将隐藏层的高维表示转换回一个或多个输出值,这些输出值可以是连续的(用于回归问题)或离散的(用于分类问题)。
输出层的线性变换通常涉及到权重的计算,这些权重可以通过训练过程学习得到。
因此RBF网络与普通神经网络的主要区别在于隐藏层使用了径向基函数,但它们的设计和训练过程也有一些其他不同之处,我们将在后面的学习中逐步介绍。
隐藏层中的每个神经元都应用一个径向基函数 ϕ i ( X ) ϕ_i(X) ϕi(X),这些函数通常是非线性的,例如高斯函数。
隐藏层的作用是将输入数据从输入空间映射到一个高维的隐藏空间,这个空间能够捕捉输入数据的复杂非线性关系。
因此隐藏层的神经元数量 M M M通常大于输入特征的数量 K K K,这意味着维度增加了。
输出层将隐藏层的输出进行线性组合,以产生最终的输出 y y y。
输出层的计算公式为: y = ∑ i = 1 M w i ϕ i ( X ) y = \sum_{i=1}^{M} w_i \phi_i(\mathbf{X}) y=∑i=1Mwiϕi(X)
其中 w i w_i wi是连接隐藏层第 i i i个神经元和输出层的权重。
1.5 RBF网络的基本原理
高维空间中的线性可分性:当数据被映射到更高维的空间时,它们更有可能在该空间中变得线性可分。
RBF网络的设计正是基于这种思想。它们包含两个主要的映射步骤:
非线性映射:首先,RBF网络使用非线性函数(如高斯函数)将输入数据从输入空间映射到一个高维的隐藏空间。这个非线性映射有助于捕捉输入数据的复杂结构和模式。
线性映射:然后,RBF网络使用线性函数将数据从隐藏空间映射到输出空间。这个线性映射相对简单,易于计算。
通过这种方式,RBF网络将复杂的非线性插值问题转换为两个更简单的问题:一个非线性问题(在隐藏空间中)和一个线性问题(在输出空间中)。
1.6 RBF网络的细节
我们回到径向基函数网络,其将插值函数 F F F建模为多元高斯函数的线性叠加(或称为线性组合)。
插值函数 F ( x ) F(x) F(x)的数学表达式如下:
F ( x ) = ∑ i = 1 M w i exp ( − ∥ x − t i ∥ 2 2 σ i 2 ) F(x) = \sum_{i=1}^{M} w_i \exp\left(-\frac{\|x - t_i\|^2}{2\sigma_i^2}\right) F(x)=∑i=1Mwiexp(−2σi2∥x−ti∥2),其中:
M M M是基函数的数量。
x i x_i xi是第 i i i个输入向量。
w i w_i wi是第 i i i个基函数的权重。
t i t_i ti是第 i i i个基函数的中心点。
σ i \sigma_i σi是第 i i i个基函数的标准差,控制函数的宽度。
基函数表示的是网络隐藏层中使用的一组函数,这些函数负责将输入数据映射到一个更高维的空间。
基函数的数量 M M M小于训练集中的点数 N N N,即 M < N M<N M<N。这意味着基函数的数量是有限的,而不是与训练样本数量一一对应。
基函数中心点 t i t_i ti是预先确定的。这些中心点可以是训练样本中的点,也可以通过聚类算法等方法选择。
1.6.1 伪逆法(pseudo-inverse method)
我们使用伪逆法计算RBF网络中的权重。
伪逆方法是一种数学技术,用于求解线性方程组,特别是在方程组可能没有唯一解的情况下。
对于一个输入样本 ( x i , d i ) (x_i,d_i) (xi,di),网络的输出 o ( x i ) o(x_i) o(xi)可以表示为:
o ( x i ) = w 1 ϕ 1 ( ∥ x i − t 1 ∥ ) + … + w M ϕ M ( ∥ x i − t M ∥ ) o(x_i) = w_1 \phi_1(\| x_i - t_1 \|) + \ldots + w_M \phi_M(\| x_i - t_M \|) o(xi)=w1ϕ1(∥xi−t1∥)+…+wMϕM(∥xi−tM∥),其中 w i w_i wi是第 i i i个基函数的权重, ϕ i ( ∥ x i − t i ∥ ) \phi_i(\| x_i - t_i \|) ϕi(∥xi−ti∥)是第 i i i个基函数,通常是径向基函数,如高斯函数, t i t_i ti是第 i i i个基函数的中心点。
我们希望网络的输出 o ( x i ) o(x_i) o(xi)等于目标值 d i d_i di,即:
w 1 ϕ 1 ( ∥ x i − t 1 ∥ ) + … + w M ϕ M ( ∥ x i − t M ∥ ) = d i w_1 \phi_1(\| x_i - t_1 \|) + \ldots + w_M \phi_M(\| x_i - t_M \|) = d_i w1ϕ1(∥xi−t1∥)+…+wMϕM(∥xi−tM∥)=di
这个方程可以重写为矩阵形式,对于一个样本:
[ ϕ 1 ( ∥ x i − t 1 ∥ ) ⋯ ϕ M ( ∥ x i − t M ∥ ) ] ⋅ [ w 1 ⋯ w M ] T = d i [\phi_1(\| x_i - t_1 \|) \cdots \phi_M(\| x_i - t_M \|)] \cdot [w_1 \cdots w_M]^T = d_i [ϕ1(∥xi−t1∥)⋯ϕM(∥xi−tM∥)]⋅[w1⋯wM]T=di
因此对于每个输入样本 ( x i , d i ) (x_i,d_i) (xi,di),网络的输出 o ( x i ) o(x_i) o(xi)可以表示为:
[ φ 1 ( ∥ x 1 − t 1 ∥ ) ⋯ φ n ( ∥ x 1 − t M ∥ ) ⋮ ⋱ ⋮ φ 1 ( ∥ x N − t 1 ∥ ) ⋯ φ n ( ∥ x N − t M ∥ ) ] \begin{bmatrix} \varphi_1(\| x_1 - t_1 \|) & \cdots & \varphi_n(\| x_1 - t_M \|) \\ \vdots & \ddots & \vdots \\ \varphi_1(\| x_N - t_1 \|) & \cdots & \varphi_n(\| x_N - t_M \|) \end{bmatrix}
φ1(∥x1−t1∥)⋮φ1(∥xN−t1∥)⋯⋱⋯φn(∥x1−tM∥)⋮φn(∥xN−tM∥)
[ w 1 ⋮ w M ] \begin{bmatrix} w_1 \\ \vdots \\ w_M \end{bmatrix}
w1⋮wM
= [ d 1 ⋮ d N ] \begin{bmatrix} d_1 \\ \vdots \\ d_N \end{bmatrix}
d1⋮dN
将所有训练样本的方程组合起来,可以形成一个矩阵方程:
Φ w = d \Phi \mathbf{w} = \mathbf{d} Φw=d,其中:
Φ \Phi Φ是一个 N × M N \times M N×M的矩阵,每个元素 ϕ i j \phi_{ij} ϕij是第 j j j个基函数在第 i i i个输入样本 x i x_i xi处的值。
w \mathbf{w} w是一个 M × 1 M \times 1 M×1的权重向量。
d \mathbf{d} d是一个 N × 1 N \times 1 N×1的目标值向量。
矩阵 Φ \Phi Φ定义为:
Φ = [ ϕ 1 ( ∥ x 1 − t 1 ∥ ) ⋯ ϕ M ( ∥ x 1 − t M ∥ ) ⋮ ⋱ ⋮ ϕ 1 ( ∥ x N − t 1 ∥ ) ⋯ ϕ M ( ∥ x N − t M ∥ ) ] \Phi = \begin{bmatrix} \phi_1(\| x_1 - t_1 \|) & \cdots & \phi_M(\| x_1 - t_M \|) \\ \vdots & \ddots & \vdots \\ \phi_1(\| x_N - t_1 \|) & \cdots & \phi_M(\| x_N - t_M \|) \end{bmatrix} Φ=
ϕ1(∥x1−t1∥)⋮ϕ1(∥xN−t1∥)⋯⋱⋯ϕM(∥x1−tM∥)⋮ϕM(∥xN−tM∥)
这个矩阵的每一行对应一个训练样本,每一列对应一个基函数在所有样本上的值。
通过求解线性方程组 Φ w = d \Phi \mathbf{w} = \mathbf{d} Φw=d,可以得到权重向量 w \mathbf{w} w。如果 Φ \Phi Φ是可逆的,可以直接计算 w = Φ − 1 d \mathbf{w} = \Phi^{-1} \mathbf{d} w=Φ−1d。如果 Φ \Phi Φ不可逆或为了提高数值稳定性,可以使用伪逆方法来求解。
我们再小结以下:
基函数 ϕ \phi ϕ通常采用高斯函数的形式: ϕ = exp ( − ∥ x − t i ∥ 2 2 σ i 2 ) \phi = \exp\left(-\frac{\|x - t_i\|^2}{2\sigma_i^2}\right) ϕ=exp(−2σi2∥x−ti∥2)
其中:
x x x是输入向量。
t i t_i ti是第 i i i个基函数的中心点。
σ i \sigma_i σi是第 i i i个基函数的标准差,控制函数的宽度。
Φ \Phi Φ是一个 N × M N×M N×M的设计矩阵,其中 N N N是训练样本的数量, M M M是基函数的数量。
每个元素 Φ i j \Phi_{ij} Φij表示第 j j j个基函数在第 i i i个输入样本 x i x_i xi处的值。
矩阵 Φ \Phi Φ定义为:
Φ = [ ϕ 1 ( ∥ x 1 − t 1 ∥ ) ⋯ ϕ M ( ∥ x 1 − t M ∥ ) ⋮ ⋱ ⋮ ϕ 1 ( ∥ x N − t 1 ∥ ) ⋯ ϕ M ( ∥ x N − t M ∥ ) ] \Phi = \begin{bmatrix} \phi_1(\| x_1 - t_1 \|) & \cdots & \phi_M(\| x_1 - t_M \|) \\ \vdots & \ddots & \vdots \\ \phi_1(\| x_N - t_1 \|) & \cdots & \phi_M(\| x_N - t_M \|) \end{bmatrix} Φ=
ϕ1(∥x1−t1∥)⋮ϕ1(∥xN−t1∥)⋯⋱⋯ϕM(∥x1−tM∥)⋮ϕM(∥xN−tM∥)
这个矩阵的每一行对应一个训练样本,每一列对应一个基函数在所有样本上的值。
设计矩阵 Φ Φ Φ将输入数据 x x x通过基函数转换到隐藏空间,使得数据在这个空间中可能更容易被线性分割或分离。
这种转换有助于简化问题的求解过程,特别是在处理复杂的非线性问题时。
这里首先展示了线性方程组的矩阵形式:
Φ W = d ΦW=d ΦW=d
其中:
Φ Φ Φ是设计矩阵,其大小为 N × M N×M N×M, N N N是训练样本的数量, M M M是基函数的数量。
W W W是未知的权重向量,其大小为 M × 1 M×1 M×1。
d d d是目标值向量,其大小为 N × 1 N×1 N×1。
未知的权重可以通过求解以下线性矩阵方程来找到: W = ( Φ T Φ ) − 1 Φ T d \mathbf{W} = (\Phi^T \Phi)^{-1} \Phi^T \mathbf{d} W=(ΦTΦ)−1ΦTd,这里使用了伪逆方法,因为 Φ Φ Φ可能不是方阵(即 N ≠ M N \neq M N=M),或者为了提高数值稳定性。
伪逆方法是一种求解线性方程组的技术,特别是当方程组可能没有唯一解或者 Φ Φ Φ不可逆时。 ( Φ T Φ ) − 1 (\Phi^T \Phi)^{-1} (ΦTΦ)−1确保了即使 Φ Φ Φ不是满秩的,也能找到一个解。
正式介绍用伪逆(pseudo-inverse)方法:
对于一个矩阵 Φ Φ Φ,如果它不是方阵或者不是满秩的,那么它没有常规的逆矩阵。此时,可以使用伪逆 Φ + Φ^+ Φ+来求解。
[ w 1 … w M ] T = Φ + [ d 1 … d N ] T [w_1 \ldots w_M]^T = \Phi^+ [d_1 \ldots d_N]^T [w1…wM]T=Φ+[d1…dN]T
伪逆的性质,或者说伪逆 Φ + Φ^+ Φ+满足以下条件:
Φ Φ + Φ = Φ \Phi \Phi^+ \Phi = \Phi ΦΦ+Φ=Φ
Φ + Φ Φ + = Φ + \Phi^+ \Phi \Phi^+ = \Phi^+ Φ+ΦΦ+=Φ+
Φ + Φ = ( Φ + Φ ) T \Phi^+ \Phi = (\Phi^+ \Phi)^T Φ+Φ=(Φ+Φ)T
Φ Φ + = ( Φ Φ + ) T \Phi \Phi^+ = (\Phi \Phi^+)^T ΦΦ+=(ΦΦ+)T
1.7 RBF网络的训练算法
- 初始化:首先需要一组训练样本 { ( x e , d e ) } e = 1 N \{(\mathbf{x}_e, d_e)\}_{e=1}^N {(xe,de)}e=1N,其中 x e \mathbf{x}_e xe是输入向量, d e d_e de是对应的目标值, N N N是样本数量。
- 确定网络结构:
基函数数量:需要确定网络中基函数的数量 M,即隐藏层中神经元的数量。
基函数中心点:确定每个基函数的中心点 t i t_i ti: i = 1 , 2 , … , M i=1,2,\ldots,M i=1,2,…,M
基函数方差:确定每个基函数的方差 σ i 2 \sigma_i^2 σi2, i = 1 , 2 , … , M i=1,2,\ldots,M i=1,2,…,M - 计算步骤:
计算每个样本的高斯基函数输出:
ϕ e i = exp ( − ∥ x e − t i ∥ 2 2 σ i 2 ) \phi_{ei} = \exp\left(-\frac{\|x_e - t_i\|^2}{2\sigma_i^2}\right) ϕei=exp(−2σi2∥xe−ti∥2)
其中 i = 1 , 2 , … , M i=1,2,…,M i=1,2,…,M表示基函数的索引, e = 1 , 2 , … , N e=1,2,…,N e=1,2,…,N表示样本的索引。
计算设计矩阵 Φ Φ Φ的转置 Φ T \Phi^T ΦT与 Φ \Phi Φ的乘积,以及这个乘积的伪逆 ( Φ T Φ ) − 1 \quad (\Phi^T \Phi)^{-1} (ΦTΦ)−1
计算设计矩阵 Φ Φ Φ的转置 Φ T \Phi^T ΦT与目标值向量 d d d的乘积。
使用伪逆和向量的乘积来计算权重向量 W W W: W = ( Φ T Φ ) − 1 Φ T d W = (\Phi^T \Phi)^{-1} \Phi^T d W=(ΦTΦ)−1ΦTd
基函数的中心 t i t_i ti和方差 σ i 2 σ_i^2 σi2可以与输出权重一起训练,但这需要很长时间。因此,这些参数通常预先确定。
1.8 RBF中心点的选择

中心点该怎么选择呢?
首先可以是随机选择。
1.8.1 随机选择(Random Selection)
直接从训练样本中随机选择一些样本作为基函数的中心点。
如果训练样本在特征空间中分布得比较均匀(即以一种具有代表性的方式分布),那么随机选择中心点的方法可以取得良好的效果。
优点:实现简单,计算成本低,特别是当训练样本数量较大时,随机选择可以快速确定中心点。
缺点:随机性可能导致某些情况下中心点选择不佳,影响网络性能。如果训练样本分布不均匀,随机选择可能无法捕捉到数据的重要结构。
1.8.2 k-均值聚类(K-means Clustering)
k-均值聚类是一种常用的聚类算法,它可以用来确定RBF网络中基函数的中心点。
使用 k-均值聚类算法选择中心点 t i t_i ti的依据是:相似的输入应该产生相似的输出,并且这些相似的输入对应该在训练集中被捆绑在一起形成聚类。
k-均值聚类将RBF中心点放置在输入空间中训练样本数量显著的区域。
1.8.2.1 聚类(Clustering)
聚类是一组数据对象的集合,这些对象在某些特征上具有相似性。
同一聚类内相似:在同一聚类中,对象之间彼此相似。
不同聚类间不相似:与其他聚类中的对象不同,即不同聚类的对象之间不相似。
聚类分析是一种方法,用于根据数据中发现的特征来寻找数据之间的相似性。
聚类分析属于无监督学习(Unsupervised learning),这意味着在进行聚类时,数据中没有预定义的类别标签。
聚类分析可以作为一个独立的工具来使用,帮助我们理解数据的分布情况。
聚类分析还可以作为其他算法的预处理步骤,例如在应用某些机器学习算法之前,先对数据进行聚类分析,以便更好地理解数据结构或进行特征提取。
那什么是好的聚类呢?
高质量聚类的特征:
- 高类内相似性(High intra-class similarity):
同一聚类中的样本彼此相似,即聚类内的对象在特征空间中彼此接近。 - 低类间相似性(Low inter-class similarity):
不同聚类中的样本彼此不相似,即不同聚类的对象在特征空间中彼此远离。
聚类方法的质量不仅取决于它产生高质量聚类的能力,还取决于其发现数据中隐藏模式的能力。
距离通常用于衡量两个数据对象之间的相似性或不相似性。
Minkowski 距离是一种通用的距离度量方法,可以根据不同的参数 q q q来计算两个 p-维数据对象之间的距离。
d ( i , j ) = ( ∣ x i 1 − x j 1 ∣ q + ∣ x i 2 − x j 2 ∣ q + … + ∣ x i p − x j p ∣ q ) q d(i,j) = \sqrt[q]{\left(|x_{i1} - x_{j1}|^q + |x_{i2} - x_{j2}|^q + \ldots + |x_{ip} - x_{jp}|^q\right)} d(i,j)=q(∣xi1−xj1∣q+∣xi2−xj2∣q+…+∣xip−xjp∣q),其中, i = x i 1 , x i 2 , . . . , x i p i=x_{i1},x_{i2},...,x_{ip} i=xi1,xi2,...,xip和 j = x j 1 , x j 2 , . . . , x j p j=x_{j1},x_{j2},...,x_{jp} j=xj1,xj2,...,xjp是两个p-维数据对象, q q q是一个正整数。
当 q = 1 q=1 q=1时,Minkowski 距离变为曼哈顿距离(Manhattan distance):
d ( i , j ) = ∣ x i 1 − x j 1 ∣ + ∣ x i 2 − x j 2 ∣ + … + ∣ x i p − x j p ∣ d(i,j) = |x_{i1} - x_{j1}| + |x_{i2} - x_{j2}| + \ldots + |x_{ip} - x_{jp}| d(i,j)=∣xi1−xj1∣+∣xi2−xj2∣+…+∣xip−xjp∣
当 q = 2 q=2 q=2时,Minkowski 距离变为欧几里得距离(Euclidean distance):
d ( i , j ) = ( ∣ x i 1 − x j 1 ∣ 2 + ∣ x i 2 − x j 2 ∣ 2 + … + ∣ x i p − x j p ∣ 2 ) d(i,j) = \sqrt{(|x_{i1} - x_{j1}|^2 + |x_{i2} - x_{j2}|^2 + \ldots + |x_{ip} - x_{jp}|^2)} d(i,j)=(∣xi1−xj1∣2+∣xi2−xj2∣2+…+∣xip−xjp∣2)
k-均值聚类算法将数据点划分为 K K K个不相交的子集(聚类)。
聚类标准:
聚类中心:聚类中心被设置在数据高密度区域。
数据点分配:每个数据点被分配到与其距离最近的聚类中心的聚类。
这个过程在数学上等价于最小化平方和聚类函数(sum-of-square clustering function): J = ∑ j = 1 K ∑ n ∈ S j ∥ x n − c j ∥ 2 J = \sum_{j=1}^{K} \sum_{n \in S_j} \| \mathbf{x}_n - \mathbf{c}_j \|^2 J=∑j=1K∑n∈Sj∥xn−cj∥2
其中:
S j S_j Sj是第 j j j个聚类,包含 N j N_j Nj个数据点。
c j \mathbf{c}_j cj聚类 S j S_j Sj中数据点的平均值,即聚类中心:
c j = 1 N j ∑ n ∈ S j x n \mathbf{c}_j = \frac{1}{N_j} \sum_{n \in S_j} \mathbf{x}_n cj=Nj1∑n∈Sjxn
1.8.2.2 算法步骤
- 初始化
随机将数据点分配到 k k k个聚类中的一个。每个数据点将被赋予一个聚类标签。 - 计算聚类中心
计算每个聚类的平均值,这个平均值成为该聚类的中心点(或称为质心)。 - 检查聚类标签
对于每个数据点,计算它到所有 k k k个聚类中心的距离。
如果某个数据点到某个聚类中心的距离小于该点到其当前聚类中心的距离,则更新该数据点的聚类标签为距离最小的那个聚类。 - 迭代
在每次迭代(即对所有数据点进行一次检查)后,如果没有数据点的聚类标签发生变化,即聚类中心和聚类成员都不再改变,算法停止;否则,返回步骤 2 继续迭代。
首先,需要确定聚类的数量 K K K,即你希望将数据分成多少个簇。我们下面的例子是3。
然后,随机选择 K K K个初始质心(centroids),这些质心可以是数据点,也可以是随机生成的点。也就是选择3个初始质心。
下一步将每个数据点分配给最近的质心。这个“最近”是基于所选择的距离度量来确定的,例如欧几里得距离。
然后根据当前的聚类分配,重新计算每个聚类的质心位置。质心通常是该聚类中所有数据点的平均值。
如果算法收敛,即质心位置不再发生变化,或者变化非常小,算法停止。否则,返回步骤3(将每个数据点分配给最近的质心。)继续迭代。
1.8.2.3 常见问题和局限性
-
在使用 k-均值聚类算法之前,必须预先指定聚类的数量 K K K。
-
不适用于非凸形状的聚类:
k-均值聚类算法假设聚类是凸形的,即聚类中任意两点间的线段完全位于聚类内。然而,如果数据的实际聚类形状是非凸的(例如环形或不规则形状),k-均值聚类可能无法正确识别这些聚类。
-
对噪声和异常值敏感:
k-均值聚类算法对数据中的噪声和异常值(outliers)非常敏感。这些异常值可能会对聚类中心的位置产生较大影响,从而影响聚类结果的准确性。
1.8.2.4 改进方法
- 重复 k-均值(Repeated k-means)
多次随机初始化:由于 k-均值聚类算法的结果可能依赖于初始质心的选择,因此可以通过多次随机初始化质心并选择最佳结果来提高聚类质量。
选择最佳结果:在多次运行中,选择使聚类内误差最小(例如,总平方误差)的结果作为最终的聚类结果。 - 更好的初始化(Better initialization)
使用更好的启发式:改进初始化方法,例如使用 k-均值+++(K-means+++)算法,该算法通过在数据点中选择“种子”来初始化质心,而不是随机选择。
初始分布的代码向量:寻找一种更好的方法来分配初始质心的初始分布,以更好地反映数据的实际结构。
设计挑战:设计一个好的初始化方法并不比设计一个好的聚类算法本身容易,因为初始化方法需要对数据集有深入的理解。
2.总结:
2.1 RBF网络和普通神经网络对比
- 隐藏层激活函数:
RBF网络:隐藏层通常使用径向基函数,如高斯函数,这些函数的输出仅依赖于输入向量与隐藏层中心点之间的距离。
普通神经网络:隐藏层可能使用各种激活函数,如ReLU、sigmoid、tanh等,这些函数的输出依赖于输入的非线性变换。 - 网络结构:
RBF网络:通常只有一个隐藏层,该层负责将输入数据映射到一个高维空间。
普通神经网络:可能包含多个隐藏层,每层都可以学习输入数据的不同抽象表示。 - 训练过程:
RBF网络:训练过程通常分为两个阶段:
第一阶段:使用聚类算法(如K-Means)确定隐藏层中心点的位置。
第二阶段:确定隐藏层的宽度参数(如高斯函数的标准差),并训练输出层的权重。
普通神经网络:通常使用反向传播算法同时训练所有层的权重。 - 输出层:
RBF网络:输出层通常是线性的,将隐藏层的输出加权求和以产生最终的输出。
普通神经网络:输出层可以是线性的或非线性的,具体取决于任务的需求。 - 泛化能力:
RBF网络:由于隐藏层使用局部化的径向基函数,它们可能在某些情况下具有更好的泛化能力,尤其是在处理具有明显局部结构的数据时。
普通神经网络:泛化能力取决于网络的结构、激活函数的选择以及正则化技术的应用。
2.2 RNF网络和多层感知器对比
相似之处(Similarities):
- 结构:RBF网络和MLP都是分层的前馈网络,能够产生非线性函数映射。
- 通用逼近器:两者都被证明是通用逼近器,这意味着它们能够逼近任何连续函数,只要有足够的网络容量。
不同之处(Differences):
- 隐藏层数量:RBF网络通常只有一个隐藏层,而MLP网络根据应用任务可能有一到多个隐藏层。
- 激活函数:
在MLP中,隐藏层和输出层的节点使用相同的激活函数。
在RBF中,每个隐藏层节点使用不同的激活函数(高斯函数),由不同的中心点和方差参数化。 - 非线性层:
在MLP中,隐藏层和输出层都是非线性的。
而RBF只有隐藏层是非线性的(输出层是线性的)。 - 激活函数计算:
RBF节点的激活函数计算输入样本与中心之间的欧几里得距离。
MLP的激活函数计算输入样本与传入权重的内积。 - 逼近类型:
MLP构建全局逼近,而RBF构建局部逼近。
更多推荐


所有评论(0)