RNN And CNN通识

CNN And RNN

  • RNN And CNN通识
    • 一、卷积神经网络(Convolutional Neural Networks,CNN)
      • 1. 诞生背景
      • 2. 核心思想和原理
        • (1)基本结构:
        • (2)核心公式:
        • (3)关键特性:
        • (4)局限性:
      • 3. 发展历史
        • (1)LeNet的提出(1989年)
        • (2)AlexNet的突破(2012年)
        • (3)VGG和GoogLeNet(2014-2015年)
        • (4)ResNet的提出(2015年)
      • 4. 最佳实践
    • 二、循环神经网络(Recurrent Neural Network, RNN)
      • 1. 诞生背景
      • 2. 核心思想和原理
        • (1) 基本结构:
        • (2)核心公式:
        • (3)关键特性:
        • (4)局限性:
      • 3. 发展历史
        • (1)经典RNN的提出(1986年)
        • (2)LSTM的诞生(1997年)
        • (3)GRU的提出(2014年)
        • (4)基于注意力机制的改进(2014-2017年)
        • (5)现代发展(2020年至今)
      • 4. 最佳实践
    • 三、RNN与CNN对比
      • 1. 应用场景
      • 2. 核心思想
      • 3. 结构与原理对比
      • 4. 优缺点对比
      • 5. 适用场景与选择建议
      • 6. 总结

RNN And CNN通识

近期正在阅读《Attention Is All You Need》这篇Transformer的原始论文,阅读中碰到了一些对我来说,是新名词、新技术、新模型的知识,因此进行一个通识的学习和总结,记录在此。


一、卷积神经网络(Convolutional Neural Networks,CNN)

1. 诞生背景

卷积神经网络(Convolutional Neural Network, CNN)最早的基础可以追溯到20世纪80年代,由Yann LeCun等人提出,最初用于手写数字识别。与传统的前馈神经网络相比,CNN在处理图像数据方面表现出了显著优势。传统神经网络需要连接每一对输入和输出,这在处理高维数据(如图像)时计算成本较高且效率低。CNN通过局部连接共享权重等方式,有效地减少了模型参数,并使得神经网络能够捕捉到输入数据的空间结构。

  • 诞生时间:CNN的概念最早由LeCun于1989年提出,并在1998年发布了经典的LeNet-5模型。
  • 主要解决问题:CNN主要解决了图像数据处理中的参数过多和计算效率低的问题,同时通过局部连接和权重共享使得神经网络能够有效地捕捉图像的局部特征。

2. 核心思想和原理

卷积神经网络的核心思想是通过卷积层提取局部特征,并通过池化层降低特征维度,逐步提取更高级的特征,从而进行分类或回归任务。

(1)基本结构:

CNN的基本结构通常包括:

  1. 卷积层(Convolutional Layer):用于提取局部特征,通常使用多个滤波器(卷积核)在输入图像上滑动,进行局部感受野的计算。
  2. 池化层(Pooling Layer):通过下采样减少特征图的大小,降低计算量,同时保留最重要的特征信息。
  3. 全连接层(Fully Connected Layer):在卷积和池化层提取特征之后,使用全连接层进行分类或回归任务。
  4. 激活函数(Activation Function):通常使用ReLU(Rectified Linear Unit)激活函数,使模型能够学习非线性特征。
(2)核心公式:
  1. 卷积操作公式
    在这里插入图片描述

  2. 池化操作公式
    池化层通常使用最大池化(Max Pooling)或平均池化(Average Pooling),最大池化公式为:
    在这里插入图片描述

(3)关键特性:
  • 局部连接:每个神经元只连接到输入图像的局部区域,这样可以减少计算量。
  • 共享权重:同一卷积核在图像的不同位置使用相同的权重,进一步减少参数数量。
  • 平移不变性:通过卷积操作,CNN能够在不同位置识别相同的特征,具有平移不变性。
(4)局限性:
  • 对空间关系的依赖:CNN主要关注局部特征和空间关系,对于长期依赖和全局上下文的建模能力较弱。
  • 计算开销:尽管通过共享权重减少了参数数量,但卷积和池化操作仍然需要较高的计算资源。

3. 发展历史

(1)LeNet的提出(1989年)

LeNet由Yann LeCun等人提出,是第一个成功应用于手写数字识别的卷积神经网络模型。LeNet使用卷积和池化层提取特征,然后通过全连接层进行分类。它是CNN的早期代表之一,标志着CNN在计算机视觉领域的首次成功应用。

(2)AlexNet的突破(2012年)

2012年,AlexNet在ImageNet比赛中取得了突破性成绩,显著提高了深度学习在计算机视觉中的应用。AlexNet通过使用更深的网络结构(8层卷积层和全连接层)、ReLU激活函数、Dropout正则化等技术,解决了过拟合和计算效率问题,使得CNN成为深度学习领域的重要研究方向。

(3)VGG和GoogLeNet(2014-2015年)
  • VGG提出了更深的网络结构,使用了重复的3×3卷积层,改进了模型的表现。
  • GoogLeNet(Inception Network)引入了Inception模块,通过使用不同尺寸的卷积核和池化操作来提高网络的表达能力,同时保持较少的计算量。
(4)ResNet的提出(2015年)

ResNet通过引入残差连接(Residual Connection)解决了深度网络训练中的梯度消失问题,使得网络深度可以达到上千层,并且提高了网络的性能。ResNet开创了深度网络的新方向,使得深度学习技术在各个领域取得了更大的突破。


4. 最佳实践

(1)网络结构的选择

  • 简单任务:对于较简单的图像分类任务,可以选择较浅的网络,如LeNet或AlexNet。
  • 复杂任务:对于复杂的任务,如图像识别和检测,可以使用更深的网络,如VGG、ResNet或Inception。

(2)正则化技术

  • Dropout:可以有效减少过拟合,尤其是在训练大型深度神经网络时。
  • Batch Normalization:通过对每一层的输出进行标准化,加速训练并提高模型的稳定性。

(3)优化技术

  • 数据增强:通过对输入数据进行旋转、缩放、裁剪等变换来扩增数据集,增强模型的泛化能力。
  • 学习率调度:使用动态调整学习率的方法(如学习率衰减)来加速训练过程并避免局部最优解。

(4)硬件加速

  • GPU加速:使用GPU进行矩阵运算的加速,可以大大缩短训练时间。
  • 分布式训练:对于超大规模数据集和模型,可以使用分布式训练框架(如TensorFlow、PyTorch)来进行并行训练。

二、循环神经网络(Recurrent Neural Network, RNN)

1. 诞生背景

在上世纪80年代至90年代,传统神经网络(如前馈神经网络)在处理序列数据时表现出局限性。这些网络无法有效捕获序列中前后数据的关联,因为输入之间是独立的。然而,许多实际任务(如语音识别、机器翻译和时间序列预测)都涉及顺序依赖关系。为了克服这一问题,==循环神经网络(RNN)==应运而生。

  • 诞生时间:RNN最初由David Rumelhart等人于1986年提出,后来由Sepp Hochreiter和Jürgen Schmidhuber在1997年提出LSTM(长短期记忆网络)加以改进。
  • 主要解决问题:如何在序列数据中捕获长期依赖关系,记住前面输入的信息,并将其用于当前和后续的预测。

2. 核心思想和原理

循环神经网络的核心思想是通过隐藏状态(Hidden State)存储过去的信息,并在序列的每一步中将当前输入与之前的隐藏状态结合起来,以动态更新隐藏状态。

(1) 基本结构:

RNN每个时间步的输入输出关系如下:
在这里插入图片描述

(2)核心公式:
  1. 隐藏状态更新公式
    在这里插入图片描述

  2. 输出计算公式

(3)关键特性:
  • 权重共享:在不同时间步之间,RNN的参数(如权重矩阵)是共享的。
  • 序列依赖:每个时间步的输出依赖于之前时间步的隐藏状态,从而捕获序列中的时间依赖关系。
(4)局限性:
  • 梯度消失和梯度爆炸:在长序列中,反向传播时梯度可能会逐渐衰减(梯度消失)或迅速增长(梯度爆炸),导致难以捕获长期依赖。

3. 发展历史

(1)经典RNN的提出(1986年)

David Rumelhart等人首次提出RNN结构,用于解决序列数据的建模问题。但受限于梯度消失问题,其性能有限。

(2)LSTM的诞生(1997年)

Sepp Hochreiter和Jürgen Schmidhuber提出长短期记忆网络(LSTM),通过引入记忆单元(Cell State)和门机制(如输入门、遗忘门和输出门)有效缓解了梯度消失问题,使得RNN可以处理更长的序列。

(3)GRU的提出(2014年)

Kyunghyun Cho等人提出门控循环单元(GRU),简化了LSTM的结构,保留了其捕获长期依赖的能力,同时减少了计算开销。

(4)基于注意力机制的改进(2014-2017年)
  • 2014年,Bahdanau等人提出注意力机制(Attention Mechanism),让模型在生成每个输出时能够灵活选择关注输入序列的不同部分。
  • 2017年,Transformer的提出彻底改变了序列建模领域,完全摒弃了RNN结构,依赖于全局注意力机制。
(5)现代发展(2020年至今)

虽然Transformer已在许多任务中取代了RNN,但RNN及其变体(如LSTM、GRU)仍在语音识别、时间序列预测等领域具有重要地位。


4. 最佳实践

(1)选择合适的RNN变体

  1. 标准RNN:适用于短序列任务,如简单时间序列预测。
  2. LSTM:更适合长序列任务,如文本生成、机器翻译。
  3. GRU:计算效率更高,但在大多数任务中的性能与LSTM相当。

(2)梯度问题的解决

  • 梯度裁剪(Gradient Clipping):防止梯度爆炸,通过限制梯度的最大值来稳定训练。
  • 权重正则化:使用L2正则化或Dropout减少过拟合。

(3)优化训练

  • 小批量梯度下降(Mini-Batch Gradient Descent):使用小批量样本训练,提高计算效率。
  • 学习率调度:动态调整学习率以加快收敛。

(4)结合注意力机制

  • 在序列到序列(Seq2Seq)模型中,结合注意力机制可提升RNN对长序列的处理能力。

(5)硬件加速与库选择

  • 硬件:利用GPU或TPU加速矩阵计算。
  • 深度学习框架:如PyTorch、TensorFlow等框架提供了高效的RNN、LSTM、GRU实现。

三、RNN与CNN对比

卷积神经网络(CNN)和循环神经网络(RNN)是深度学习中两种重要的神经网络架构,分别擅长处理不同类型的数据。以下将从应用场景核心思想结构与原理优缺点等方面进行详细对比。

1. 应用场景

网络类型主要应用领域示例任务
CNN计算机视觉、图像处理、视频分析图像分类、目标检测、语义分割、风格迁移
RNN自然语言处理、时间序列分析、语音处理机器翻译、文本生成、语音识别、时间序列预测

总结

  • CNN适合空间结构数据,如图像、视频等。
  • RNN适合序列数据,如文本、语音等。

2. 核心思想

网络类型核心思想
CNN通过卷积核提取局部特征,并利用权重共享减少参数数量。
RNN通过隐藏状态捕获序列中的时间依赖关系。

总结

  • CNN专注于空间特征提取,局部感受野逐层扩展至全局。
  • RNN专注于时间依赖建模,当前输出依赖于过去的信息。

3. 结构与原理对比

(1) CNN结构特点

  • 卷积层(Convolutional Layer):用于提取局部特征,通过卷积核在输入图像上滑动进行计算。
  • 池化层(Pooling Layer):对特征图进行下采样,以此减少特征维度。
  • 激活函数(ReLU):引入非线性特性,使模型能够学习更复杂的映射关系。
  • 全连接层(Fully Connected Layer):将前面提取的特征用于分类或回归任务。

(2)RNN结构特点

  • 隐藏状态(Hidden State):当前时间步的隐藏状态(h_t)由前一时间步(h_{t - 1})和当前输入(x_t)共同决定,以此实现信息在序列中的传递与累积。
  • 时间依赖(Temporal Dependency):借助循环结构来对序列数据的依赖关系进行建模,体现序列顺序特性。
  • 序列输出:输出可以是单个值,也可以是整个序列,具体取决于具体任务需求。

4. 优缺点对比

对比维度卷积神经网络(CNN)循环神经网络(RNN)
优势1. 具备高效并行计算能力,计算速度相对较快。
2. 通过参数共享机制,可有效减少模型参数数量。
3. 在处理图像、视频等空间数据方面表现优异。
1. 非常适合处理序列数据,能够有效捕获其中的时间依赖关系。
2. 可以处理长度可变的输入和输出序列。
3. 使用如LSTM、GRU等变体,能够在一定程度上缓解梯度消失问题。
劣势1. 擅长处理固定大小的输入,对于序列数据的处理效果欠佳。
2. 较难捕获长距离依赖关系,对于远距离特征关联建模能力有限。
3. 对全局特征的捕获能力相对有限(通常需要加深网络结构来改善)。
1. 计算过程难以并行化,导致训练速度较慢。
2. 原始的RNN容易出现梯度消失或梯度爆炸问题,影响模型训练效果和稳定性。
3. 针对长序列任务,往往需要较长的训练时间。
并行化能力优异(卷积操作和池化操作均可并行执行)。较差(其计算依赖前一时间步的结果,限制了并行计算的可行性)。
参数规模较小(得益于卷积核共享权重的特性,整体参数数量相对较少)。较大(因为每个时间步都涉及参数更新,所以参数规模相对更大)。

5. 适用场景与选择建议

  1. 使用CNN的场景

    • 图像分类、目标检测、语义分割、视频分析等计算机视觉相关任务。
    • 需要高效并行处理以及捕获空间特征的任务场景。
  2. 使用RNN的场景

    • 自然语言处理相关任务,例如机器翻译、文本生成等。
    • 时间序列预测、语音识别等涉及序列数据处理的任务。
  3. 综合建议

    • 若任务涉及长序列并且需要捕获复杂的时间依赖关系,建议使用RNN或其变体(如LSTM、GRU)。
    • 若任务涉及空间特征(如图像或视频),则使用CNN更为高效。
    • 在某些场景下,可结合CNN + RNN架构,比如在视频分类任务中,先利用CNN提取视频帧中的空间特征,再借助RNN对帧序列的时间关系进行建模。

6. 总结

卷积神经网络(CNN)作为一种强大的深度学习模型,在计算机视觉领域中发挥了巨大的作用。它通过局部连接和共享权重等方式,成功提取图像中的局部特征,并进行分类或回归任务。从LeNet到AlexNet,再到ResNet,CNN不断发展和完善,推动了深度学习技术的进步。对于研究者和工程师而言,理解CNN的核心原理、选择合适的网络结构,并掌握最佳实践,是构建高效神经网络模型的关键。

循环神经网络作为一种能够建模序列数据的强大工具,在深度学习的发展中具有重要地位。从经典RNN到LSTM、GRU,再到结合注意力机制的Seq2Seq模型,RNN不断演化以适应更复杂的序列建模需求。虽然Transformer已在许多领域占据主导地位,但RNN仍在一些特定任务中具有不可替代的优势。对于研究者而言,了解RNN的发展历史、核心原理以及最佳实践,是深入掌握序列建模技术的基础。

卷积神经网络(CNN)和循环神经网络(RNN)各有所长,分别在不同类型的数据处理上展现优势。CNN主要聚焦于空间结构数据的处理,适用于图像、视频等任务;RNN则侧重于序列数据,更契合自然语言处理和时间序列分析等应用场景。深入理解二者的差异、优势以及应用场景,有助于针对具体任务准确选择最适配的模型架构,进而提升任务处理效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/481190.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust format失败

现象: 使用vscode 格式化.rs 文档的时候,一直没有反应。 cargo run命令没问题 cargo fmt会报错This version of rustfmt is deprecated. Use rustfmt-nightly. Use --force to run deprecated rustfmt. 询问GPT,一直让rustup component add …

基础汉诺塔

汉诺塔(Hanoi Tower)问题是一个著名的数学问题,它涉及到递归算法。问题的背景来源于一个传说:在印度的一个寺庙里,有三根金刚石柱和64个直径大小不一的金盘。僧侣们被命令将这些金盘从一根柱子按照从小到大的顺序移动到…

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…

C底层 函数栈帧

文章目录 一,什么是寄存器 二,栈和帧 前言 我们在学习c语言程序的时候,是不是有很多的疑问,如 1,为什么形参不可以改变实参 2,为什么我们编写程序的时候会出现烫烫烫......这个乱码 3,那些局…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1:使用“空间连接 (Spatial Join)”工具方法 2:使用“点计数 (Point Count)”工具方法 3:通过“选择 (Select by Location)”统计方法 4:通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

Supervisor使用教程

文章目录 [toc] Supervisor使用教程平台要求 安装supervisor本文测试的时候是使用Linux的yum安装的(其它方式未做测试)加入系统守护进行 Supervisor使用教程 在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式…

分布式锁的实现原理

作者:来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mu…

[Java]微服务配置管理

介绍 代码拆分为微服务后, 每个服务都有自己的配置文件, 而这些配置文件中有很多重复的配置, 并且配置变化后需要重启服务, 才能生效, 这样就会影响开发体验和效率 配置管理服务可以帮助我们集中管理公共的配置, 并且nacos就可以实现配置管理服务 配置共享 我们可以把微服务共…

File类,IO流,字节输入流,字节输出流,字符输出流,字符入流,缓存流,对象流,序列化ID

1.File类 1.文件创建 创建的是文件还是文件夹,跟调用的方法有关。和后缀无关。 //创建File对象 \: window中使用\.第一个表示转移符。 而我们在linux或mac使用/. java语言跨平台操作。 window系统中也可以使用/ File filenew File("E:/hhhh/a.txt"); …

AMD的AI芯片Instinct系列介绍

AMD最强AI芯片发布! 在旧金山举行的Advancing AI 2024大会上,AMD推出Instinct MI325X AI加速器(以下简称MI325X),直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示,与英伟达H200的集成平台H200 …

第六届国际科技创新(IAECST 2024)暨第四届物流系统与交通运输(LSTT 2024)

重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 简介 第六届国际科技创新暨第四届物流系统与交通运输国际(LSTT 2024)将于2024年12月6-8日在广州举办,这是一个集中探讨…

Docker desktop 改变存储位置

项目场景: 在windows下,使用docker desktop是使用docker最简单直接的方式。但是,这毕竟是一个可视化的界面,使用起来还是和linux环境下的版本有很大的区别。 例如,使用docker desktop,会默认将镜像以及容…

多线程 03 实现方式

继续变强 主流框架都看了 springcloud , redis ,mq ,nginx ,docker , 也有实操 继续看多线程,和 大数据 请假面试 本来要拿离职补偿和失业金,结果公司要加薪续签,哎,反正不忙,要是主动离职我就亏了,那就…

Android 图形系统之三:SurfaceControl

在 Android 系统中,SurfaceControl 是一个关键的类,用于管理应用窗口和屏幕上的显示内容。它与 SurfaceFlinger 紧密交互,通过 BufferQueue 提供高效的图形缓冲区管理能力。SurfaceControl 是 Android 的显示架构中不可或缺的部分&#xff0c…

Spring的事务管理

tx标签用于配置事务管理用于声明和配置事务的相关属性 transaction-manager指定一个事务管理器的引用,用于管理事务的生命周期。propagation指定事务的传播属性,决定了在嵌套事务中如何处理事务。isolation指定事务的隔离级别,用于控制事务之…

【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 D:\Program\nodejs\npm.ps1。未对文件 D:\Program\nodejs\npm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_ Execution_Policies。…

品优购PC端静态页面(列表页、详情页、登录页)

首页可转至品优购静态首页制作查看,接下来继续制作品优购静态页面(列表页、详情页、登录页)。 一、列表页 品优购列表页制作准备工作 列表页面是新的页面,我们需要新建页面文件 list.html因为列表页的头部和底部基本一致&#xff…

前端页面或弹窗在线预览文件的N种方式

需求:后端返回给前端一个地址后,在前端页面上或则在弹框中显示在线的文档、表格、图片、pdf、video等等,嵌入到前端页面 方式一: 使用vue-office 地址:vue-office简介 | vue-office 个人感觉这个插件是最好用的&#x…

成都睿明智科技有限公司抖音电商服务的新引擎

在这个短视频风起云涌的时代,抖音不仅成为了人们休闲娱乐的首选,更是商家们竞相角逐的电商新蓝海。在这片充满机遇与挑战的海域中,成都睿明智科技有限公司如同一艘装备精良的航船,引领着众多企业向抖音电商的深水区进发。今天&…

独家|京东调整职级序列体系

原有的M、P、T、S主序列将正式合并为新的专业主序列P。 作者|文昌龙 编辑|杨舟 据「市象」独家获悉,京东已在近日在内部宣布对职级序列体系进行调整,将原有的M、P、T、S主序列正式合并为新的专业主序列P,合并后的职级体系将沿用原有专业序…