佛山做pc端网站,小程序开发教程百度网盘资源,官方发布小程序开发小程序,jsp网站开发的教材Hi#xff0c;大家好#xff0c;我是半亩花海。本文主要将卷积神经网络#xff08;CNN#xff09;和循环神经网络#xff08;RNN#xff09;这两个深度学习主力军进行对比。我们知道#xff0c;从应用方面上来看#xff0c;CNN 用于图像识别较多#xff0c;而 RNN 用于… Hi大家好我是半亩花海。本文主要将卷积神经网络CNN和循环神经网络RNN这两个深度学习主力军进行对比。我们知道从应用方面上来看CNN 用于图像识别较多而 RNN 用于语言处理较多。CNN 如同眼睛一样正是目前机器用来识别对象的图像处理器。相应地RNN 犹如耳朵和嘴巴用于解析语言模式的数学引擎。 目录
一、卷积神经网络
1. 特征
2. 结构
二、循环神经网络
1. 网络结构
2. 应对梯度消失问题
三、CNN 与 RNN 的异同点
1. 相同点
2. 不同点
四、CNNRNN 的组合方式 我们可以通过形象的假设来理解这俩个神经网络模型
CNN 的假设——人类的视觉总是会关注视线内特征最明显的点。RNN 的假设——事物的发展是按照时间序列展开的前一刻发生的事物会对未来的事情的发展产生影响。
卷积神经网络通常用于计算机视觉中可以用来图像识别和图像分类。CNN 用于提取图像的空间特征通过不断的卷积和池化操作实现特征提取和降维。
循环神经网络通常用于自然语言处理和语音识别中可以用来处理时间序列数据。RNN 的主要思想是把前面的信息传递到后面这样网络就可以利用之前的信息做出预测能够处理序列中每个时间步的数据。 一、卷积神经网络
卷积神经网络Convolutional Neural NetworkCNN或ConvNet是一种具有局部连接、权重共享等特性的深层前馈神经网络。
1. 特征
局部连接在卷积层假设是第 层中的每一个神经元都只和前一层第 − 1 层中某个局部窗口内的神经元相连构成一个局部连接网络。权重共享一个卷积核只捕捉输入数据中的一种特定的局部特征因此如果要提取多种特征就需要使用多个不同的卷积核。空间或时间上的次采样。 2. 结构
一个卷积神经网络主要由以下 5 层组成 输入层Input layer卷积层CONV layer包含激活函数比如 ReLU、sigmoid、tanh 等池化层Pooling layer全连接层FC layer输出层Ouput layer 二、循环神经网络
循环神经网络RNNRecurrent Neural Network是一类用于处理序列数据的神经网络。
1. 网络结构
RNN 不是刚性地记忆所有固定长度的序列而是通过隐藏状态来存储之前时间步的信息。 可以看出典型的 RNN 是有环结构。一个典型的 RNN 网络架构包含一个输入一个输出和一个神经网络单元 。和普通的前馈神经网络的区别在于RNN 的神经网络单元不但与输入和输出存在联系而且自身也存在一个循环 / 回路 / 环路 / 回环 (loop)。这种回路允许信息从网络中的一步传递到下一步。
同时RNN 还能按时间序列展开循环 (unroll the loop) 为如下形式 由上图可知上一个时刻的网络状态将会作用于到下一个时刻的网络状态还表明 RNN 和序列数据密切相关。同时RNN 要求每一个时刻都有一个输入但是不一定每个时刻都需要有输出。
进一步地公式化 RNN 的结构。单个展开的 RNN 结构如下 RNN 的计算结构如下 由上述表示RNN 的经典的计算结构如下 在图中有一条单向流动的信息流是从输入单元到达隐藏单元的与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下RNNs 会打破后者的限制引导信息从输出单元返回隐藏单元这些被称为 “Back Projections”并且隐藏层的输入还包括上一隐藏层的状态即隐藏层内的节点可以自连也可以互连这实际上就是 LSTM。
循环神经网络的输入是序列数据每个训练样本是一个时间序列包含多个相同维度的向量。网络的参数如何通过训练确定这里就要使用解决 RNN 训练问题的 BPTTBack Propagation Through Time算法。
右侧为计算时便于理解记忆而产开的结构。简单说x 为输入层o 为输出层s 为隐含层而 t 指第几次的计算V、W、U为权重在 RNN 中每一层都共享参数U、V、W降低了网络中需要学习的参数提高学习效率。。 表示 t 时刻的输入 表示 t 时刻的隐状态 表示 t 时刻的输出。
输入单元input units{}
隐藏单元hidden units{}
输出单元output units{}
输入层 表示时刻 t 的输入。
第 t 次的中间的隐含层状态为 f 是非线性激活函数比如 tanh。
输出层 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 组合用于图像描述生成。 四、CNNRNN 的组合方式
CNN 特征提取用于 RNN 语句生成图片标注。RNN 特征提取用于 CNN 进行内容分类、视频分类。CNN 特征提取用于对话问答、图片问答。