向后传播神经网络分类总结

1.神经网络

  粗略的说,神经网络是一组连接的输入/输出单元,其中每个连接都与一个权重相关联。在学习阶段,通过调整这些权重,使得他能够预测输入元组的正确类标号来学习。由于单元之间的连接,神经网络学习又称连接着学习(connectionist learning)。

  神经网络需要很长的训练时间,因而更适合具有足够长的训练时间的应用。它需要大量的参数,如网络拓扑或“结构”,通常这些主要靠经验确定。神经网络常常因器可解释性差而备受批评。然而,神经网络的优点包括其对噪声数据的高承受能力,以及它对未经训练的数据的模式分类能力。当你在缺乏属性与类之间的联系的知识时也可以使用它们。不像大部分决策树算法,它们非常适合连续值的输入和输出。

2.多层前馈神经网络

  向后传播算法在多层前馈神经网络上学习。它迭代地学习用于元组类标号预测的一组权重。多层前馈(multilayer feed-forward)神经网络由一个输入层、一个活多个隐藏层和一个输出层组成。

                          

  每层由一些单元组成。网络的输入对应与对每个训练元组的观察属性。输入同事提供给构成输入层的单元。这些输入通过输入层,然后加权同时地提供给称做隐藏层的“类神经元的”第二层。该隐藏层单元的输出可以输入到另一个隐藏层,诸如此类。隐藏层的数量是任意的,尽管实践中通常只有一层,理论验证表明,两层的神经网络就可以模拟任何的非线性结构。最好一个隐藏层的权重输出作为构成输出层的单元的输入。输出层发布给定元组的网络预测。

  输入层的单元称做输入单元。隐藏层和输出层的单元,由于其符号生物学基础,有时称做神经节点(neurodes),或称输出单元。因此,我们称之为两层神经网络。(不计算输入层,因为它只是用来传递输入值到下一层),类似的,包含两个隐藏层的网络称做三层神经网络等。网络是前馈的,因为其权重都不回送到输入单元,或前一层的输出单元。网络是全连接的,如果每个单元都向下一层的每个单元提供输入。

  每个输出单元取前一层单元输出的加权和作为输入。它应用一个非线性(激活)函数作用于加权输入。多层前馈神经网络可以将类预测作为输入的非线性组合建模。从统计学的观点来看,它们进行非线性回归。给定足够多的隐藏单元和足够多的训练样本,多层前馈神经网络可以逼近任意函数。

3.定义网络拓扑

  在开始训练之前,用户必须确定网络拓扑,说明输入层的单元数、隐藏层数、每个隐藏层的单元数和输出层的单元数。

  对训练元组中的每个属性的输入测量值进行规范化将有助于加快学习过程。通常,对输入值规范化,使得它们落在0.0 和 1.0之间。离散值属性可以重新编码,使得每个域值有一个输入单元。

  神经网络可以用于分类(预测给定元组的类标号) 和数值预测(预测连续值输出) 。对于分类,一个输出单元可以用来表示两个类(其中值1代表一个类,而值0代表另一个类)。如果多于两个类,则每个类使用一个输出单元。

4.向后传播

  向后传播通过迭代地处理训练元组数据集,把每个元组的网络预测与实际已知的目标值进行比较学习。目标值可以使训练元组的已知类标号(对于分类)或者是连续值(对于预测)。对于每个训练样本,修改权重使得网络预测和实际目标值之间的均方差最小。这种修改“向后”进行,即由输出层,经由每个隐藏层,到第一个隐藏层(因此称作向后传播)。尽管不能保证,一般而言,权重将最终收敛,学习过程停止。

  算法:向后传播。    使用向后传播算法,学习分类或预测的神经网络

  输入:

     D:由训练元组和其相关联的目标值组成的数据集;

     L:学习率;

     network:多层前馈网络。

  输出:训练后的神经网络。

  方法:

    初始化network的所有权重和偏倚。

    while  终止条件不满足 {

      for  D中每个训练元组X{

        for  每个输入层单元j  {

          Oj=Ij;

          for  隐藏或输出层的每个单元j  {

            Ij=Σwij*Oj+θj ;  //关于前一层i,计算单元j 的净输入

            Oj=1/(1+exp(-Ij))  ;  //使用  logistic  函数或称S型 ( sigmoid ) 函数计算单元j的输出,这个函数大有来头,能将R中的数转换为(0,1),其函数图像与中学微生物生长曲线类似

          }

          //一下逻辑为描述向后传播误差

          for  输出层的每个单元 j

            Errj=Oj*(1-Oj)*(Tj-Oj) ;  //计算输出层的误差

          for  由最后一个到第一个隐藏层,对于隐藏层的每个单元j

            Errj=Oj*(1-Oj)*Σ Errk*wjk ;  //计算关于下一个较高层k的误差

          for  network 中的每个权wij {

            ΔWij=(L)*Errj*Oi  ;  //权重增量

            Wij =Wij  +ΔWij ;   //更新权重

          }

          for  network 中的每个偏倚 Θij {

            ΔΘj=(L)*Errj  ;  //偏倚增量

            Θj=Θj+ΔΘj ;   //偏倚更新

          }

        }

      }

    }

    终止条件:训练停止,如果

          前一周期所有的ΔWij都太小,小于某个指定的阈值,或者

          前一周期误分类的元组百分比小于某个阈值,或者

          超过预先指定的周期数。

5.有效性

  计算的有效性依赖于训练网络所用的时间。给定|D|个元组和w个权重,则每个周期需要O(|D|*w)时间。然而,在最坏情况下,周期数可能是输入元组数n的指数。在实践中,网络收敛所需要的实践是非常不确定的。存在一些加快训练速度的技术。例如,可以使用一种称做模拟退火的技术,它能确保收敛到全剧最优。

6.如何分类

  为了对未知元组X分类,把该元组输入到训练过的网络,计算每个单元的净输入和输出。(不需要计算误差或它们的向后传播),如果每个类有一个输出节点,则具有最高输出值的节点决定X的预测类标号,如果只有一个输出节点,则输出值大于或等于0.5可以视为正类,而值小于0.5可以视为负类。

时间: 2024-07-28 14:03:01

向后传播神经网络分类总结的相关文章

反向传播神经网络极简入门

反向传播神经网络极简入门 我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到.直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资料.这份极简入门笔记不需要突触的图片做装饰,也不需要赘述神经网络的发展历史:要推导有推导,要代码有代码,关键是,它们还对得上.对于欠缺的背景知识,利用斯坦福大学的神经网络wiki进行了补全. 单个神经元 神经网络是多个“神经元”(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{W

反向传播神经网络入门

http://www.hankcs.com/ml/back-propagation-neural-network.html 单个神经元 神经网络是多个"神经元"(感知机)的带权级联,神经网络算法可以提供非线性的复杂模型,它有两个参数:权值矩阵{Wl}和偏置向量{bl},不同于感知机的单一向量形式,{Wl}是复数个矩阵,{bl}是复数个向量,其中的元素分别属于单个层,而每个层的组成单元,就是神经元. 神经元 神经网络是由多个"神经元"(感知机)组成的,每个神经元图示如

【MLP】多层感知机网络——BPN反向传播神经网络

BPN(Back Propagation Net) 反向传播神经网络是对非线性可微分函数进行权值训练的多层网络,是前向神经网络的一种. BP网络主要用于: 1)函数逼近与预测分析:用输入矢量和相应的输出矢量训练一个网络,逼近一个函数或预测未知信息: 2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来: 3)分类:把输入矢量以所定义的合适方式进行分类: 4)数据压缩:减少输出矢量维数以便于传输与存储. 比如,一个三层BPN结构如下: 由输入层.隐含层和输出层三层组成.其中每一层的单元与之相邻

Caffe计算net、layer向前向后传播时间

在caffe中计算某个model的整个net以及各个layer的向前向后传播时间,可以使用下面的命令格式: ./build/tools/caffe time --model=examples/mnist/mytest/execise1_train_test.prototxt -iterations 100 -gpu 0 其中model指向待测model的prototxt文件,-iterations后面的100表示迭代100次,-gpu 0 表示使用第一张显卡来计算时间,若使用CPU计算,将sol

同级别中枢重叠后的走势分类---walkspeed

同级别走势的中枢震荡有重叠,即意味当下级别走势类型是不能延续啦.走势级别开始升级.根据走势分解定理,可知走势能划分出至少三段当下级别的走势类型. 有三段同级别完成的走势类型,就必须有三个同级别的中枢.这三个同级别中枢的组合结构,也就是同级别中枢重叠后的走势分类. 由于以有两个同级别中枢的存在,所以主要就是看第三个同级别中枢与第2个中枢的组合. 1 第三个中枢与第二个中枢没有重叠,那么就是组成了趋势结构.这个趋势的强度,决定了更大级别走势是否能延续. 2 第三个中枢与第二个中枢有重叠,那么就看这第

CS231n ConvNets 卷积神经网络与计算机视觉 8 手把手实现神经网络分类

本章将实现一个简单的两层神经网络,主要分两步走: 1. 实现线性分类器 2. 改变成神经网络 1 生成数据 我们先生成一个螺旋性的数据集,Python代码: N = 100 # number of points per class D = 2 # dimensionality K = 3 # number of classes X = np.zeros((N*K,D)) # data matrix (each row = single example)在二维平面内的300个点 y = np.ze

对偶传播神经网络(CPN)

1987年,美国学者Robert Hecht-Nielsen提出了对偶传播神经网络模型 (Counter Propagation Network,CPN),CPN最早是用来实现样本选择匹配系统的.CPN 网能存储二进制或模拟值的模式对,因此这种网络模型也可用于联想存储.模式分类.函数逼近.统计分析和数据压缩等用途. 1.    网络结构与运行原理 网络结构如图所示,各层之间的神经元全互联连接.从拓扑结构看,CPN网与三层BP网络相近,但实际上CPN是由自组织网和Grossberg外星网组合而成.

卷积神经网络分类与回归任务的应用简介

location 对输入图像定位,找到盒子坐标(x,y,w,h):Clssificaion and Location的最后一层是的特征做两件事,一个是分类,一个是定位.         训练时使用已有的模型,也就是最后一层全联接之前所有的参数都用已有模型的,然后在这个基础上进行微调(fine tune),使其向着想要的网络去收敛.               分类时,softmax计算loss,随机梯度下降SGD反向传播更新参数.测试时同时得到分类得分和定位(坐标).              

修改后的神经网络

修改的地方: 1. 函数名.数据格式与sklearn一致 2. 增加了网络性能不变时就结束的判断(否则,存在偶然的机会报NaN错误) # neuralnetwork.py # modified by Robin 2016/04/20 import numpy as np from math import exp, pow from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import sys impor