神经网络及BP推导

一、神经网络简介

神经网络neural network,是生物科学和信息科学交叉的产物。用计算机模拟人脑的工作过程,完成分类识别的任务。

因为人脑神经元(神经细胞)和神经元之间通过轴突或者树突的相连,神经细胞感受到刺激之后将产生兴奋并通过细胞突起(轴突+树突)将兴奋传导给与之有连接的神经元。

一个神经细胞的结构:

一个神经元和其它神经元连接:

一个神经元通常和若干个神经元相连,连接有强有弱,不同的连接就像电阻不同的导体。一个非感受神经元(非输入神经元)在兴奋传导过程中受到的刺激总和为与之相连的神经元传递来的兴奋之和。

一个神经元受到的刺激之和用Y表示,那么:

神经元与上层n个神经元相连,xi是n个上层神经元传来的兴奋值,wi是与上层n个神经元的连接紧密程度。

一个神经元受到刺激Y之后会在细胞内部转化一下,得到一个兴奋输出y,该输出将传导给与之相连的下层神经元。

而且我们假设y与Y满足如下关系(对应整形函数,整形函数可以有多种定义)

sigmoid是一个长成这样的函数:

sigmoid是一个单调递增函数,当Y取0时y=0.5,当Y-》+无穷时,y=1,当Y-》-无穷时,y=0.

二、单层感知机

神经网络中最简单的就是单输出的单层感知机。

我们举个简单的例子:

只有两个输出单元的单层感知机,x为输入神经元,y为输出神经元,y与两个输入神经元相连。

假设有一批样本S,样本是二维平面上的点,样本特征是点的坐标x1,x2。

这些样本分为红点、绿点两类,分别用0和1表示。

现在想训练一个神经网络,用于区分红点和绿点,怎么做到呢?

希望输入绿点坐标就让y接近1,输入红点坐标,就让y接近0.

描述一下网络训练过程:

选取一个训练两本(x1,x2,T),T为类别标记,为0或者1.

我们希望当网络输入x1,x2时,输出的y接近目标输出T。

输入x1,x2,通过公式,我们可以算得y。在网络训练前y往往和实际想要的输出T不一样。这就产生一个错误信号,该信号要用来指导网络的修正(修正参数w1,w2,w3)。

错误信号的定义为:

网络怎么训练,权重怎么修改呢?

有两个直观地方法:

(1)错误越大,与输出神经元的连接(W)就需要越多的修改;

例如:Err(Y)很大,说明W修改量delta(W)也应该很大。

(2)在输入神经元中,谁输出越大,对错误的贡献就越大,对应的连接需要的修改量就越多。

例如:x1=0.1,x2=0.8。Err(Y)的出现,x2的责任更大,连接权重w2的修改量delta(w2)要比delta(w1)要更大。

于是,我们得到网络权重的修改量:

delta(W)=x*Err(Y);

一条连接权重的修改量可以理解为:上层的输出x
和 本层的Err(Y)
之积;

在样例中表示为:

算出delta(W)之后,就可以更新网络了。

如果训练样本S满足两类样本可以通过线性分类器(一条直线)分开,那么通过样本的多次训练,我们得到如下的分类器:

如果样不能分开,我们可能训练得到如下分类器:

在上文中,我介绍了单层感知机的BP训练过程(前向后向)。也感性地说明了为什么要这样训练。

其实上面的方法是数学推导得来的。这本质是一个多元函数求极值的问题。

首先模型的训练目的是使|Err(y)|最小,但是带有绝对值的目标不方便求导,我们把模型训练目标设损失函数lossFun最小。lossFun定义如下:

对于一个样本[(x1,x2),T],特征为x1,x2?;类别或输出目标为T;

lossFun是一个以[(x1,x2),T]为常量,以[w1,w2,w3]为变量的多元函数。模型的训练优化可看成一个多元函数求极值的问题:

训练样本[(x1,x2),T]时,网络参数按照梯度下降的方向求解。偏导数算出的是lossFun上升最快的方向,W的修改量delta(W)是lossFun下降最快的方向,所以delta(W)方向与梯度方向相反。

三、单输出多层感知机

在单层感知机的基础上增加若干个(本文增加一个)隐层,得到多层感知机。结构如下:

上图满足:

假如现在有一个样本[(x1,x2),T],用该样本训练网络时,网络优化的目标为lossFun最小。lossFun是一个关于变量w和v多元函数。网络的训练又变成多元函数求极值的问题。

通过上述方法算得网络梯度。

只要按照w和v的梯度下降方向更新网络就能完成网络训练。

总结一下错误反向传导:

某个非输出层神经元的错误来自它的下层,通过与之相连的下层神经元收集。

Err(y)=?v*Err(Z);

权重更新方法为:

Wij=Ni.output*Nj.Err;

四、多输出多层感知器

以上讨论神经网络输出都是单个节点,如果是多分类问题,输出神经元设为多个就行。推导如下:

训练过程为:

时间: 2024-10-27 05:42:32

神经网络及BP推导的相关文章

神经网络的BP推导过程

神经网络的BP推导过程 下面我们从一个简单的例子入手考虑如何从数学上计算代价函数的梯度,考虑如下简单的神经网络,该神经网络有三层神经元,对应的两个权重矩阵,为了计算梯度我们只需要计算两个偏导数即可: 首先计算第二个权重矩阵的偏导数,即 首先需要在之间建立联系,很容易可以看到的值取决于,而,而又是由取sigmoid得到,最后,所以他们之间的联系可以如下表示: 按照求导的链式法则,我们可以先求对的导数,然后乘以对的导数,即 由于 不难计算 令 上式可以重写为 接下来仅需要计算即可,由于 忽略前面的

机器学习(一):梯度下降、神经网络、BP神经网络

这几天围绕论文A Neural Probability Language Model 看了一些周边资料,如神经网络.梯度下降算法,然后顺便又延伸温习了一下线性代数.概率论以及求导.总的来说,学到不少知识.下面是一些笔记概要. 一. 神经网络 神经网络我之前听过无数次,但是没有正儿八经研究过.形象一点来说,神经网络就是人们模仿生物神经元去搭建的一个系统.人们创建它也是为了能解决一些其他方法难以解决的问题. 对于单一的神经元而言,当生物刺激强度达到一定程度,其就会被激发,然后做出一系列的反应.模仿这

RBF神经网络和BP神经网络的关系

作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 进行导数计算的层级图模型 (layer-by-layer graphical model) 只要模型是一层一层的,并使用AD/BP算法,就能称作 BP Ne

DL4NLP——神经网络(一)前馈神经网络的BP反向传播算法步骤整理

这里把按[1]推导的BP算法(Backpropagation)步骤整理一下,备忘使用.[1] 中直接使用矩阵微分的记号进行推导,整个过程十分简洁.而且这种矩阵形式有一个非常大的优势就是对照其进行编程实现时非常方便. 但其实用标量计算推导也有一定的好处,比如可以清楚地知道某个权重是被谁所影响的. 记号约定: $L$:神经网络的层数.输入层不算. $n^l$:第 $l$ 层神经元的个数.偏置神经元不算在内. $W^{l}\in\mathbb R^{n^l\times n^{l-1}}$:第 $l-1

神经网络和BP算法C及python代码

以上仅给出了代码.具体BP实现原理及神经网络相关知识请见:神经网络和反向传播算法推导 首先是前向传播的计算: 输入: 首先为正整数 n.m.p.t,分别代表特征个数.训练样本个数.隐藏层神经元个数.输出 层神经元个数.其中(1<n<=100,1<m<=1000, 1<p<=100, 1<t<=10). 随后为 m 行,每行有 n+1 个整数.每行代表一个样本中的 n 个特征值 (x 1 , x 2 ,..., x n ) 与样本的 实际观测结果 y.特征值的

简单易学的机器学习算法——神经网络之BP神经网络

一.BP神经网络的概念 BP神经网络是一种多层的前馈神经网络,其基本的特点是:信号是前向传播的,而误差是反向传播的.详细来说.对于例如以下的仅仅含一个隐层的神经网络模型: (三层BP神经网络模型) BP神经网络的过程主要分为两个阶段.第一阶段是信号的前向传播,从输入层经过隐含层.最后到达输出层:第二阶段是误差的反向传播,从输出层到隐含层.最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置. 二.BP神经网络的流程 在知道了BP神经网络的特点后,我们须要根据信号的前向传播

反向传播神经网络(BP)

①输入.输出矢量及问题的阐述 由题意输入变量取值范围为e={-2,-1,0,1,2}和ec={-2,-1,0,1,2},则输入矢量有25种情况,分别如下所示: 则由T=int((e+ec)/2) ,采用向下取整,可得输出矢量T为: 该问题可描述为通过训练BP神经网络实现模糊控制规则T=int((e+ec)/2),并达到网络输出与期望值误差小于0.001.选取较好的BP神经网络参数,包括隐含层节点个数.学习速率等.同时对不同的学习训练算法进行比较,并通过内插方法测试网络. ②给出网络结构 由于有两

【神经网络】BP算法解决XOR异或问题MATLAB版

第一种 %% %用神经网络解决异或问题 clear clc close ms=4;%设置4个样本 a=[0 0;0 1;1 0;1 1];%设置输入向量 y=[0,1,1,0];%设置输出向量 n=2;%输入量的个数 m=3;%隐层量的个数 k=1;%输出层的个数 w=rand(n,m);%为输入层到隐层的权值赋初值 v=rand(m,k);%为隐层到输出层的权值赋权值 yyuzhi=rand(1,m);%为输入层到隐层的阈值赋初值 scyuzhi=rand(1,1);%为隐层到输出层的阈值赋权

神经网络的BP算法

经典的BP网络,其具体结构如下: 请特别注意上面这个图的一些符号说明如下: 二.  学习算法 1. 信号的前向传递过程 请特别注意上述公式中的下标,这里,权值矩阵包含了神经元节点本身的偏置,所以权值矩阵多了一列.    2.   误差反向传导过程 三.  小结 信号的前向传递和误差反向传递过程都可以用递归公式描述.其实,就几个公式而已,把相关的几个重要公式再次总结如下: