几种常见的神经网络了解

2023-11-10

神经网络技术起源-感知机

神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层,在输出层得到分类结果。早期感知机的推动者是Rosenblatt,当时感知器传输函数是用线拉动变阻器改变电阻的方法机械实现的。但是,Rosenblatt的单层感知机有个严重的问题,即它对稍微复杂一些的函数都无能为力,例如最为典型的异或操作。

多层感知机

随着数学的发展,到上世纪八十年代Rumelhart、Williams、Hinton、LeCun等人发明了多层感知机(multilayer perceptron),多层感知机有多个隐含层,可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。这就是我们现在所说的神经网络NN。

多层感知机解决了之前无法模拟异或逻辑的缺陷,同时更多的层数也让网络更能够刻画现实世界中的复杂情形。神经网络的层数直接决定了它对现实的刻画能力-利用每层更少的神经元拟合更加复杂的函数。

随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个陷阱越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,梯度消失现象更加严重。例如使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25.层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。

深度神经网络DNN

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层,神经网络真正意义上有了深度。深度没有固定定义,在语音识别中4层神经网络就被认为是较深的,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了sigmoid,形成了如今DNN的基本形式。单从结构上来说全连接的DNN和多层感知机是没有任何区别的。

全连接DNN的结构里下层神经元和所有的上层神经元都能够形成连接,带来的潜在问题是参数数量的膨胀。

卷积神经网络CNN

对于CNN来说,并不是所有上下层神经元都能直接相连,而是通过卷积作为中介,同一个卷积核在所有图像内是共享的,图像通过卷积操作后仍然保留原先的位置关系。

循环神经网络RNN

全连接的DNN还存在另一个问题,无法对时间序列上的变化进行建模。然而,样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要。为了适应这种需求,就出现了循环神经网络。
在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被称为前向神经网络(Feed-forward Neural Network)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身。

长短时间记忆单元LSTM

RNN可以看成一个在时间上传递的神经网络,它的深度是时间的长度。梯度消失现象又在时间轴上出现了。对于t时刻来说,它产生的梯度在时间轴上向历史传播几层之后就消失了,根本就无法影响太遥远的过去。因此,这种影响也就只能维持若干个时间戳。

为了解决时间上的梯度消失,机器学习领域发展出了长短时记忆单元LSTM,通过门的开关实现时间上记忆功能,并防止梯度消失。

其他结构

RNN既然能够继承历史信息,是不是也能吸收点未来的信息呢?因为在序列信号分析中,如果能预知未来,对识别一定也是有所帮助的。因此就有了双向RNN、双向LSTM,同时利用历史和未来的信息。
事实上,不论是哪种网络,他们在实际应用中常常混合着使用,比如CNN和RNN在上层输出之前往往会接上全连接层,很难说某个网络到底属于哪个类别。

参考资料

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

几种常见的神经网络了解 的相关文章

随机推荐

  • Protobuf之proto文件编写规则

    一 简单介绍 protobuf文件 就是定义你要的消息 类似java中的类 和消息中的各个字段及其数据类型 类似java类中的成员变量和他的数据类型 二 Protobuf消息定义 1 消息由至少一个字段组合而成 类似于C语言中的结构 每个字
  • 【Docker】docker 执行 apt-get E: Could not open lock file /var/lib/dpkg/lock - open

    1 背景 mac下安装了docker 然后用docker 安装了grafana软件 然后进入grafana base lcc lcc prometheus docker exec it 4b5f517f4340 bash grafana 4
  • Python运维开发(CMDB管理系统)——常用函数

    内置函数 len 返回容器中item的数量 sum 计算可迭代对象的和 字符串不可以和数字相加 str 把其他类型转换成字符串 int 把其他类型转换成int max min 求列表中的最大值或者最小值 range 返回一个可迭代对象 ra
  • Python 删除列表中的'\n'和空格

    要爬取的span标签下的价格730 用的是xpath获取内容 但爬取的结果为 把 i 标签以及后面的div也爬取下来了 导致这部分为 n 和空格 很显然 这不是我要的结果 想过先用xpath 再用正则表达式匹配数字 但一直提示类型不一致 因
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V6.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加期末考试 考试科目最多不超过6门 具体门数由键盘输入 学生成绩管理系统是一个非常实用的程序 如果
  • 深入探索C++中模板参数的自动推导

    深入探索C 中模板参数的自动推导 利用模板参数推导时需要注意以下几点 编译器只根据函数调用时给出的实参列表来推导模板参数值 与函数参数类型无关的模板参数其值无法推导 与函数返回值相关的模板参数其值也无法推导 所有可推导模板参数必须是连续位于
  • 函数的调用过程及其运行时堆栈解析

    为了较为深入的了解一下函数的调用过程 所以我在学习的过程中用一段简单的代码对其进行了研究 代码和调用堆栈如下 下图为上述函数的反汇编及调用过程
  • pyecharts 安装报错 ModuleNotFoundError: No module named 'pyecharts_snapshot'

    安装方法 pip install pyecharts 正常导入 import pyecharts 报错信息 ERROR lml utils failed to import pyecharts snapshot Traceback most
  • PostgreSQL常用命令使用

    1 连接数据库 psql U postgres psql U username d databse name h host W U 指定用户 d 指定数据库 h 要链接的主机 W 提示输入密码 2 切换数据库 c dbname 3 列举数据
  • 《单片机原理及应用》——概述

    系列文章目录 文章目录 系列文章目录 前言 一 计算机的位数是什么 二 51单片机 前言 学习视频链接是 https www bilibili com video BV1sE411L7j5 spm id from 333 337 searc
  • C# 引用类型作为函数参数时

    C 引用类型作为函数参数时 在探讨本文的主题之前 先来介绍下C 中的值类型和引用类型 众所周知C 中有值类型和引用类型 值类型有基础数据类型 诸如int double bool等 结构体 枚举 引用类型有接口 类 委托 值类型全部在操作系统
  • sqli-labs--Less7

    目录 一 Less 7 1 按照之前文中的思路 输入 id 1 发现提示 2 提示我们使用outfile函数 接下来需要做的就是研究outfile 的用法 以及寻找注入点 3 执行写入的文件 发现执行成功 一 Less 7 1 按照之前文中
  • 3. Python3 运算符

    Hi 大家好 我是茶桁 前两节我们学习了基本的Python特性和语法 并且认识了一些基本的Python脚本 今天 我们来学习一下Python的运算符 而我们选择的版本为Python3 什么是运算符 为了能让我们的学习顺利进行下去 首先我们需
  • 【编程之路】常见的排序算法(一)

    常见的排序算法 一 本文将介绍五种基础的排序算法 分别是 冒泡 选择 插入 快速 归并 1 冒泡排序 冒泡排序应该是入门级的排序算法了 class solution def sort arr self arr n len arr for i
  • 聊聊最近几年的路径追踪技术的进展(一)

    路径追踪技术 Path tracing PT 已经是当下工业中离线渲染使用的主流技术 不管是商业渲染器如皮克斯的RenderMan Solid Angle的Arnold等 还是迪士尼的in house渲染器Hyperion以及Weta Di
  • 与finally单独使用的是try

    try一般和catch搭配使用 捕获时可以没有catch块 但是此时必须有finally块 换言之try可以和catch finally两个中的一个搭配使用 但是catch和finally不能单独搭配使用
  • 如何正视自己的劣势?面试!

    面试真的是最直接面对自己劣势的方式 平时身边人看不清或者不愿意指出你的劣势 自己如果又不肯正视 那就会逐渐的积累成大问题 印象最深刻的是某小公司的技术终面 做的跟我完全同领域 面试官与我对切模型然后我败下阵来 临走的时候他说 我们公司还是想
  • 域名备案后修改服务器,域名备案后修改服务器

    域名备案后修改服务器 内容精选 换一换 PHPWind 简称 PW 是一个基于PHP和MySQL的开源社区程序 是国内较受欢迎的论坛之一 轻架构 高效易开发 使用户可快速搭建并轻松管理 本文档指导用户使用华为云市场镜像 PHPWind 论坛
  • 推荐系统(一)

    协同过滤 Collaborative Filtering A基于邻域的算法 B隐语义模型 C基于图的随机游走算法 A 基于邻域的算法 一 基于用户的协同过滤算法 UserCF 给用户推荐与其兴趣相似的其他用户喜欢的物品 1 首先找到与目标用
  • 几种常见的神经网络了解

    神经网络技术起源 感知机 神经网络技术起源于上世纪五 六十年代 当时叫感知机 perceptron 拥有输入层 输出层和一个隐含层 输入的特征向量通过隐含层变换达到输出层 在输出层得到分类结果 早期感知机的推动者是Rosenblatt 当时