神经网络 | CNN 与 RNN——深度学习主力军

Hi,大家好,我是半亩花海。本文主要将卷积神经网络(CNN)循环神经网络(RNN)这两个深度学习主力军进行对比。我们知道,从应用方面上来看,CNN 用于图像识别较多,而 RNN 用于语言处理较多。CNN 如同眼睛一样,正是目前机器用来识别对象的图像处理器。相应地,RNN 犹如耳朵和嘴巴,用于解析语言模式的数学引擎。


目录

一、卷积神经网络

1. 特征

2. 结构

二、循环神经网络

1. 网络结构

2. 应对梯度消失问题

三、CNN 与 RNN 的异同点

1. 相同点

2. 不同点

四、CNN+RNN 的组合方式


我们可以通过形象的假设来理解这俩个神经网络模型:

  • CNN 的假设——人类的视觉总是会关注视线内特征最明显的点。
  • RNN 的假设——事物的发展是按照时间序列展开的(前一刻发生的事物会对未来的事情的发展产生影响)。

卷积神经网络:通常用于计算机视觉中,可以用来图像识别图像分类。CNN 用于提取图像的空间特征,通过不断的卷积和池化操作实现特征提取和降维。

循环神经网络:通常用于自然语言处理语音识别中,可以用来处理间序列数据。RNN 的主要思想是把前面的信息传递到后面,这样网络就可以利用之前的信息做出预测,能够处理序列中每个时间步的数据。


一、卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。

1. 特征

  • 局部连接:在卷积层(假设是第 𝑙 层)中的每一个神经元都只和前一层(第 𝑙 − 1 层)中某个局部窗口内的神经元相连,构成一个局部连接网络。
  • 权重共享:一个卷积核只捕捉输入数据中的一种特定的局部特征(因此,如果要提取多种特征就需要使用多个不同的卷积核)。
  • 空间或时间上的次采样。

2. 结构

一个卷积神经网络主要由以下 5 层组成:

  • 输入层(Input layer)
  • 卷积(CONV layer,包含激活函数,比如 ReLU、sigmoid、tanh 等)
  • 池化层(Pooling layer)
  • 全连接层(FC layer)
  • 输出层(Ouput layer)


二、循环神经网络

循环神经网络(RNN,Recurrent Neural Network)是一类用于处理序列数据的神经网络。

1. 网络结构

RNN 不是刚性地记忆所有固定长度的序列,而是通过隐藏状态来存储之前时间步的信息。

可以看出,典型的 RNN 是有环结构。一个典型的 RNN 网络架构包含一个输入,一个输出和一个神经网络单元 。和普通的前馈神经网络的区别在于:RNN 的神经网络单元不但与输入和输出存在联系,而且自身也存在一个循环 / 回路 / 环路 / 回环 (loop)。这种回路允许信息从网络中的一步传递到下一步。

同时,RNN 还能按时间序列展开循环 (unroll the loop) 为如下形式:

由上图可知,上一个时刻的网络状态将会作用于到下一个时刻的网络状态,还表明 RNN 和序列数据密切相关。同时,RNN 要求每一个时刻都有一个输入,但是不一定每个时刻都需要有输出。

进一步地,公式化 RNN 的结构。单个展开的 RNN 结构如下:

RNN 的计算结构如下:

由上述表示,RNN 的经典的计算结构如下:

在图中有一条单向流动的信息流从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNNs 会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为 “Back Projections”,并且隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连(这实际上就是 LSTM)。

循环神经网络的输入是序列数据,每个训练样本是一个时间序列,包含多个相同维度的向量。网络的参数如何通过训练确定?这里就要使用解决 RNN 训练问题的 BPTT(Back Propagation Through Time)算法。

右侧为计算时便于理解记忆而产开的结构。简单说,x 为输入层,o 为输出层,s 为隐含层,而 t 指第几次的计算;V、W、U为权重(在 RNN 中,每一层都共享参数U、V、W,降低了网络中需要学习的参数,提高学习效率。)。 x_{t} 表示 t 时刻的输入,s_{t} 表示 t 时刻的隐状态,o_{t} 表示 t 时刻的输出。

输入单元(input units):{x_{0},\cdot \cdot \cdot, x_{t-1}, x_{t}, x_{t+1}, \cdot \cdot \cdot}

隐藏单元(hidden units):{s_{0},\cdot \cdot \cdot, s_{t-1}, s_{t}, s_{t+1}, \cdot \cdot \cdot}

输出单元(output units):{o_{0},\cdot \cdot \cdot, o_{t-1}, o_{t}, o_{t+1}, \cdot \cdot \cdot}

输入层x_{t} 表示时刻 t 的输入。

第 t 次的中间的隐含层状态为: 

s_{t}=f(U*x_{t}+W*s_{t-1})

f 是非线性激活函数,比如 tanh。 

输出层

o_{t}=softmax(Vs_{t})

softmax 函数是归一化的指数函数,使每个元素的范围都在 0 到 1 之间 ,并且所有元素的和为 1。

2. 应对梯度消失问题

在进行反向传播时,循环神经网络也面临梯度消失或者梯度爆炸问题,这种问题表现在时间轴上。如果输入序列的长度很长,人们很难进行有效的参数更新。通常来说梯度爆炸更容易处理一些。梯度爆炸时我们可以设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取。

应对梯度消失问题:

  • 合理地初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。
  • 使用激活函数 ReLu,代替 sigmoid 和 tanh。
  • 使用其他结构的 RNNs,比如长短时记忆网络(LSTM)和 门控循环单元 (GRU),这是最流行的做法。

三、CNN 与 RNN 的异同点

1. 相同点

(1)神经网络结构: 两者都是深度神经网络,包含大量的神经元和层级结构。

(2)权重共享: 在训练过程中,两者都使用权重共享的概念。通过在不同的位置或时间步共享相同的权重参数,从而减少参数数量和提高模型的泛化能力。

(3)端到端学习: 两者都支持端到端的学习,即从原始输入数据到最终输出的直接学习。

2. 不同点

(1)数据类型

  • CNN: 主要用于处理网格结构的数据,如图像。它通过卷积操作有效地捕捉图像中的空间结构信息。
  • RNN: 专门设计用于处理序列数据,如时间序列数据或自然语言文本。RNN 具有记忆单元,可以在时间步之间传递信息。

(2)局部连接和权重共享

  • CNN: 通过卷积操作实现局部连接和权重共享,这有助于捕捉图像中的局部特征。
  • RNN: 通过循环结构实现权重共享,允许网络在处理序列数据时考虑先前的信息。

(3)结构设计

  • CNN: 主要包括卷积层、池化层和全连接层,用于提取和学习图像中的特征。
  • RNN: 包括循环层,每个时间步都会更新隐藏状态,以便处理序列数据的时序关系。

(4)适用任务

  • CNN: 适用于图像分类、目标检测等与空间结构相关的任务。
  • RNN: 适用于语言建模、机器翻译、时间序列预测等与时序关系相关的任务。

(5)并行性

  • CNN: 具有较好的并行性,因为卷积操作可以同时应用于不同的区域。
  • RNN: 由于时序依赖关系,循环操作通常难以实现高度的并行性。

总的来说,CNN 适用于处理空间结构的数据,而 RNN 适用于处理时序关系的数据。在某些任务中,这两者也可以结合使用,形成更复杂的神经网络结构,例如将 CNN 和 RNN 组合用于图像描述生成。


四、CNN+RNN 的组合方式

  • CNN 特征提取,用于 RNN 语句生成图片标注
  • RNN 特征提取用于 CNN 进行内容分类、视频分类
  • CNN 特征提取用于对话问答、图片问答

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

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

相关文章

Abap与eCharts

一,简介 利用html与eCharts来绘图,然后用cl_gui_html_viewer将html呈现到abap屏幕中。 二,使用eCharts画图 在一个文件夹中准备如下文件,index.html和echarts.js是必须的,data.json(作为数据源)和jquery.js如果用到就可…

Linux系统中安装MAVEN

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Python程序员面试题精选及解析(2)

本文精心挑选了10道Python程序员面试题,覆盖了Python的多个核心领域,包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例,帮助读者更好地理解和应用相关知识点无论是对…

Rhino.Inside带材质将Revit模型bake到Rhino

Hello大家好!我是九哥~ 今天来讲一个小技巧,就是我通常采用RIR将Revit的模型的Geometry Bake到Rhino,肯定是没有材质的,那么如果我们需要带材质那要怎么办呢? 对于会的人,其实挺简单的,只需要…

可解释性AI(XAI):开启AI决策过程透明化,重塑信任与解决伦理偏见

文章目录 每日一句正能量前言可解释性AI的定义与重要性什么是可解释性?促进技术应用的可信度提高技术的透明度保护隐私和数据权益促进AI的社会接受度 可解释性AI的挑战与难点可解释性AI的应用场景后记 每日一句正能量 宁可因高目标而脖子硬,也不要为低目…

Undertow使用详解

简介 Undertow是一个开源的、灵活的、高性能的非阻塞性应用服务器,由JBoss提供。它可以用作嵌入式服务器,也可以用作大型项目的全功能应用服务器。Undertow的设计以提供最高的性能和最大的灵活性为主要目标,支持非阻塞性和阻塞性处理方式&…

openkylin(Debian系)安装nginx及安装前需要的准备

前言 现在很多linux系统都可以使用高级包管理工具安装软件了,但是在像是 openkylin这些新系统中,好多软件包虽然有,但是因为其依赖的包还没有做好,所 以安装会提示你一大堆依赖错误。所以还是要自己来编译安装咯。安装前准备&…

RCS系统之:机器人状态

在设计RCS系统平台时,机器人总共设计状态有: 离线模式; 如图,18号机器人呈灰黑色,表示机器人没有上电状态 工作模式; 如图,10号机器人成绿色,表示机器人处于工作模式,等…

如何区分Linux中标准分区与lvm分区

以下是标准分区 以下包含lvm分区

Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

TOML格式配置的frp服务搭建

从frp v0.52.0 版本开始,frp 将TOML作为配置文件格式。INI 格式已被弃用,并将在未来的发布中移除。因此,frp v0.52.0 及更高版本的配置文件默认为TOML格式。 项目地址 GitHub:https://github.com/fatedier/frp/releases 服务端…

离线场景下任意文档的在线预览及原样格式翻译,不依赖其他厂商接口非侵入式一行js代码实现网站的翻译及国际化,可配置使用多种翻译语言

离线场景下任意文档的在线预览及原样格式翻译,不依赖其他厂商接口非侵入式一行js代码实现网站的翻译及国际化,可配置使用多种翻译语言。 要实现翻译需要解决以下3个主要问题: 1)from:内容本身的语言类型是什么&#xf…

别人还在集五福,星河社区开发者已经奖品拿到手软了!

AI新年新玩法你是否曾为AI应用的神奇而惊叹?你是否想过用AI为你定制新年写真?无需编程!! 飞桨星河社区帮你实现,还可赢取新年礼包! 先速来看看攻略吧!页面底部见活动详情。 玩法1攻略&#xff…

什么是UI设计?

用户界面(UI)它是人与机器互动的载体,也是用户体验(UX)一个组成部分。用户界面由视觉设计 (即传达产品的外观和感觉) 和交互设计 (即元素的功能和逻辑组织) 两部分组成。用户界面设计的目标是创建一个用户界面&#xf…

9.0 Zookeeper 节点特性

本章节介绍一下 zookeeper 的节点特性和简单使用场景,正是由于这些节点特性的存在使 zookeeper 开发出不同的场景应用。 1、同一级节点 key 名称是唯一的 实例: $ ls / $ create /runoob 2 已存在 /runoob 节点,再次创建会提示已经存在。 …

MySQL:从基础到实践(简单操作实例)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 下载前言一、MySQL是什么?二、使用步骤1.引入库2.读入数据 提交事务查询数据获取查询结果总结 下载 点击下载提取码888999 前言 在现代信息技术的世界…

Java基于微信小程序的医院挂号系统

文章目录 1 简介2 技术栈3 系统目标3.2 系统功能需求分析3.2.1 功能需求分析 4 系统模块设计4.1 数据库模块设计 5 系统的实现5.1 微信小程序个人中心5.2 科**室内容查看的实现**5.3 预约挂号的实现5.4 后台管理界面实现5.5 医生预约管理5.6 医生信息管理 参考文献7 推荐阅读8 …

【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~

Git教程 基本概念 1️⃣ 为什么要用 Git2️⃣ 为什么要用工作流3️⃣ 分布式版本控制4️⃣ 版本库5️⃣ 简单的分支创建与合并🌾 总结 在本章中,将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处。除此之外&am…

区块链大解码:深入了解Web3的核心技术

随着技术的迅速发展,Web3正逐渐崭露头角,成为数字时代的引领者。其中,区块链技术作为Web3的核心,扮演着至关重要的角色。本文将深入解码区块链技术,探讨其在Web3时代的关键作用以及未来发展趋势。 1. 区块链基础原理 …

Windows 10 配置 FFmpeg 使用环境

Windows 10 配置 FFmpeg 使用环境 1.下载FFmpeg 的windows办2. 配置环境变量:3.查看是否配置正确 cmd 或者 PowerShell 执行以下命令 1.下载FFmpeg 的windows办 GitHub 地址 :https://github.com/BtbN/FFmpeg-Builds/releases 解压后得到如图: 2. 配置环境变量: 复制路径:…