Press "Enter" to skip to content

深度学习——CV、CNN、RNN

一、计算机视觉

 

1. 边缘检测(edge detection)

 

在 大多数 时候 图像的边缘 可以 承载大部分的信息 ,并且 提取边缘 可以 除去 很多 干扰信息 , 提高处理数据的效率 。其包含了 垂直边缘检测 (Vertical edge detection)和 水平边缘检测 (Vertical edge detection)等等

 

垂直边缘检测是将 输入图片 通过一种 卷积核 进行 运算 后得到一张 新的图片 ,在图片中将 垂直边缘显示 。 水平边缘检测 通过另一种 卷积核 运算,最后 输出的图片把水平边缘显示

 

正边和负边,这实际分别就是 由亮到暗 与 由暗到亮 的区别

 

2. padding

 

他的作用是:

 

 

    1. 为了解决 经过多次卷积 后 图像变得很小 的情况

 

    1. 为了尽可能的 保存原图片的边缘信息

 

 

padding的三种方式: full,same,valid

 

full模式的意思是, 从filter和image刚相交开始做卷积 ,白色部分为填0。

 

这里的same是指卷积之后 输出的feature map尺寸保持不变(相对于输入图片) ,此时filter的移动范围比full更小了。

 

valid是指 不对原图进行padding,直接进行卷积运算 ,可见filter的移动范围较same更小了。

 

3.卷积步长(Strided convolution)

 

卷积步长是指 每次移动过滤器的距离

 

4. CNN的层类型

 

卷积神经网络CNN的结构 一般包含这几个层 :

 

输入层:用于 数据的输入

 

卷积层:使用 卷积核 进行 特征提取和特征映射

 

池化层:进行下采样, 对特征图稀疏处理 ,减少数据运算量。其中包含 Max pooling和Average polling 。Max pooling:取“池化视野”矩阵中的 最大值 ;Average pooling:取“池化视野”矩阵中的 平均值

 

全连接层:通常在 CNN的尾部 进行重新拟合, 减少特征信息的损失

 

输出层:用于 输出结果

 

当然中间还可以使用一些其他的功能层:

 

归一化层(Batch Normalization):在CNN中对 特征的归一化

 

切分层:对某些(图片)数据的进行 分区域的单独学习

 

融合层:对 独立进行特征学习的分支 进行 融合

 

二、循环神经网络-RNN(Recurrent Neural Networks)

 

1. 为什幺需要RNN(循环神经网络)

 

普通神经网络都 只能单独的处理一个个的输入 , 前一个输入 和 后一个输入 是完全没有关系的。但是, 某些任务 需要能够 更好的处理序列的信息 ,即 前面的输入和后面的输入是有关系的。

 

2. RNN结构

 

这个网络在 t时刻 接收到 输入 x t x_t x t ​ 之后 , 隐藏层 的值是 s t s_t s t ​ , 输出值 是 o t o_t o t ​ 。关键一点是, s t s_t s t ​ 的值不仅仅取决于 x t x_t x t ​ ,还取决于 s t − 1 s_{t-1} s t − 1 ​

 

3. RNN结构的类型

 

一对一、一对多、多对一、多对多(输出与输出相等或不等)、注意力结构

 

4. 梯度爆炸的问题

 

梯度爆炸更容易处理一些, 因为梯度爆炸的时候 ,我们的 程序会收到NaN错误 。我们也可以 设置 一个 梯度阈值 , 当梯度超过这个阈值的时候可以直接截取。

 

5. 梯度消失的问题

 

 

    1. 合理的初始化权重值 ,以躲开梯度消失的区域

 

    1. 使用 relu代替sigmoid和tanh 作为激活函数

 

    1. 使用 长短时记忆网络(LSTM) 和 Gated Recurrent Unit(GRU) ,这是最流行的做法

 

 

①长短时记忆网络(Long Short Term Memory Network——LSTM)

 

LSTM用 两个门 来控制 单元状态c的内容 ,一个是 遗忘门(forget gate) ,它决定了 上一时刻的单元状态 c t − 1 c_{t-1} c t − 1 ​ 有多少保留到当前时刻 c t c_{t} c t ​ ;另一个是 更新门(update gate) ,它决定了 当前时刻网络 c ~ t \tilde{c}_{t} c ~ t ​ 的输入有多少保存到单元状态 c t c_{t} c t ​ 。LSTM用 输出门(output gate) 来控制 单元状态 c t c_{t} c t ​ 有多少输出到LSTM的当前输出值 a t a_{t} a t ​ 。

 

②门控循环单元(GRU)

 

GRU (Gated Recurrent Unit) 是 LSTM的一种变体 ,也许是最成功的一种。 它对做了很多简化,同时却保持着和LSTM相同的效果。

 

GRU有两个有 两个门 ,即 一个重置门(reset gate)和一个更新门(update gate) 。从直观上来说, 重置门 决定了 如何将新的输入信息与前面的记忆相结合 , 更新门 定义了 前面记忆保存到当前时间步的量。

 

下图中 z为更新门,r为重置门 , r t r_t r t ​ 代表 h t − 1 h_{t-1} h t − 1 ​ 与 h ~ t \tilde{h}_{t} h ~ t ​ 之间的相关性

 

下图是简化的GRU(一个门):

 

 

三、双向循环神经网络-BRNN(Bidirectional Recurrent Neural Networks)

 

由于 标准的循环神经网络(RNN) 在时序上处理序列,他们往往 忽略了未来的上下文信息 。一种很显而易见的 解决办法 是给网络 加入未来的上下文信息 。理论上,M可以非常大来捕获所有未来的可用信息,但事实上发现如果M过大,预测结果将会变差。

 

双向循环神经网络(BRNN)的基本思想是使 每一个训练序列的正向和反向 形成 两个循环神经网络(RNN) ,而且这两个都连接着 一个输出层 。这个结构提供给 输出层 在输入序列中每一个点的 完整的过去和未来的上下文信息。

 

四、深层循环神经网络(Deep RNN)

 

深层循环神经网络是为了 增强模型的表达能力 而网络中设置了 多个循环层

 

本文只用于个人学习与记录,侵权立删

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注