干货|全面理解卷积神经网络及其不同架构

一文彻底搞懂CNN - 模型架构(Model Architecture) 由输入层、卷积层、池化层以及全连接层组成,通过卷积操作提取图像特征,并通过池化减少参数数量,最终通过全连接层进行分类或回归。输入层:接收原始图像数据,可能需要进行预处理,如归一化、尺寸调整等。卷积层:通过一系列可学习的卷积核(或称为滤波器)对输入图像进行卷积操作,以提取图像中的局部特征。每个卷积核都会生成一个特征图(feature map),这些特征图共同构成了卷积层的输出。池化层:通常位于卷积层之后,用于对特征图进行下采样,以减少数据的空间维度和参数数量,同时保留重要特征。 阅读详情

一、引出循环神经网络

在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如时序问题,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。这个时候,我们怎么办呢?下面有两种解决方案

  1. 一种思路是记忆之前的分类器的状态,在这个基础上训练新的分类器,从而结合历史影响,但是这样需要大量历史分类器

  2. 重用分类器,只用一个分类器总结状态,其他分类器接受对应时间的训练,然后传递状态,这样就避免了需要大量历史分类器,而且还比较有效的解决了这个问题。而这样一种东西是什么呢?没错,就是RNN(循环神经网络)

二、RNN讲解

RNN出现的目的是来处理序列数据的。RNN之所以称为循环神经网路,是因为一个序列当前的输出与前面的输出有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,也就是说隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关,下图便是一个典型的RNN:

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

需要注意的是:在RNN中,每输入一步,每一层各自都共享参数U,V,W。其反映着RNN中的每一步都在做相同的事,只是输入不同,因此大大地降低了网络中需要学习的参数,具体原因下面说。还有就是上图中每一步都会有输出,但是每一步都要有输出并不是必须的。比如,我们需要预测一条语句所表达的情绪,我们仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的,其他架构后面也会说。反正时时记得:RNN的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。

需要注意的是,那对每一个词做处理的cell来说,他并不是只有1个神经元的,而是n个hidden units,这个在tensorflow中是可以设置的,可以看成是神经网络的宽度!

三、为什么可以参数共享的简单理解

对于RNN,我的理解是对于一个句子或者文本,那个参数可以看成是语法结构或者一般规律,而下一个单词的预测必须是上一个单词和一般规律或者语法结构向结合的。我们知道,语法结构和一般规律在语言当中是共享的,所以,参数自然就是共享的!

用通俗的例子解释( 知乎@YJango大佬 的例子):

例2:演奏音乐时,乐器将力转成相应的震动产生声音,而整个演奏拥有一个主旋律贯穿全曲。其中乐器的物理特性就相当于参数,同一乐器在各个时刻物理特性在各个时刻都是共享的。其内在也有一个隐藏的主旋律基准(主题),旋律信息(上一个状态乘与主题)与音乐信息(输入称与参数)共同决定下一时刻的实际声音。

而捏陶瓷的例子可能更容易体会共享特性对于数据量的影响,不同角度相当于不同的时刻

  • 若用前馈网络:网络训练过程相当于不用转盘,而是徒手将各个角度捏成想要的形状。不仅工作量大,效果也难以保证。

  • 若用递归网络:网络训练过程相当于在不断旋转的转盘上,以一种手势捏造所有角度。工作量降低,效果也可保证。

CNN 和RNN的共享参数:

我们需要记住的是,深度学习是怎么减少参数的,很大原因就是参数共享,而CNN是 在空间上共享参数,RNN是在时间上(顺序上)共享参数:

这个图虽然丑,但是表明了RNN和CNN在不同角度上的参数共享

四、rnn的训练

对于RNN的训练和对传统的ANN训练一样。同样使用BP误差反向传播算法,不过有一点区别。如果将RNN进行网络展开,那么参数W,U,V是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还用前面若干步网络的状态。比如,在t=4时,我们还需要向后传递三步,以及后面的三步都需要加上各种的梯度。该学习算法称为Backpropagation Through Time (BPTT)。需要注意的是,在普通RNN训练中,BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem)。当然,有很多方法去解决这个问题,如LSTM便是专门应对这种问题的。

因为BPTT具体推导的话占篇幅较大,之后在看看单独一篇来写吧!这里先做个简介。

RNN几种架构

然后来说说几种用RNN组成的常用架构,如下图:

图1是普通的单个神经网络,图2是把单一输入转化为序列输出。图3是把序列输入转化为单个输出 图4是把序列转化为序列,也就是seq2seq的做法。图5是无时差的序列到序列转化,可以作为普通得语言模型,下面再说说几个比较重要的架构:

1 to N:

这种情况有两种方式,一种是只在序列开始进行输入计算

还有一种结构是把输入信息X作为每个阶段的输入:

这种1toN的结构可以处理的问题有挺多的,比如图片标注,输出的X是图像的特征,而输出的y序列是一段句子或者从类别生成语音或音乐,输入的x是类别,输出的y是一串文字。

N to 1

输入是一个序列,输出是一个单独的值而不是序列。这种结构通常用来处理序列分类问题。如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段文档并判断它的类别等等。具体如下图:

N to N

输入和输出序列是等长的。这种可以作为简单的Char RNN可以用来生成文章,诗歌,甚至是代码,非常有意思)。

N to M

这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。在实现问题中,我们遇到的大部分序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。而Encoder-Decoder结构先将输入数据编码成一个上下文向量c,之后在通过这个上下文向量输出预测序列。

注意,很多时候只用上下文向量C效果并不是很好,而attention技术很大程度弥补了这点。

seq2seq的应用的范围非常广泛,机器翻译,文本摘要,阅读理解,对话生成....,之后会找机会详细说明其中的知识,包括各种attention,不同结构等。

五、Long-Term依赖问题

有时候,我们只需要查看最近的信息来执行现在的任务,例如,考虑一个语言模型试图基于先前的词预测下一个词。如果我们要预测“the clouds are in the sky”,我们不需要其他更遥远的上下文 —— 非常明显,下一个词就应该是sky。在这样的例子中,相关信息和目的地之间的距离是很小的。RNN可以学着去使用过去的信息。

但也有一些情况是我们需要更多上下文的。考虑预测这个句子中最后一个词:“I grew up in France… I speak fluent French.” 最近的信息表明下一个词可能是一种语言的名字,但如果我们想要找出是哪种语言,我们需要从更久远的地方获取France的上下文。相关信息和目标之间的距离完全可能是非常巨大的。而不幸的是,随着距离的增大,RNN变得不能够连接信息。

理论上,RNN是绝对能够处理这样的“长期依赖的”。人类可以仔细地从这些词中找到参数然后解决这种形式的一些雏形问题。然而,实践中,RNN似乎不能够学习到这些。Hochreiter (1991) [German] 和 Bengio, et al. 1994年曾探索过这个问题,他们发现了一些非常根本的导致RNN难以生效的原因。幸运的是,LSTM或GRU没有这个问题!也就是说不会产生由于太多层导致的梯度爆炸或者梯度消亡的问题!

------end------

神经网络算法 - 一文搞懂CNN(卷积神经网络) 本文将从CNN解决了什么问题、人类的视觉原理、CNN的基本原理、典型的CNN及实际应用四个方面,带您一文搞懂卷积神经网络CNN。 阅读详情

相关推荐

从零到精通:ROS2 MoveIt2与MPC机械臂轨迹规划的完整配置流程

本文详细介绍了ROS2 MoveIt2与MPC机械臂轨迹规划的完整配置流程,从环境准备到高级功能扩展,帮助开发者实现精准控制。通过集成模型预测控制(MPC),机械臂能够优化复杂轨迹规划,处理动态避障,提升工业自动化效率。

juice的博客 708

几种常见卷积神经网络结构

卷积神经网络 图像特征的提取与分类一直是计算机视觉领域的一个基础而重要的研究方向。卷积神经网络( Convolutional NeuralNetwork,CNN) 提供了一种端到端的学习模型,模型中的参数可以通过传统的梯度下降方法进行训练,经过训练的卷积神经网络能够学习到图像中的特征,并且完成对图像特征的提取和分类。作为神经网络领域的一个重要研究分支,卷积神经网络的特点在于其每一层的特征都由上一层的局部区域通过共享权值的卷积核激励得到。这一特点使得卷积神经网络相比于其他神经网络方法更适合应用于图像特征的.

weixin_45890678的博客 2万+

百度API实现人流量数量检测(动态)

百度的这个API还挺好用的,对与不追求高精度的人来说非常适用,结合他官方给的文档,极易上手。 需要做的就是通过API Key和Secret Key获取的access_token。 然后稍微修改下代码就行,但是他给的代码并没有直接从摄像头获取视频,而是读取一个文件夹,那么就需要自己先对摄像头的输出视频进行处理。 识别结果如下,"person_num"是当前画面的人数,in是累计进入的人数,out是累计走出去的人数。 他这个有个缺点就是返回值里边并没有实时返回in和out的值,而是都是0,但是这个图片上有,图片

qq_42479987的博客 3383

常用的卷积神经网络-1-卷积和通道

文章目录CNN1. CNN基本结构2. 卷积和通道2.1 分组卷积(Group Convolution)2.2 Convolution VS Group Convolution2.3 Group Convolution的用途2.4 Depthwise Convolution && Pointwise Convolution && Depthwise Separable Convolution2.5 Group Convolution 和 Depthwise + Pointwi

u012744245的博客 4334

VFIO框架源码分析(二十二)- IOMMUFD 的脏页跟踪与 Dirty Bits 读取

在虚拟化热迁移(Live Migration)的场景中,脏页追踪(Dirty Page Tracking)是最具挑战性的环节之一。它的核心任务是实时捕获设备(DMA)对内存的写操作,以便 VMM(如 QEMU)知道哪些内存页需要被重新传输到目标主机。在强耦合与粗粒度:脏页追踪是绑定在 Container 上的。这意味着,如果一个 Container 内有多个设备,哪怕只有一个设备在写内存,脏页追踪也会影响 Container 内的所有设备。软件模拟开销大。

qq_36071928的博客 1046

STM32F103 串口DMA + 空闲中断 实现不定长数据收发

文章目录1. 空闲中断1.1 uart_dma.c1.2 uart_dma.h1.3 main.c1.4 stm32f10x_it.c1.5 效果演示1.6 知识补充1.6.1 外设的基地址     DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU

夏夜晚风_的博客 3万+

2021-06-23 各种经典卷积神经网络总结

各种经典卷积神经网络总结1、原始卷积 (Vanilla Convolution)2、分组卷积 (Group convolution)2.1 组卷积案例12.1 组卷积案例2——Resnext3、转置卷积 (Transposed Convolution)4、1×1卷积 (1×1 Convolution)5、空洞卷积 (Atrous convolution)6、深度可分离卷积 (Depthwise Separable Convolution)7、可变形卷积 (Deformable convolution)8、空

m0_47180208的博客 2755

CD-HIT的使用

继续我的生信笔记系列。从某网站的附带文献中读到该工具,搜索了一下,发现网上的大佬们都在讲如何用它去冗余,相对官方页面的介绍而言很是片面,于是刚好有聚类的需求的我准备对其全体功能做做实验,学习一下由李伟忠博士在伯纳姆研究所(现为桑福德伯纳姆医学研究所)亚当·戈兹克博士的实验室开发的牛工具。 首先是官方介绍: CD-HIT是一个非常广泛使用的程序,用于蛋白质或核苷酸序列的聚类和比较。最初由李伟忠博士在伯纳姆研究所(现为桑福德伯纳姆医学研究所)亚当·戈兹克博士的实验室开发,CD-HIT速度非常快,可以处理非常

一名学术waste的note pro 1万+

5种经典卷积神经网络(含代码)

五种经典卷积神经网络

weixin_44021149的博客 1万+

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1580

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

Soly_kun的博客 362

小白学视觉 | 7大类卷积神经网络(CNN)创新综述

本综述将最近的 CNN 架构创新分为七个不同的类别,分别基于空间利用、深度、多路径、宽度、特征图利用、通道提升和注意力。

csdn_xmj的博客 1236

第4章 部署负载均衡 Keepalived + HAProxy

本章在所有 Master 节点部署 Keepalived + HAProxy,为 kube-apiserver 提供高可用入口。Keepalived 实现 VIP(192.168.3.59)漂移,HAProxy 轮询转发请求至三个 Master 的 6443 端口(监听 6444 避免冲突)。健康检查脚本连续 5 次失败则停止 Keepalived,触发 VIP 自动切换。本章还包含配置详解、日常运维和问题排查。

幸福街--linux技术分享 121

【干货整理】CNN(卷积神经网络)进化史

卷积神经网络(CNN)近年来取得了长足的发展,是深度学习中的一颗耀眼明珠。CNN不仅能用来对图像进行分类,还在图像分割(目标检测)任务中有着广泛的应用。CNN已经成为了图像分类的黄金标准,一直在不断的发展和改进。 刘昕博士总结了CNN的演化历史,如下图所示: CNN的起点是神经认知机模型,此时已经出现了卷积结构,经典的LeNet诞生于1998年。然而之后CNN的锋芒开始被SVM等模型盖过...

雪饼的博客 8645

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

2019年上半年收集到的人工智能卷积神经网络干货文章

2019 年上半年收集到的人工智能卷积神经网络干货文章 了解CNN 这一篇就够了——关于卷积神经网络的介绍 ...

722

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

干货 | 深度学习之卷积神经网络(CNN)的模型结构

微信公众号 关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在前面我们讲述了DNN的模型与前向反向传播算法。而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一。CNN广泛的应用于图像识别,当然现在也应用于NLP等其他领域

机器学习算法与Python学习 7100

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

全面理解卷积神经网络及其不同架构

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 一、引出循环神经网络在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每...

小白学视觉 751

7 大类卷积神经网络(CNN)综述

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达前言:深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前最优结果。深度 CNN 架构在挑战性基准任务比赛中实现的高性能表明,创新的架构理念以及参数优化可以提高 CNN 在各种视觉相关任务上的性能。本综述将最近的 CNN 架构创新分为七个不同的类别,分别基于空间利用、深度、多路径、宽度、特征图利用、通...

小白学视觉 938

优快云日报190826:卷积神经网络CNN(干货满满),架构设计指南:MVC、MVP & MVVM模式

优快云日报来啦!给大家奉上当日最新鲜的技术干货! 编程语言|Java中主要的Queue、Deque结构 作者:说好不能打脸 PriorityQueue集合是线程不安全的,但这不影响它成为Java体系统非常重要的Quere性质的集合。PriorityQueue集合很好展示了树结构向数组结构的降维,并如何将其引入到实现中的方式。要深入理解PriorityQueue集合的工作方式和工作原理,首先就需...

优快云 官方博客 2758

全面理解RNN及其不同架构

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达引出循环神经网络RNN讲解为什么可以参数共享的简单理解rnn的训练RNN几种架构引出下文:Long-Term依赖问题引出循环神经网络在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如时序问题,比如你要预测句子的下一个单词是什么,...

小白学视觉 1122

【AI深究】卷积神经网络:CNN深度解析——全网最详细全流程详解与案例(附Python代码演示)|数学表达、主流变体与架构创新、优缺点与工程建议、调优技巧|经典变体:ResNet、DenseNet详解

大家好,我是爱酱。本篇将会系统梳理卷积神经网络(Convolutional Neural Network, CNN)的原理、结构、数学表达、典型应用、可视化代码示例与工程实践,帮助你全面理解这一深度学习的“感知基石”。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!

AI人工智能爱酱~你的AI学习好帮手~ 1万+

干货 | 如何入手卷积神经网络

点击上方“视学算法”,选择“星标”公众号重磅干货,第一时间送达来自|medium 作者丨Tirmidzi Faizal Aflahi来源丨机器之心卷积神经网络可以算是深度神经网...

zandaoguang的博客 605

7大类卷积神经网络(CNN)创新综述

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达深度卷积神经网络(CNN)是一种特殊类型的神经网络,在各种竞赛基准上表现出了当前最优结果。深度 CNN 架构在挑战性基准任务比赛中实现的高性能表明,创新的架构理念以及参数优化可以提高 CNN 在各种视觉相关任务上的性能。本综述将最近的 CNN 架构创新分为七个不同的类别,分别基于空间利用、深度、多路径、宽度、特征图利用、通道提升...

小白学视觉 1571

CNN卷积神经网络核心原理与实践

本文介绍了卷积神经网络(CNN)的基本概念和核心组成结构。CNN通过局部感受野、权值共享和池化操作等特性,能够高效处理图像等网格数据。文章详细讲解了CNN的三大核心组件:卷积层通过滑动窗口提取特征,池化层进行下采样降低计算量,全连接层实现最终分类任务。文中还提供了Python实现案例,包括图像边缘检测的卷积操作和最大池化的具体实现代码,帮助读者直观理解CNN的工作原理。这些基础知识为深入学习和应用CNN模型奠定了基础。

没事学AI的博客 844

一文弄懂CNN及图像识别(Python)

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达一、卷积神经网络简介 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算的前馈神经网络,是基于图像任务的平移不变性(图像识别的对象在不同位置有相同的含义)设计的,擅长应用于图像处理等任务。在图像处理中,图像数据具有非常高的维数(高维的RGB矩阵表示),因此训练一个标准的前馈网络...

小白学视觉 6646
上一篇: 搞网络最强的其实不是互联网公司,而是印度的电工!
下一篇: 火了!16岁高中生做的 Python 3.9 八大新特性图
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值