多层感知器(MLP

Rosenblatt感知器和LMS算法,都是单层的并且是单个神经元构造的神经网络,他们的局限性是只能解决线性可分问题,例如Rosenblatt感知器一直没办法处理简单异或问题。然而日常生活中大多数问题不是线性可分的,都是多维度且无法直接进行线性分类。为了增加神经网络对这一类问题的泛化能力,出现了多层感知器(多层神经网络)的概念。

多层感知器基本特征:

网络中每个神经元模型包含一个可微的非线性激活函数。

网络中包括一个或多个隐藏在输入和输出神经节点之间的层。

网络展示出高度的连接性,其强度是由网络的突触权值决定的。

训练多层感知器的一个流行方法是反向传播算法,训练分为如下两个阶段:

  1. 前向阶段,网络的突触权值是固定的,输入信号在网络中一层一层传播,直到到达输出端。因此,在这一阶段,输入信号的影响限制在网络中激活隐藏神经元和输出神经元上。
  2. 反向阶段,通过比较网络的输出和期望输出产生一个误差信号。得到的误差信号再次通过网络一层一层传播,但是这一次传播是在反方向上进行的。在第二阶段,对于网络的突触权值进行不断的修正。对于输出层权值的修正计算是直接的,但是对于隐藏层来说则更有挑战性。

具有两个隐藏层的多层感知器结构图

  1. 函数信号。函数信号是从网络输入端而来的一个输入信号(刺激),通过网络(一个神经元接一个神经元)向前传播,到达网络输出端即成为一个输出信号。
  2. 误差信号。一个误差信号产生于网络的一个输出神经元,并通过网络(一层接一层)反向传播。我们称之为“误差信号”是因为网络的每一个神经元对他的计算都以这种或那种形式涉及误差依赖函数。

输出神经元构成网络的输出层。余下的神经元构成网络的隐藏层。因此隐藏层单元并不是网络输出或输入的一部分-因此他们被称为“隐藏”的。第一隐藏层的信号是从由传感单元(源节点)构成的输入馈给的;而第一隐藏层的输出结果又应用于下一个隐藏层;网络的其余部分依此类推。

多层感知器每一个隐藏层或输出层神经元的作用是进行两种计算:

  1. 计算一个神经元的输出处出现的函数信号,它表现为关于输入信号以及与该神经元相关的突触权值的一个连续非线性函数。
  2. 计算梯度向量(即误差曲面对链接于一个神经元输入的权值的梯度)的一个估计,他需要反向通过网络。

隐藏神经元的功能

隐藏神经元扮演着特征检测算子(feature detector)的角色;他们在多层感知器的运转中起着决定性作用。随着学习过程通过多层感知器不断进行,隐藏神经元开始逐步“发现”刻画训练数据的突出特征。它们是通过将输入数据非线性变换到新的称为特征空间的空间而实现的。例如,在模式分类问题中,感兴趣的类在这个新的空间中可能比原始输入数据空间中更容易分隔开。甚至,正事通过监督学习形成的这一特种空间将多层感知器和Rosenblatt感知器区分开来。

多层感知器监督学习的两种不同方式 批量学习和在线学习

批量学习(离线学习)

在监督学习的批量方法中,多数感知器的突触权值的调整在训练样本集合的所有样例都出现后进行,这构成了训练的一个回合(epoch)。换句话说,批量学习的代价函数是由平均误差能量定义的。多层改制器的突触权值的调整是以回合-回合为基础的。批量学习的有点是 对梯度向量的精确估计;学习过程的并行性。然而从实际观点看,批量学习有着存储需求。从统计的角度看,批量学习可以看成是某种形式的统计推断。因此它很适合于解非线性回归问题。

在线学习

在监督学习的在线方法下,对于多层感知器突触权值的调整是以样例-样例为基础的。用来最小化的代价函数是全体瞬时误差能量。但是这样的过程也违反了在线学习的并行性。在线学习方法被称为随机方法。这一随机性具有所希望的学习过程不容易陷入局部极小值点的效果,这是在线学习好于批量学习的明确意义所在。在线学习的另一个有点在于它比批量学习需要的存储量要少得多。同时它能够追踪训练数据的小的改变,尤其是产生数据的环境是不稳定的情况下。目前在线学习依然是主流方法。

神经网络与机器学习 笔记—多层感知器(MLP)的更多相关文章

  1. 神经网络与机器学习 笔记—Rosenblatt感知器收敛算法C++实现

    Rosenblatt感知器收敛算法C++实现 算法概述 自己用C++实现了下,测试的例子和模式用的都是双月分类模型,关于双月分类相关看之前的那个笔记: https://blog.csdn.net/u0 ...

  2. 4.2tensorflow多层感知器MLP识别手写数字最易懂实例代码

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  多层感知器MLP(m ...

  3. "多层感知器"--MLP神经网络算法

    提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中 ...

  4. TFboy养成记 多层感知器 MLP

    内容总结与莫烦的视频. 这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层.代码的目的是你和一个二次曲线.同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声 ...

  5. keras—多层感知器MLP—MNIST手写数字识别

    一.手写数字识别 现在就来说说如何使用神经网络实现手写数字识别. 在这里我使用mind manager工具绘制了要实现手写数字识别需要的模块以及模块的功能:  其中隐含层节点数量(即神经细胞数量)计算 ...

  6. keras—多层感知器MLP—IMDb情感分析

    import urllib.request import os import tarfile from keras.datasets import imdb from keras.preprocess ...

  7. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  8. RBF神经网络学习算法及与多层感知器的比较

    对于RBF神经网络的原理已经在我的博文<机器学习之径向基神经网络(RBF NN)>中介绍过,这里不再重复.今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比. ...

  9. MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron)

    先看代码(sklearn的示例代码): from sklearn.neural_network import MLPClassifier X = [[0., 0.], [1., 1.]] y = [0 ...

随机推荐

  1. Tomcat8弱口令+后台getshell

    漏洞原因 用户权限在conf/tomcat-users.xml文件中配置: <?xml version="1.0" encoding="UTF-8"?&g ...

  2. CVE-2019-2618 任意文件上传

    漏洞描述:CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口,该接口支持向服务器上传任意文件.攻击者突破了OAM(Oracle Access Ma ...

  3. 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

    本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...

  4. C# 基础 - 日志捕获二使用 log4net

    引入 log4net.dll 项目->添加->新建项->应用程序配置文件,命名为 log4net.config,并把属性的复制到输出目录设置为 如果较新则复制,后续客户端需要读取在 ...

  5. 写个锤子JS!它应该是你最后的选择

    本文翻译自:https://dev.to/olpeh/javascript-should-be-your-last-resort-5dje 在进行现代化Web前端开发时,使用着自己最爱的框架,有时候可 ...

  6. python stats画正态分布、指数分布、对数正态分布的QQ图

    stats.probplot(grade, dist=stats.norm, plot=plt) #正态分布 # stats.probplot(grade, dist=stats.expon, plo ...

  7. jQuery学习笔记(1) 初识jQuery

    目录 目录 引用 注意 HelloWorldHelloWorld! jQueryjQuery对象和DOMDOM对象的相互转换 冲突的解决 引用 本地文件引用: <script src=" ...

  8. Python中类的特殊属性和魔术方法

    1.属性 属性 含义 __name__ 类.函数.方法等的名字   __dir__ __module__ 类定义所在的模块名 __class__ 对象或类所属的类   只是返回基类 __bases__ ...

  9. 4、Spring教程之Spring配置

    别名 alias 设置别名 , 为bean设置别名 , 可以设置多个别名 <!--设置别名:在获取Bean的时候可以使用别名获取--> <alias name="userT ...

  10. Typora的MarkDown语法快捷键

    Typora的MarkDown语法快捷键 1.标题 项目 快捷键一 快捷键二 一级标题 #+空格+文本+回车 Ctrl+1 二级标题 ##+空格+文本+回车 ctrl+2 三级-- ###-- ctr ...