RBF神经网络-高斯核函数

文章目录

一、RBF神经网络介绍

从对函数的逼近功能而言,神经网络可分为全局逼近和局部逼近。局部逼近网络具有学习速度快的优点。径向基函数(Radial Basis Function,BRF)就属于局部逼近神经网络。是一种性能良好的前向网络,具有最佳逼近及克服局部极小值问题的性能。

网络结构:

RBF神经网络-高斯核函数
首先是多个输入,中间的是径向基函数,常用的就是高斯核函数,最后是输出。

; 1.1高斯函数

高斯核函数的名称比较多,一下名称指的都是高斯核函数

  • 高斯核函数
  • RBF
  • 径向基函数

对于多项式核函数而言,它的核心思想是将样本数据升维,从而使得原本线性不可分的数据线性可分。 那么高斯核函数的核心思想是将每一个样本点映射到一个无穷维的特征空间,从而使得原本线性不可分的数据线性可分。

我们先来回顾一下多项式特征,如下图所示,有一组一维数据,两个类别,明显是线性不可分的情况:

RBF神经网络-高斯核函数
然后通过多项式将样本数据再增加一个维度,假设就是x 2 x^2 x 2,这样数据就变成这样了
RBF神经网络-高斯核函数
此时原本线性不可分的样本数据,通过增加一个维度后就变成线性可分了。这就是多项式升维的意义。

高斯核函数的公式:

RBF神经网络-高斯核函数
上面公式中的r r r就是高斯核函数的超参数。然后我们再来看看高斯核函数使线性不可分是数据线性可分的。

为了方便可视化,我们将高斯核函数中的r r r取两个定值‍‍l 1 和 l 2 l_1和l_2 l 1 ​和l 2 ​ ‍‍,这类点称为地标(Land Mark)。那么高斯核函数升维过程就是假如有两个地标点,那么就将样本数据转换为二维,也就是将原本的每个x x x值通过高斯核函数和地标,将其转换为2个值,既:

RBF神经网络-高斯核函数

代码实例

构建线性不可分:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-4, 5, 1)
x

array([-4, -3, -2, -1, 0, 1, 2, 3, 4])

y = np.array((x >= -2) & (x  2), dtype='int')
y

array([0, 0, 1, 1, 1, 1, 1, 0, 0])

plt.scatter(x[y==0], [0]*len(x[y==0]))
plt.scatter(x[y==1], [0]*len(x[y==1]))
plt.show()

RBF神经网络-高斯核函数
构造线性可分,使用高斯核函数:
def gaussian(x, l):

    gamma = 1.0

    return np.exp(-gamma * (x - l)**2)

l1, l2 = -1, 1
X_new = np.empty((len(x), 2))
for i, data in enumerate(x):
X_new[i, 0] = gaussian(data, l1)
X_new[i, 1] = gaussian(data, l2)

array([[1.23409804e-04, 1.38879439e-11],
       [1.83156389e-02, 1.12535175e-07],
       [3.67879441e-01, 1.23409804e-04],
       [1.00000000e+00, 1.83156389e-02],
       [3.67879441e-01, 3.67879441e-01],
       [1.83156389e-02, 1.00000000e+00],
       [1.23409804e-04, 3.67879441e-01],
       [1.12535175e-07, 1.83156389e-02],
       [1.38879439e-11, 1.23409804e-04]])

plt.scatter(X_new[y==0, 0], X_new[y==0, 1])
plt.scatter(X_new[y==1, 0], X_new[y==1, 1])
plt.show()

RBF神经网络-高斯核函数
可以通过高斯函数将原本的一维样本数据转换为二维后,新样本数据明显成为线性可分的状态。

上面的示例中,我们将高斯核函数中的y y y取定了两个值‍‍l 1 l_1 l 1 ​和‍‍l 2 l_2 l 2 ​ ‍‍。在实际运用中,是需要真实的将每个y y y值带进去的,也就是每一个样本数据中的y y y都是一个地标,那么可想而知,原始样本数据的行数就是新样本数据的维数,既原始 m _n ‍‍的样本数据通过高斯核函数转换后成为m_n的数据。当样本数据行数非常多的话,转换后的新样本数据维度自然会非常高,这也就是为什么在这节开头会说高斯核函数的核心思想是将每一个样本点映射到一个无穷维的特征空间的原因。

高斯核函数中的Gamma

在看高斯核函数中的r r r之前,我们先来探讨一个问题,我们以前有学过正态分布,它是一个非常常见的连续概率分布,最关键的是它又名高斯分布,我们再来看看高斯分布的函数:

RBF神经网络-高斯核函数
仔细看这个函数就能发现,它和高斯核函数的公式在形‍‍态上是一致的:

RBF神经网络-高斯核函数

所以高斯核函数的曲线其实也是一个高斯分布图。

下面再来看看高斯分布图以及‍‍u u u ‍‍和 r r r对分布图的影响:

RBF神经网络-高斯核函数

上图是维基百科对高斯分布解释中的分布图,从图中可以看到:

  • 高斯分布曲线的形状都是相似的钟形图。
  • u u u决定分布图中心的偏移情况
  • r r r决定分布图峰值的高低,或者说钟形的胖瘦程度。

RBF神经网络-高斯核函数

Original: https://blog.csdn.net/weixin_48167570/article/details/123722240
Author: Tc.小浩
Title: RBF神经网络-高斯核函数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/532406/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球