IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 《matlab径向基神经网络》底层实现原理(上) -> 正文阅读

[人工智能]《matlab径向基神经网络》底层实现原理(上)

《老饼讲解神经网络》http://bp.bbbdata.com/teach#6


目录

一、思想

(一) 问题

(二) RBF的解决思路

二、模型的数学表达式

(一)?数学表达式

(二) 例子说明

三、统一径向基神经网络与一般神经网络的格式

(一) 网络拓扑图

(二) 网络表达式

四、径向基基本类:精确径向基网络

(一)精确径向基原理

(二)精确径向基代码实现


径向基神经网络(RBF)常见的有精确径向基,径向基,概率神经网络,广义回归神经网络.网上已经有非常多文章讲述这几种网络。

本文主要讲述径向基神经网络的思想,数学表达式,参数意义,和讲述matlab里的径向基是如何实现的(不是工具箱的使用方法,是自写代码重现工具箱的效果).

开始掌握径向基神经网络的原理吧!


一、思想

(一) 问题

有一组原始数据点:

x123456
y(x*x/6)0.1670.6671.50.6674.1676

现在要找到一条光滑曲线拟合这6个数据点。

(二) RBF的解决思路

一图说明RBF的解决思路!:

从图中可以看到,RBF神经网络解决该问题的思想就是,以6个原始数据点(图中蓝色的点)为中心,生成了6个钟型函数(rbf)(实际只需要其中5个),6个钟型函数叠加后就是一条我们所需要的,能够光滑地拟合原始数据点的光滑曲线(绿色)。

参透此图,即参透了RBF的核心思想。


我们探究RBF的数学表达式,进一步更具体更形象深入理解径向基神经网络原理.

二、模型的数学表达式

(一)?数学表达式

径向基神经网的一般数学表达式为:

上式即多个钟形函数的叠加,再加上阈值b。

(二) 例子说明

例子:2个输入,1个输出,3个训练样本的径向基神经网络可写成三个钟型函数的叠加:

其中,?
a:一个影响钟型函数肥瘦程度的常数.
?x_i^{(j)}:第(j)个样本中第i个变量的值.
w和b:分别是待解的权重和阈值.


三、统一径向基神经网络与一般神经网络的格式

上面的格式是为了直观,很难让我们将它与神经网络联想到一起。下面我们将上式转为与一般神经网络统一的格式

(一) 网络拓扑图

把每个钟型函数看作一个隐节点,那么上例的网络拓扑图如下(只有3个样本,所以隐节点也是3个,隐节点个数与样本个数一样):

(二) 网络表达式

对应的,数学表达式写成一般神经网络结构的形式则如下:

参数说明
w和b的上标代表它属于第几层神经元的参数。

例如:
w_{31}^{(2)} :第2层(隐层)的第3个神经元与下一层(输出层)的第1个神经元的权值。
b_{3}^{(1)}:隐层第3个节点的阈值。

注意:输入层到隐层的权值和隐层的阈值的计算方法不再与BP神经网络相同,权值和输入使用欧氏距离函数dist计算,隐层的阈值再与它们相乘。


径向基神经网络有几种,精确径向基神经网络、径向基神经网络、广义回归神经网络、概率神经网络等。
这里我们先介绍精确径向基神经网络,它是最简单最基本的径向基神经网络。在下张文章再介绍其它神经网络。

四、径向基基本类:精确径向基网络

(一)精确径向基原理

现在问题来了,式(1)中的w和b怎么求?

精确地求出径向基的待解参数,就是《精确径向基》模型的主要特点

如何求得一组精确的w,b,使拟合误差为0?

很简单,因为当输入x知道时,在式中形如 e^{-a^2\left ( (x_1-x_1^{(1)})^2+(x_2-x_2^{(1)})^2 \right ) } 的部分都可以计算成一个常数,所以上式就成了一个线性方程。

假设现在有3个样本,那么就会有3个这样的线性方程组成方程组:

?只要解这个方程组就可以得到w和b的值了。因为未知数个数大于方程的个数,肯定能求得一组w满足上式。

可知精确径向基网络在训练数据上的预测误差会为0,正因如此,称它为"精确"径向基,它是最基本的径向基网络。

(二)精确径向基代码实现

代码主要重现matlab工具箱的精确径向基(newrbe)的实现逻辑,运行结果显示,自与代码实现精确径向基与调包结果一致

%主流程:通过自写精确径向基重现工具箱的newrbe,并与工具箱调用结果作比较
function testNewrbe()
    %本代码来自《老饼讲解神经网络》
    %本代码模仿matlab神经网络工具箱的newrbe神经网络,
    %代码主旨用于教学,供大家学习理解newrbe神经网络原理
    %%----------生成训练数据-------------------
    x1 = 1:0.4:10;
    x2 = x1;
    X = [ x1; x2];
    Y = sin (X(1, :)) + X( 2, :);
    spread = 2;  %扩展系数
    test_x = [2 3]'; %测试数据
    
    %--------使用自写代码建立精确径向基-------------
    [W1,B1,W2,B2] = myNewrbe( X,Y,spread );
    simY = mySim(W1,B1,W2,B2,test_x)    %模型预测
    
    %---使用matlab神经网络工具箱求xx的预测值-----------
    net = newrbe(X, Y, spread);
    simYByBox = sim( net, test_x)
    
    %-----------------------------------------
    testResult = isequal( simY, simYByBox);
    disp(['testResult = ',num2str(testResult)]);
end

%模型训练:精确径向基rbe
function [W1,B1,W2,B2] = myNewrbe(X,Y,spread)
    Q = size(X,2); %样本个数
    %输入层到隐层的权值和阈值
    W1 = X';
    B1 = ones( Q, 1)*sqrt( -log(.5))/spread;
    %求隐节点的值.
    h=zeros( Q, Q);
    for i = 1: Q
        for j = 1 : Q
            %计算第i个样本,第j个隐节点的值
            h(i,j) = B1(j)*sqrt(sum((X(:,i)' -W1(j,:)).^2));
        end
    end

    %hRbf是每个节点经过径向基传递函数变换后的值
    hRbf = exp( -h.*h) ;
    %利用隐节点的值和输出的值,求解隐层到输出层的权值和阈值
    hRbf = [ hRbf; ones( 1,size( hRbf,2))];
    WB  = Y /hRbf;
    W2 = WB( :, 1:end-1);
    B2 = WB( :, end);
end

%模型预测:精确径向基rbe
function y = mySim(W1,B1,W2,B2,xx)
    hNode = length(B1); %样本个数
    %求隐节点
    h_xx = zeros(hNode,1);
    for i = 1 : hNode
        h_xx(i) = B1(i) * sqrt(sum((xx' - W1(i,:)).^2));
    end
    hRbf_xx = exp( -h_xx .* h_xx );
    %网络的输出
    y = W2 * hRbf_xx + B2;
end

本文先介绍到这,下篇文章继续介绍径向基神经网络、广义回归神经网络、概率神经网络的原理和参数设置的技巧。


相关文章

《matlab工具箱实现--精确径向基神经网络》

《matlab工具箱实现--径向基神经网络例子》

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:43:23  更:2022-04-18 17:45:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:44:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码