一、 背景知识
1988年,Broomhead、Lowe以及Moody和Darken最早将径向基函数用于神经网络设计。径向基函数神经网络(Radial Basis Function Neural Network,RBF神经网络)是一类常用的三层前馈网络,既可用于函数逼近,也可用于模式分类。与其他类型的人工神经网络相比,RBF网络有生理学基础,结构简单,学习速度快,优良的逼近性能和泛化能力等特点。
简单说明一下为什么RBF网络收敛得比较快。当网络中的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的权值都要调整,从而导致全局逼近网络的学习速度很慢。BP神经网络就是一个典型的例子。常见的局部逼近网络有RBF网络、CMAC网络、B样条网络。
二、什么是径向基函数
径向基函数是一个取值仅仅依赖于离原点距离的实值函数(RBF)方法。也就是 Φ ( x , c ) = Φ ( ∣ ∣ x − c ∣ ∣ ) \Phi(x, c)=\Phi(||x-c||) Φ(x,c)=Φ(∣∣x−c∣∣)。任意一个满足 Φ ( x ) = Φ ( ∣ ∣ x ∣ ∣ ) \Phi(x)=\Phi(||x||) Φ(x)=Φ(∣∣x∣∣)特性的函数 Φ \Phi Φ都叫做径向基函数,标准的一般使用欧式距离(也叫做欧式径向基函数)。最常用的径向基函数是高斯核函数,形式为 k ( ∣ ∣ x − x c ∣ ∣ ) = e − ∣ ∣ x − x c ∣ ∣ 2 2 σ 2 k(||x-x_c||)=e^{\frac{-||x-x_c||^2}{2\sigma^2}} k(∣∣x−xc∣∣)=e2σ2−∣∣x−xc∣∣2。其中 x c x_c xc为核函数中心, σ \sigma σ为函数的宽度参数,控制了函数的径向作用范围。
重要的径向基函数主要有如下三种:
- Gauss(高斯)函数
φ ( r ) = e − r 2 2 σ 2 \varphi(r)=e^{-\frac{r^2}{2\sigma^2}} φ(r)=e−2σ2r2 - 反常S型函数
φ ( r ) = 1 1 + e r 2 σ 2 \varphi(r)=\frac{1}{1+e^\frac{r^2}{\sigma^2}} φ(r)=1+eσ2r21 - 拟多二次函数
φ ( r ) = 1 ( r 2 + c 2 ) 1 / 2 \varphi(r)=\frac{1}{(r^2+c^2)^{1/2}} φ(r)=(r2+c2)1/21
三、什么是RBF神经网络
RBF神经网络是一种三层神经网络,包括输入层、隐层、输出层。从输入空间到隐层空间的变换是非线性的,而从隐层空间到输出层空间的变换是线性的。
RBF神经网络解决插值问题
完全内插法要求插值函数经过每个样本点,即
F
(
X
n
)
=
d
n
F(X^n)=d^n
F(Xn)=dn。样本点总共有k个。
RBF的方法是要选择k个基函数,每个基函数对应一个训练数据,各基函数形式为
φ
(
∣
∣
X
−
X
k
∣
∣
)
\varphi(||X-X^k||)
φ(∣∣X−Xk∣∣),由于距离是径向同性的,因此称为径向基函数。
∣
∣
X
−
X
k
∣
∣
||X-X^k||
∣∣X−Xk∣∣表示差向量的模,或者叫2范数。
基于径向基函数的插值函数为:
F
(
x
)
=
∑
k
=
1
n
w
k
φ
k
(
∣
∣
X
−
X
k
∣
∣
)
=
w
1
φ
1
(
∣
∣
X
−
X
1
∣
∣
)
+
⋯
+
w
n
φ
n
(
∣
∣
X
−
X
n
∣
∣
)
F(x)=\sum_{k=1}^nw_k\varphi_k(||X-X^k||)=w_1\varphi_1(||X-X^1||)+\cdots+w_n\varphi_n(||X-X^n||)
F(x)=k=1∑nwkφk(∣∣X−Xk∣∣)=w1φ1(∣∣X−X1∣∣)+⋯+wnφn(∣∣X−Xn∣∣)
输入X是个m维的向量,隐层大小为n,n>m。
其中,隐含层的作用是把向量从低维度m映射到高维度n,这样低维度线性不可分的情况到高维度就变得线性可分了,实际上是核函数的思想。
将插值条件代入:
{
w
1
φ
1
(
∣
∣
X
1
−
X
1
∣
∣
)
+
w
2
φ
2
(
∣
∣
X
1
−
X
2
∣
∣
)
+
⋯
+
w
p
φ
p
(
X
1
−
X
p
)
=
d
1
w
1
φ
1
(
∣
∣
X
2
−
X
1
∣
∣
)
+
w
2
φ
2
(
∣
∣
X
2
−
X
2
∣
∣
)
+
⋯
+
w
p
φ
p
(
X
2
−
X
p
)
=
d
2
⋮
w
1
φ
1
(
∣
∣
X
p
−
X
1
∣
∣
)
+
w
2
φ
2
(
∣
∣
X
p
−
X
2
∣
∣
)
+
⋯
+
w
p
φ
p
(
X
p
−
X
p
)
=
d
p
\left\{ \begin{gathered} w_1\varphi_1(||X^1-X^1||)+w_2\varphi_2(||X^1-X^2||)+\cdots+w_p\varphi_p(X^1-X^p)=d^1 \\w_1\varphi_1(||X^2-X^1||)+w_2\varphi_2(||X^2-X^2||)+\cdots+w_p\varphi_p(X^2-X^p)=d^2 \\\vdots \\w_1\varphi_1(||X^p-X^1||)+w_2\varphi_2(||X^p-X^2||)+\cdots+w_p\varphi_p(X^p-X^p)=d^p \end{gathered} \right.
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧w1φ1(∣∣X1−X1∣∣)+w2φ2(∣∣X1−X2∣∣)+⋯+wpφp(X1−Xp)=d1w1φ1(∣∣X2−X1∣∣)+w2φ2(∣∣X2−X2∣∣)+⋯+wpφp(X2−Xp)=d2⋮w1φ1(∣∣Xp−X1∣∣)+w2φ2(∣∣Xp−X2∣∣)+⋯+wpφp(Xp−Xp)=dp
写成向量的形式为 Φ W = d \Phi W=d ΦW=d,当 Φ \Phi Φ可逆时,有 W = Φ − 1 d W=\Phi^{-1}d W=Φ−1d
径向基函数神经网络的激活函数:
R
(
x
m
−
c
i
)
=
e
−
∣
∣
x
m
−
c
i
∣
∣
2
2
σ
2
R(x_m-c_i)=e^\frac{-||x_m-c_i||^2}{2\sigma^2}
R(xm−ci)=e2σ2−∣∣xm−ci∣∣2
其中
x
m
x_m
xm通过RBF神经网络可得到网络的输出为:
y
j
=
∑
i
=
1
h
w
i
j
e
−
∣
∣
x
p
−
c
i
∣
∣
2
2
σ
2
j
=
1
,
2
,
.
.
.
,
n
y_j=\sum_{i=1}^hw_{ij}e^-\frac{||x_p-c_i||^2}{2\sigma^2} j = 1,2,...,n
yj=i=1∑hwije−2σ2∣∣xp−ci∣∣2j=1,2,...,n
采用最小二乘的损失函数:
σ
=
∑
j
=
1
h
∣
∣
d
j
−
y
j
c
i
∣
∣
2
\sigma=\sum_{j=1}^h||d_j-y_jc_i||^2
σ=j=1∑h∣∣dj−yjci∣∣2
四、高斯核函数怎么映射高维空间
高斯核函数的定义公式如下:
k
(
x
,
x
′
)
=
e
−
∣
∣
x
−
x
′
∣
∣
2
σ
2
k(\textbf{x},\textbf{x}')=e^{-\frac{||\textbf{x}-\textbf{x}'||}{2\sigma^2}}
k(x,x′)=e−2σ2∣∣x−x′∣∣
这个公式可以化简为:
k
′
(
x
,
x
′
)
=
e
−
x
⋅
x
′
σ
2
k'(\textbf{x},\textbf{x}')=e^{-\frac{\textbf{x}\cdot \textbf{x}'}{\sigma^2}}
k′(x,x′)=e−σ2x⋅x′
然后通过幂级数进行展开:
k
′
(
x
,
x
′
)
=
∑
n
=
0
+
∞
(
x
⋅
x
′
)
n
σ
n
n
!
k'(\textbf{x},\textbf{x}')=\sum\nolimits_{n=0}^{+\infty}\frac{(\textbf{x}\cdot \textbf{x}')^n}{\sigma^nn!}
k′(x,x′)=∑n=0+∞σnn!(x⋅x′)n
可以看出,向量X会生成类似多项式核展开的形式。
五、计算例子
用RBF神经网络实现异或