锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

神经网络

时间:2022-09-19 09:00:00 wx112微调电位器

    1.人工神经网络简介 

1. 神经元模型

  1. 感知机和神经网络

  2. 逆传输算法的误差

  3. 常见的神经网络模型

  4. 深度学习

  5. 6.

本文以神经网络为主,重点总结一些相关的基础知识,然后在此基础上引入深度学习的概念。如有写作不当,请批评和纠正。

  1. 神经元模型

神经元是神经网络中最基本的结构,也可以说是神经网络的基本单元,其设计灵感来自于生物学中神经元的信息传播机制。学过生物学的学生都知道神经元有两种状态:兴奋和抑制。一般来说,大多数神经元处于抑制状态,但一旦神经元受到刺激,其电位超过阈值,神经元将被激活,处于兴奋状态,然后将化学物质(实际上是信息)传播到其他神经元。

下图为生物学神经元结构示意图:

1943年,McCulloch和Pitts用简单的模型表示上图中的神经元结构,形成人工神经元模型,即我们现在经常使用的M-P如下图所示:

从上图M-P从神经元模型可以看出,神经元的输出

其中θ对于我们之前提到的神经元的激活阈值,函数f()也称为激活函数。如上图所示,函数f()可以用阶跃方程表示,大于阈值激活;否则抑制。但这有点太粗糙了,因为阶跃函数不光滑、不连续、不可导向,所以我们更常用的方法是使用它sigmoid函数表示函数函数f(?)。

sigmoid函数的表达式和分布图如下:

  1. 感知机和神经网络

感知机(perceptron)它是由两层神经元组成的结构。输入层用于接收外部输入信号。输出层(也称为传感器功能层)是M-P神经元。下图显示输入层有三个神经元(分别表示为x0、x1、x2)感知机结构:

根据上图不难理解,感知机模型可以用以下公式表示:

y=f(wx b)

其中,w将感知机输入层连接到输出层的权重,b表示输出层的偏置。事实上,感知机是一种判别线性分类模型,可以解决如此简单的线性分类(linearly separable)如下图所示:

然而,由于它只有一层功能神经元,学习能力非常有限。事实证明,单层感知机无法解决最简单的非线性可分问题——不同或问题。

还有一段关于传感器解决异常或问题的历史,值得我们简单地理解:传感器只能做简单的线性分类任务。但当时人们的热情太高,没有人清楚地意识到这一点。因此,当人工智能领域的巨头Minsky这时,情况发生了变化。Minsky1969年出版的一本叫做《Perceptron》这本书用详细的数学证明了传感器的弱点,尤其是传感器对XOR(异或)这样的简单分类任务都无法解决。Minsky认为如果将计算层增加到两层,计算量过大,没有有效的学习算法。因此,他认为研究更深层次的网络毫无价值。由于Minsky书中的巨大影响力和悲观态度使许多学者和实验室放弃了对神经网络的研究。对神经网络的研究络的研究。又称这一时期AI winter”。近10年后,对两层神经网络的研究带来了神经网络的复苏。

我们知道,我们日常生活中的许多问题,甚至大多数问题都不是线性问题,那么我们应该如何解决非线性问题呢?这就是我们在这一部分想要引入的多层的概念。由于单层传感器不能解决非线性问题,我们使用多层传感器,下图是两层传感器解决异常或问题的示意图:

建立上述网络后,通过培训获得的最终分类如下:

由此可见,多层感知机可以很好地解决非线性可分问题,我们通常称多层感知机等多层结构为神经网络。但是,正如Minsky我们以前担心的是,虽然多层感知机理论上可以解决非线性问题,但问题在现实生活中的复杂性远不止异或如此简单,因此我们经常需要建立多层网络,以及对多层神经网络采用什么样的学习算法是一个巨大的挑战,如下图所示,具有四层隐含层的网络结构中至少有33个参数(无论偏差如何)bias参数),如何确定?

  1. 逆传输算法的误差

所谓神经网络训练或学习的主要目的是通过学习算法获得解决指定问题所需的参数,包括各层神经元之间的连接权重和偏置。作为算法的设计师(我们),我们通常根据实际问题构建网络结构,参数的确定需要通过训练样本和学习算法迭代找到最佳参数组。

说到神经网络的学习算法,不得不提到最杰出、最成功的代表—误差逆传播(error BackPropagation,简称BP)算法。BP学习算法通常用在最为广泛使用的多层前馈神经网络中。

  1. 常见的神经网络模型

4.1

Boltzmann机和受限Boltzmann机

神经网络中的一种模型是定义网络状态的能量。当能量最小化时,网络达到理想状态,网络训练是最小化能量函数。Boltzmann(玻尔兹曼)机是基于能量的模型,其神经元分为两层:显层和隐层。显层用于表示数据的输入和输出,隐层被理解为数据的内在表达。Boltzmann机器的神经元都是布尔型的,即只能取0、1值。标准的Boltzmann机器完全连接,即各层神经元相互连接,计算复杂性高,难以解决实际问题。因此,我们经常使用一种特殊的方法Boltzmann机器-受限玻尔兹曼(Restricted Boltzmann Mechine,简称RBM),层内无连接,层间有连接,可视为二部图。下图为Boltzmann机和RBM结构示意图:

RBM对比散度常用(Constrastive Divergence,简称CD)训练。

4.2

RBF网络

RBF(Radial Basis Function)径向基函数网络是一种单隐层前馈神经网络。它使用径向基函数作为隐藏神经元的激活函数,而输出层是隐藏神经元输出的线性组合。下图是一个RBF神经网络示意图:

训练RBF网络通常采用两个步骤:

1:确定神经元中心,常用的方式包括随机采样,聚类等;

2.常用算法是确定神经网络参数BP算法。

4.3

ART网络

ART(Adaptive Resonance Theory)自适应谐振理论网络是竞争性学习的重要代表,由比较层、识别层、识别层阈值和重置模块组成。ART在竞争性学习中更好地缓解了可塑性-稳定性困境(stability-plasticity dilemma),可塑性是指神经网络有能力学习新知识,而稳定性是指神经网络在学习新知识时保持对旧知识的记忆。这就使得ART网络有一个非常重要的优势:增量学习或在线学习。

4.4

SOM网络

SOM(Self-Organizing Map,自组织映射)网络是一种具有竞争力的学习型无监督神经网络。它可以将高维输入数据映射到低维空间(通常是二维)。同事们保持高维空间中输入数据的拓扑结构,并将高维空间中类似的样本点映射到网络输出层中的附近神经元。SOM网络结构示意图:

4.5

结构适应网络

正如我们前面提到的,一般的神经网络首先指定了网络结构,训练的目的是使用训练样本来确定合适的连接权、阈值和其他参数。不同的是,结构自适应网络也将网络结构作为学习的目标之一,并希望在训练过程中找到最符合数据特征的网络结构。

4.6

递归神经网络以及Elman网络

与前馈神经网络不同,递归神经网络(Recurrent Neural Networks,简称RNN)允许网络中出现环形结构,使一些神经元的输出反馈作为输入信号回来。这种结构和信息反馈过程使网络处于tt时刻的输出状态不仅与tt时间输入也与时间输入有关t?与时间相关的动态变化可以动态变化有关。

Elman该网络是最常用的递归神经网络之一,其结构如下图所示:

RNN一般训练算法采用推广方式BP算法。值得一提的是,RNN在(t 1)时刻网络的结果O(t 1)是当时输入和所有历史共同作用的结果,从而达到时间序列建模的目的。因此,从某种意义上说,RNN在时间深度上被视为深度学习并非错误。

RNN在(t 1)时刻网络的结果O(t 1)是输入和所有历史共同作用的结果,所以不是很准确,因为梯度发散也会发生在时间轴上,也就是说,对于t时刻,它产生的梯度在时间轴上传播几层历史后消失,不能影响太遥远的过去。因此,所有历史只是理想情况。实际上,这种影响只能维持几次戳。换句话说,错误的信号往往不能像早期的时间一样回到足够远的过去来影响网络,这使得它很难学习远程的影响。

为了解决上述时间轴上的梯度发散,机器学习领域发展了长短记忆单元(Long-Short Term Memory,简称LSTM),通过门的开关实现时间记忆功能,防止梯度发散。除了学习历史信息,RNN和LSTM也可设计成双向结构,即双向结构RNN、双向LSTM,利用历史和未来的信息。

5、 深度学习

深度学习是指深度神经网络模型,一般是指三层或三层以上的神经网络结构。

理论上,模型参数越多,复杂度越高,容量越大,这意味着它可以完成更复杂的学习任务。就像前面多层感知机带给我们的启示一样,神经网络的层数直接决定了它对现实的刻画能力。但一般来说,复杂模型的训练效率低,容易陷入过拟合,因此很难受到人们的青睐。具体来说,随着神经网络层数的加深,优化函数越来越容易陷入局部最优解(即过拟合,对训练样本有很好的拟合效果,但是在测试集上效果很差)。同时,不可忽略的一个问题是随着网络层数增加,“梯度消失”(或者说是梯度发散diverge)现象更加严重。我们经常使用sigmoid函数作为隐含层的功能神经元,对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本接收不到有效的训练信号。

为了解决深层神经网络的训练问题,一种有效的手段是采取无监督逐层训练(unsupervised layer-wise training),其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这被称之为“预训练”(pre-training);在预训练完成后,再对整个网络进行“微调”(fine-tunning)训练。比如Hinton在深度信念网络(Deep Belief Networks,简称DBN)中,每层都是一个RBM,即整个网络可以被视为是若干个RBM堆叠而成。在使用无监督训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;然后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;… 各层预训练完成后,再利用BP算法对整个网络进行训练。

事实上,“预训练+微调”的训练方式可被视为是将大量参数分组,对每组先找到局部看起来较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。

另一种节省训练开销的做法是进行“权共享”(weight sharing),即让一组神经元使用相同的连接权,这个策略在卷积神经网络(Convolutional Neural Networks,简称CNN)中发挥了重要作用。下图为一个CNN网络示意图:

CNN可以用BP算法进行训练,但是在训练中,无论是卷积层还是采样层,其每组神经元(即上图中的每一个“平面”)都是用相同的连接权,从而大幅减少了需要训练的参数数目。

  1. 参考内容

  2. 周志华《机器学习》

  3. 知乎问答:http://www.zhihu.com/question/34681168
    什么事人工神经网络?

    人工神经网络发展的历史
    
    来自(生物学的启发)生命科学的启发
    
    人工神经(的功能)网络能做什么?
    

2、人工神经元模型与感知机

神经元模型的组成

model输入

权值输入

输出 

传递函数(基函数和激活函数的区别)  

使用感知机进行分类

感知机学习规则

3、神经网络与neuroph框架

使用java实现神经网络-neuroph(weka Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下开源的机器学习以及数据挖掘软件。它和它的源代码可在其官方网站下载。有趣的是,该软件的缩写WEKA也是New Zealand独有的一种鸟名,而Weka的主要开发者同时恰好来自新西兰的the University of Waikato

Weka提供的功能有数据处理,特征选择、分类、回归、聚类、关联规则、可视化等。本文将对Weka的使用做一个简单的介绍,并通过简单的示例,使大家了解使用weka的流程。本文将仅对图形界面的操作做介绍,不涉及命令行和代码层面的东西。

使用java实现感知机

使用java实现感知机学习算法

4、AdaL网络的java实现

Adaline网络的java实现

使用java实现0-9图像的识别

5、

课程大纲:
第1课 人工神经网络简介
什么是人工神经网络 人工神经网络发展历史 来自生物学的启发 人工神经网络能做什么
第2课 人工神经元模型与感知机 神经元模型的组成 输入 输入权值 输出 传输函数
使用感知机进行分类 感知机学习规则
第3课 Java、神经网络与neuroph框架 Java介绍
使用Java实现神经网络——neuroph 使用Java实现感知机 使用Java实现感知机学习算法

@ DataGuru专业数据分析社区 网址:edu.dataguru.cn
2
第4课 AdaLine网络 LMS算法
AdaLine网络的Java实现 使用Java识别0-9图像
第5课 多层感知机
回顾单层感知机 单层感知机的局限性 多层感知机案例与实现
第6课 BP神经网络的实现
多层感知机学习算法 BP神经网络的Java实现 再看异或问题 一些细节优化
第7课 BP神经网络的案例
奇偶性判别(分类问题) 函数逼近(预测)
使用Java实现简单的手写体识别
第8课 联想网络
Hopfield网络 结构和原理 Hebb规则 存储容量
使用Java实现Hopfiled网络 简单的污染字体识别(Java案例) 自联想的案例(Java实现) BAM网络 结构和原理
使用Java实现BAM网络
电话号码和人名的双向记忆案例(Java实现
来源:http://www.cnblogs.com/maybe2030/

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章