多层感知器(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. FreeBSD ibus输入法框架配置

    FreeBSD ibus输入法框架配置 ibus输入法框架配置.xinitrc中增加XIM=ibus; export XIMGTK_IM_MODULE=ibus; export GTK_IM_MODU ...

  2. Spring Boot 启动过程

    一切从SpringApplication.run()开始,最终返回一个ConfigurableApplicationContext 构造了一个SpringApplication对象,然后调用它的run ...

  3. 一款适用于windows10的反间谍工具

    Free antispy tool for Windows 10 前言 看标题的话,可能觉得"我要这款工具能干啥?",我刚开始也有这种疑惑,但后来我对于这款软件仔细想了想,这款还是 ...

  4. LAB1 启动操作系统

    从机器上电到运行OS发生了什么? 在电脑主板上有一个Flash块,存放了BIOS的可执行代码.它是ROM,断电不会丢掉数据.在机器上电的时候,CPU要求内存控制器从0地址读取数据(程序第一条指令)的时 ...

  5. python网络编程--TCP客户端的开发

    #导入socket模块 2 import socket 3 #参数说明 4 """ 5 socket类的介绍 6 创建客户端socket对象 7 socket.socke ...

  6. python3 elf文件解析

    原地址:https://github.com/guanchao/elfParser 作者是用python2写的,现在给出我修改后的python3版本.(测试发现有bug,以后自己写个,0.0) 1 # ...

  7. 使用 Velero 跨云平台迁移集群资源到 TKE

    概述 Velero 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份.还原和迁移集群资源,关于如 ...

  8. 全网最详细的Linux命令系列-ls命令

    Linux开始必须要会的命令当属ls,在日常工作中用到ls命令时的频率是很多的,作为一个初学者,可能我只会或者顶多ls -l两种用法.但是ls其实是一个非常实用的指令,ls命令就是list的缩写,ls ...

  9. 死磕Spring之AOP篇 - Spring AOP常见面试题

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  10. UnitThreeSummary

    目录 一.JML的梳理与总结 二.SMT Solver的部署与验证 三.JMLUnitNG的部署与测试 四.作业的设计与总结 第一次作业 第二次作业 第三次作业 五.BUG 六.总结与反思 一.JML ...