深度学习打卡作业

分析前馈神经网络、卷积神经网络和循环神经网络的异同点。

前馈神经网络

常规前馈神经网络(FNN)。该网络不考虑输入数据可能具备的任何特定结构。尽管如此,它仍是非常强大的机器学习工具,尤其是与先进的正则化技术一起使用时。这些技术(稍后将会介绍)帮助解决人们处理「深度」网络时遇到的训练问题:神经网络有大量隐藏层,隐藏层非常难以训练(梯度消失和过拟合问题)。

前馈神经网络架构

深度学习打卡作业_第1张图片

FNN 由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。接下来我们将深入讲解这些特征。

FNN 很重要的一个概念就是加权平均过程,使用Sigmoid 函数,tanh,Rule函数作为激活函数。

 

卷积神经网络

深度学习打卡作业_第2张图片CNN 由若干个卷积和池化操作组成,通常跟随着一个或多个全连接层(与传统的 FNN 层相似)。

卷积运算是一种数学计算,和矩阵相乘不同,卷积运算可以实现稀疏相乘和参数共享,可以压缩输入端的维度。和普通DNN不同,CNN并不需要为每一个神经元所对应的每一个输入数据提供单独的权重。

与池化(pooling)相结合,CNN可以被理解为一种公共特征的提取过程,不仅是CNN大部分神经网络都可以近似的认为大部分神经元都被用于特征提取。

应用场景:虽然我们一般都把CNN和图片联系在一起,但事实上CNN可以处理大部分格状结构化数据(Grid-like Data)。举个例子,图片的像素是二维的格状数据,时间序列在等时间上抽取相当于一维的的格状数据,而视频数据可以理解为对应视频帧宽度、高度、时间的三维数据。

 

循环神经网络

深度学习打卡作业_第3张图片

虽然很多时候我们把这两种网络都叫做RNN,但事实上这两种网路的结构事实上是不同的。而我们常常把两个网络放在一起的原因是:它们都可以处理有序列的问题,比如时间序列等。

举个最简单的例子,我们预测股票走势用RNN就比普通的DNN效果要好,原因是股票走势和时间相关,今天的价格和昨天、上周、上个月都有关系。而RNN有“记忆”能力,可以“模拟”数据间的依赖关系(Dependency)。

为了加强这种“记忆能力”,人们开发各种各样的变形体,如非常著名的Long Short-term Memory(LSTM),用于解决“长期及远距离的依赖关系”。如下图所示,左边的小图是最简单版本的循环网络,而右边是人们为了增强记忆能力而开发的LSTM。



深度学习打卡作业_第4张图片

同理,另一个循环网络的变种 - 双向循环网络(Bi-directional RNN)也是现阶段自然语言处理和语音分析中的重要模型。开发双向循环网络的原因是语言/语音的构成取决于上下文,即“现在”依托于“过去”和“未来”。单向的循环网络仅着重于从“过去”推出“现在”,而无法对“未来”的依赖性有效的建模。

递归神经网络和循环神经网络不同,它的计算图结构是树状结构而不是网状结构。递归循环网络的目标和循环网络相似,也是希望解决数据之间的长期依赖问题。而且其比较好的特点是用树状可以降低序列的长度,从O(n)降低到O(log(n)),熟悉数据结构的朋友都不陌生。但和其他树状数据结构一样,如何构造最佳的树状结构如平衡树/平衡二叉树并不容易。

应用场景:语音分析,文字分析,时间序列分析。主要的重点就是数据之间存在前后依赖关系,有序列关系。一般首选LSTM,如果预测对象同时取决于过去和未来,可以选择双向结构,如双向LSTM。



RNN为何不能像前馈神经网络一样的方式进行多样本并行计算,他是通过怎样的方式进行并行的

反向延时参数更新,下一时刻参数的更新依赖于上一时刻更新得到的参数,因此无法像前馈神经网络一样进行并行计算。

都是向量和矩阵的乘法,没办法做到矩阵矩阵的相乘,没办法做到batch训练,无法发挥GPU性能

 

方法:把文本划分为N句话的t个样本,最长的序列为准,不够的补0,然后,所有的第一时刻一起运算,所有第二个时刻一起并行化运算。。。

 

参考

https://blog.csdn.net/weixin_41481113/article/details/83270272

https://www.zhihu.com/question/34681168

 

你可能感兴趣的:(深度学习打卡作业)