zoukankan      html  css  js  c++  java
  • 神经网络总结(初稿)

    神经网络是由大量处理单元(神经元)相互连接而成的网络,ANN(Artificial Neural Network)是生物神经系统的一种抽象、简化和模拟。神经网络的信息处理是通过神经元的相互作用来实现的,知识与信息的存储表现在网络元件互连的分布式结构与联系,神经网络的学习与识别就是神经元连接权系数的动态演化过程。实践中常用的基本神经网络模型有:感知器(perceptron)神经网络、线性神经(AdalinePerceptron)网络、BP神经网络、径向基神经网络、自组织神经网络、Hopfield反馈神经网络等。

    关键词:整合()-激发()-映射()

    感知器(perceptron)神经网络

    感知器中的神经元称之为PRC神经元,有如下中的结构。一般在处理中都会将阈值b转换为输入和权重的x0形式,得到如下右的等效结构。

    那么感知器的工作算法也就是整合过程比较简单,只需要利用向量乘积表示即可:,经过激发(特殊的一种映射,只是利用sign符号函数进行的映射)就可以得到输出了。而感知器的组织算法(学习规则)主要是进行权重的调节,有如下的表示:

      

    是调整的步长,一般情况下,比如机器学习中最简单的学习算法PLA中,用到的就是。其几何意义十分明显,犯错误了就进行调整,没犯错误就不调整。对于线性可分的问题,PLA总能找到分类边界。但并不一定是最好。想一下SVM中的large marge。perceptionpoints.m是关于利用PLA进行学习二维平面点的二分类演示程序。感知器是最简单和最基础的神经网络。同时也阅读了BP神经网络中关于通过隐含层增加感知器的分类能力的论述。

        单层感知器不能解决异或运算(实际上不是线性可分的问题),增加隐藏层之后便能解决。多层感知器能够突破线性可分局限性。

    Kolmogorov定理:  给定任意连续映射F:[0,1] (n) →Rm可以精确地由一个三层前馈神经网络实现,第一层有n个神经元,第二层有2m+1个神经元,第三层有m个神经元。

    自适应线性神经(Adaline Perceptron)网络

    可以直接类比自适应滤波器(预估器,平滑器。。。)。神经网络的工作算法是一以贯之的,都是那样从前往后推算就行了。只需要关注的是网络的结构以及网络的两个映射:整合映射和激发映射。一般整合映射没差,对于激发映射往往可能不同。ADALINE顾名思义,激发映射肯定是线性的,如下图中的F(sigmoid)换成线性的u(t)-b即可。

    下面要关注的就是组织算法,这里只关心LMS学习算法,最小均方误差为代价,计算均方差的梯度,求出梯度下降的方向,然后进行迭代学习。

    这个公式应当最熟悉不过了。其实对比感知器的学习算法调整起来都是比较类似的。具体的不再深入,可以参看在现代数字信号处理课程报告中的论述。

    BP神经网络

    BP神经网络的神经元结构如下:

    整合映射没差,激发映射函数一般采用的有:1)sign符号函数,2)sigmoid函数,3)线性映射(Adaline)。(recall: logical regression,output in[0,1])

    这里只列出sigmoid函数,b也可以融入u(t)中进行等效。

    仅仅是这样似乎与上面的多层感知器一样,并没有什么特别的。那么下面就是特别的:误差回传(back-Propagation,BP)机制,前馈型神经网络最重要的学习机制。目标:误差平方性能最小,利用梯度下降进行推导,通过链式求导法则,将误差回传给网络中间层,输出节点的误差被分配给网络中间层各个节点。而中间层最终将误差回传至输入层。实际上单层感知器和Adaline正是如此实现了网络的自学习,从而能自组织地调节其节点链接强度值。

    BP神经网络的局部误差,上式便体现出了误差回传的思想。而实际中求取均方误差往往是不现实的,需要代之以某种估计函数,因此对应着不同的性能函数,比如Widrow性能函数(用单个学习模式激励下神经网络响应误差的平方作为对均方误差的估计),Rumelhart性能函数(当知识集给定后,一个可选的或者更为合理的均方误差函数估计应该是所有学习模式激励下输出误差平方之和的平均值)。下图就是基于Rumelhart性能函数的链接权重w更新的公式,整个流程还是十分清晰的。至于编程实现,可以参考source code andshow ncBPN中的写法,具体的结构可能比较复杂,但是只要封装好了,进行移植的时候也将非常方便。开发语言是C,因此,可以基于DSP进行实现移植,看看训练效果如何。

    BP神经网络备受关注的重要原因在于它具有表达复杂非线性映射的能力,但这种能力并不是无限的。BP网络的表达能力是BP网络实现特定输入输出映射关系的能力。

     

     

    BP神经网络的泛化学习,是一种归纳学习的能力,从sample到out of sample.  跟机器学习中定义差不多。机器学习是从VC dimension入手解释为何machinecan learn ?这里通过论述均方误差的估计并不是真的均方误差,而是在已有的知识集上进行的估计,所以,当对整个映射的定义域中能否成功的表达呢?这就是所谓的Generalization。依然记得对于以前用到的自适应LMS正弦点预测训练出来的W,随着预测的长度越长,误差在逐渐积累,最终可能发散,或者逐渐缩小。

    BP算法的改进:(1) 启发式算法:动量算法和自适应算法,(2) 数值优化算法:共轭梯度法和牛顿法。

    径向基神经网络

    RBF径向基神经网络的结构如下,其实结构上没有什么特别的,只是在激发映射上采用了径向基函数(一般采用高斯函数)。径向基函数(RBF联想神经元的激发函数)有:GaussianFunction,MultiquadraticFunction,CubicFunction和LinearFunction。实际上神经网络可分为感觉神经元(整合映射,不融入b)、联想神经元(激发映射)和反应神经元(阈值b的激发)。

    具体的学习算法可以参看网络文档径向基函数(RBF)神经网络 - Orisun - 博客园.pdf。RBF学习收敛的条件是:训练数据投影到隐空间后是线性独立的。其最大的特点是:< RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。简单说明一下为什么RBF网络学习收敛得比较快。当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致全局逼近网络的学习速度很慢。BP网络就是一个典型的例子。如果对于输入空间的某个局部区域只有少数几个连接权值影响输出,则该网络称为局部逼近网络。常见的局部逼近网络有RBF网络、小脑模型(CMAC)网络、B样条网络等。>

    自组织神经网络

    有些难度,暂时不做总结。

    Hopfield反馈神经网络

    典型的结构是反馈型,输出反馈回来做输入。不同于组织算法中的反馈调节,这里指的是工作结构图中包括了输出的反馈。(其余暂不做总结)。

    神经网络的理论研究将主要体现在利用神经科学基础研究成功,用数理方法探索智能水平更高的网络模型,深入研究网络的算法和性能,开发新的网络数理理论;应用研究主要体现在网络的软硬件实现及各个领域特定问题的研究等。

  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/huty/p/8519358.html
Copyright © 2011-2022 走看看