深度学习基础中的基础,简单说说CNN与RNN

如果说想学习深度学习不知道CNN与RNN,真有点“平生不识陈近南,纵称英雄也枉然”的感觉,更何况,不识CNN与RNN,应该是没法做深度学习的吧。虽然老生常谈,但是还是分享出来给像入门的小白同学了解一下。
京东购书链接,最近有满100-50的活动
本文分享的内容来源于《深度学习计算机视觉实战》一书,该书由刘东研究员和肖铃合作完成,由电子工业出版社出版。

该书从算法导读到模型训练,到模型部署一站式搞定,书中案例注释详细,均已通过运行验证。该书包括4个部分:
第一部分(1~2章)深度学习和计算机视觉的基础和算法讲解; 第二部分(3~6章)传统图像处理算法的案例讲解;
第三部分(7-11章)计算机视觉方向的案例讲解; 第四部分(12~13章)Tensorflow
Lite讲解(源码分析、模型优化、模型转换等)以及使用Tensorflow Lite在PC端和移动端的部署案例讲解。

获取更多新知识的方式:

添加微信study428,进入面试交流微信群,有问题可以及时交流沟通;
欢迎关注公众号”计算机视觉与OpenCV“,本号不定期会发出赠书活动;
欢迎加入QQ群”187042448“获取更多的软件编程、AI、机器学习、深度学习的资料。

卷积神经网络CNN

什么是卷积神经网络CNN
卷积神经网络由神经网络演变而来,神经网络是由感知机演变的,感知机是仿生中仿人类的神经网络提出的,这就是一个发展的过程。卷积神经网络是LeCun研究手写数字识别时提出的,具有下面三个特点:
(1)局部感知
(2)共享权重
(3)空间或时间下采样
卷积神经网络一般包括三种层:卷积层,池化层和全连接层,如下图所示的这样。
在这里插入图片描述

该图输入一张图片,通过卷积、Relu、池化和全连接操作,最后输出图像中物品所属的类别。
CNN的“基本运算”
(1)卷积
卷积在很多地方都用,这里就不多说了,深度学习中单通道卷积计算方式如下图所示。
在这里插入图片描述

图中的输入为8x8,卷积核为3×3的卷积,如果不做padding(即输入周边补零等操作),卷积后的输出尺寸会变小。如图中所示,左上角的3×3区域与卷积核对应位置相乘,就输出了瞄点位置(3×3区域的中心)的卷积结果,其他的位置计算是近似的。
(2)激活函数
激活函数用于提供非线性操作,增加模型的表达能力。常见的激活函数有sigmoid,tanh,Relu等,每种激活函数都有自己的优缺点,实际工程中可以根据业务需要选择。
sigmoid函数的致命缺点在于梯度消失。
tanh函数的输出以零为中心,但是仍然存在梯度消失的问题,计算量也比较大。
最常见的激活函数为Relu。Relu激活函数当输入 x<0 时,输出为 0,当 x> 0 时,输出为 x。函数的绘制曲线如下图所示。
在这里插入图片描述

Relu有效的解决了梯度消失的问题,但存在神经坏死的问题,当输入小于0的时候,Relu输出为0,在向后传到中,该神经元不会被重新激活,导致梯度无法更新,影响网络学习。
(3)池化
池化操作一般置于卷积操作之后,可以减小特征表示的空间大小,减少网络中的参数和计算量,有助于控制过拟合。池化操作的核大小一般为2×2,常用的池化操作包括最大池化和平均池化,最大池化较为常用。最大池化的操作下图所示。
在这里插入图片描述

最大池化就是选取2×2区域中的最大值输出。
(4)全连接
普通卷积获取局部特征,全连接则针对整个特征图计算卷积,获取的是全局信息,因此有全连接的网络需要固定大小的输入特征图。很多经典网络如VGG的全连接的参数量在整个模型的参数量中占比相当高,很多参数存在冗余,参数量大给模型训练和部署增加了难度。
循环神经网络
如果输入数据之间是有联系的,如翻译,CNN只能干瞪眼,因而针对时序特征引入了循环神经网络RNN。
RNN主要用于处理序列数据,也就是数据的前后有关系。RNN也具有神经网络的层(输入层、隐藏层和输出层),以及中间的激活函数等。普通的神经网络只建立层之间的连接,而RNN则在层之间的神经元之间也建立了权重的连接,RNN结构如下图所示。
在这里插入图片描述

如图所示,x表示输入,a表示激活,y表示输出。对任一时刻t,它的输出不仅与t时刻的输入有关,还和t-1时刻的输出有关。
传统的RNN存在计算较慢,在长时间上难以进行信息传递等问题,所以比较常用的为GRU和LSTM。
长短时记忆网络LSTM和门控循环单元GRU,两者内部都通过门(gate)调节信息流。LSTM和GRU只保留相关信息来进行预测,忘记不相关的数据,详细介绍可以参考图书中的讲述。

Guess you like

Origin blog.csdn.net/lxiao428/article/details/121113539