BP神经网络算法与实践概述

神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了。神经网络有很多种:前向传输网络、反向传输网络、递归神经网络、卷积神经网络等。本文介绍基本的反向传输神经网络(Backpropagation 简称BP),主要讲述算法的基本流程和自己在训练BP神经网络的一些经验。

BP神经网络的结构p>神经网络就是模拟人的大脑的神经单元的工作方式,但进行了很大的简化,神经网络由很多神经网络层构成,而每一层又由许多单元组成,第一层叫输入层,最后一层叫输出层,中间的各层叫隐藏层,在BP神经网络中,只有相邻的神经层的各个单元之间有联系,除了输出层外,每一层都有一个偏置结点:

虽然图中隐藏层只画了一层,但其层数并没有限制,传统的神经网络学习经验认为一层就足够好,而最近的深度学习不这么认为。偏置结点是为了描述训练数据中没有的特征,偏置结点对于下一层的每一个结点的权重的不同而生产不同的偏置,于是可以认为偏置是每一个结点(除输入层外)的属性。我们偏置结点在图中省略掉:

在描述BP神经网络的训练之前,我们先来看看神经网络各层都有哪些属性:

每一个神经单元都有一定量的能量,我们定义其能量值为该结点j的输出值Oj;

相邻层之间结点的连接有一个权重Wij,其值在[-1,1]之间;

除输入层外,每一层的各个结点都有一个输入值,其值为上一层所有结点按权重传递过来的能量之和加上偏置;

除输入层外,每一层都有一个偏置值,其值在[0,1]之间;

除输入层外,每个结点的输出值等该结点的输入值作非线性变换;

我们认为输入层没有输入值,其输出值即为训练数据的属性,比如一条记录X=<(1,2,3),类别1>,那么输入层的三个结点的输出值分别为1,2,3. 因此输入层的结点个数一般等于训练数据的属性个数。

训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两部分:

前向传输,逐层波浪式的传递输出值;

逆向反馈,反向逐层调整权重和偏置;

我们先来看前向传输。

前向传输(Feed-Forward前向反馈)

在训练网络之前,我们需要随机初始化权重和偏置,对每一个权重取[-1,1]的一个随机实数,每一个偏置取[0,1]的一个随机实数,之后就开始进行前向传输。

神经网络的训练是由多趟迭代完成的,每一趟迭代都使用训练集的所有记录,而每一次训练网络只使用一条记录,抽象的描述如下:

while 终止条件未满足:    for record:dataset:        trainModel(record) 

首先设置输入层的输出值,假设属性的个数为100,那我们就设置输入层的神经单元个数为100,输入层的结点Ni为记录第i维上的属性值xi。对输入层的操作就这么简单,之后的每层就要复杂一些了,除输入层外,其他各层的输入值是上一层输入值按权重累加的结果值加上偏置,每个结点的输出值等该结点的输入值作变换

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索matlab bp 神经网络
, 神经网络
, 描述的数据结构与算法
, oj
, 卷积神经网络
, 结点
, 算法训练
, 输入
, 权重
, bp神经网路
, adaboost训练
, 输出
, 神经网路
, 训练序列
一个
bp神经网络算法、bp神经网络算法步骤、bp神经网络算法原理、bp神经网络算法实例、bp神经网络算法详解,以便于您获取更多的相关知识。

时间: 2024-10-07 19:37:50

BP神经网络算法与实践概述的相关文章

BP神经网络算法

今天来讲BP神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据挖掘等领域.接下来介绍BP神经网络的原理及实现. Contents 1. BP神经网络的认识 2. 隐含层的选取 3. 正向传递子过程 4. 反向传递子过程 5. BP神经网络的注意点 6. BP神经网络的C++实现 1. BP神经网络的认识 BP(Back Propagation)神经网络分为两个过程 (1)工作信号正向传递子过程 (2)误差信号反向传递子过程 在BP神经网络中,单个样本有m个输

/*c语言实现*/遗传算法改进BP神经网络原理和算法实现怎么弄?

问题描述 /*c语言实现*/遗传算法改进BP神经网络原理和算法实现怎么弄? 我现在在研究遗传算法改进BP神经网络,大概明白原理,但算法程序还有很多问题,求大神们教教我具体怎么把GA和BP结合,算法如何实现,给出代码或伪代码行吗? 解决方案 一般都是matlab去写,然后用C调用,用C语言得写到什么时候. 参考:http://www.docin.com/p-788836632.html

elasticsearch-请教:BP神经网络分词算法怎么整合到Elasticsearch中?急求解

问题描述 请教:BP神经网络分词算法怎么整合到Elasticsearch中?急求解 我想在Elasticsearch中使用BP神经网络分词算法,应该怎么样的步骤把算法嵌入到Elasticsearch的代码中,请大侠们指教

卷积神经网络算法的简单实现

前言 从理解卷积神经到实现它,前后花了一个月时间,现在也还有一些地方没有理解透彻,CNN还是有一定难度的,不是看哪个的博客和一两篇论文就明白了,主要还是靠自己去专研,阅读推荐列表在末尾的参考文献.目前实现的CNN在MINIT数据集上效果还不错,但是还有一些bug,因为最近比较忙,先把之前做的总结一下,以后再继续优化. 卷积神经网络CNN是Deep Learning的一个重要算法,在很多应用上表现出卓越的效果,[1]中对比多重算法在文档字符识别的效果,结论是CNN优于其他所有的算法.CNN在手写体

神经网络算法可能存在的问题?

问题描述 神经网络算法可能存在的问题? 关于神经网络算法梯度下降法和随机梯度下降法可能存在的问题: (小白刚注册第一次发帖,原谅没有多少金币...还请各路大神多指点,非常感谢!!!) 用梯度下降法修改权值,是当训练集里所有的样本都输入完之后,将所有样本的误差加和来修改权值.总觉得哪地方不对,这样是不是放大了误差对权值的作用?得到的网络不仅仅是不容易找到全局最小值的问题,而且是很不精确?由于不是每个样本输入后都进行一次权值修改,相对于随机梯度下降法优点是计算速度快? 随机梯度下降法每一个样本的输入

神经网络算法能拟合所有函数吗?

问题描述 神经网络算法能拟合所有函数吗? 单层的神经网络几乎等价于N元一次方程多层的神经网络有什么意义?能拟合所有函数吗? 如果能能介绍一下相关的证明过程/研究成果吗?(证明它能拟合所有函数)如果不能是不是说神经网络是基本上没用的 解决方案 http://wenku.baidu.com/link?url=fBV2jF23VDKQVDJ_D_RJyHxhA37ZwqlIoheY71MM9GK0LbknOxlid1zK47_Tm6AtfXmCLzZuw23w3O4unjJCxl6V6Vlu8HKSx

计算机视觉怎么给图像分类?KNN、SVM、BP神经网络、CNN、迁移学习供你选(附开源代码)

图像分类问题就是从固定的一组分类中,给输入图像分配标签的任务.这是计算机视觉的核心问题之一,尽管它看似简单,却在实际生活中有着各种各样的应用. 传统方式:功能描述和检测. 也许这种方法对于一些样本任务来说是比较好用的,但实际情况却要复杂得多. 因此,我们将使用机器学习来为每个类别提供许多示例,然后开发学习算法来查看这些示例,并了解每个类的视觉外观,而不是试图直接在代码中指定每一个大家感兴趣的类别是什么样的.  然而,图像分类问题就是一个非常复杂的工作,它总是借用诸如卷积神经网络(CNN)这样的深

backp-用java写可以识别数字的BP神经网络

问题描述 用java写可以识别数字的BP神经网络 现在学校要求写一个可以识别数字的神经网络,要求最好用bp, 也可以用别的算法,语言可以任意,最好是java.数据事uci的optical recognition of handwritten digits 想知道有没有指导怎么一步一步建立的的教程,不知道如何建立这样的网络,代码里需要几层方法? 解决方案 参考:http://download.csdn.net/download/u012828028/6546885 解决方案二: BP神经网络应用于

极简反传(BP)神经网络

   一.两层神经网络(感知机) import numpy as np '''极简两层反传(BP)神经网络''' # 样本 X = np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]]) y = np.array([0,0,1,1]) # 权值矩阵 初始化 Wi = 2 * np.random.random(3) - 1 for iter in range(10000): # 前向传播,计算误差 li = X lo = 1 / (1 + np.exp(-np.do