深度学习——CV、CNN、RNN、梯度消失与梯度爆炸、LSTM、GRU、BRNN、上采样层、attention结构、transformer结构、bert结构
一、计算机视觉
1. 边缘检测(edge detection)
在大多数时候图像的边缘可以承载大部分的信息,并且提取边缘可以除去很多干扰信息,提高处理数据的效率。其包含了垂直边缘检测(Vertical edge detection)和水平边缘检测(Vertical edge detection)等等
垂直边缘检测是将输入图片通过一种卷积核进行运算后得到一张新的图片,在图片中将垂直边缘显示。水平边缘检测通过另一种卷积核运算,最后输出的图片把水平边缘显示
正边和负边,这实际分别就是由亮到暗与由暗到亮的区别
2. padding(下采样)
他的作用是:
- 为了解决经过多次卷积后图像变得很小的情况
- 为了尽可能的保存原图片的边缘信息
padding的三种方式:full,same,valid
①full
full模式的意思是,从filter和image刚相交开始做卷积,白色部分为填0。
②same
这里的same是指卷积之后输出的feature map尺寸保持不变(相对于输入图片),此时filter的移动范围比full更小了。
③valid
valid是指不对原图进行padding,直接进行卷积运算,可见filter的移动范围较same更小了。
3.卷积步长(Strided convolution)
卷积步长是指每次移动过滤器的距离
4. CNN的层类型
卷积神经网络CNN的结构一般包含这几个层:
输入层:用于数据的输入
卷积层:使用卷积核进行特征提取和特征映射
池化层:进行下采样,对特征图稀疏处理,减少数据运算量。其中包含Max pooling和Average polling。Max pooling:取“池化视野”矩阵中的最大值;Average pooling:取“池化视野”矩阵中的平均值
全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失
输出层:用于输出结果
当然中间还可以使用一些其他的功能层:
归一化层(Batch Normalization):在CNN中对特征的归一化
切分层:对某些(图片)数据的进行分区域的单独学习
融合层:对独立进行特征学习的分支进行融合
5. 上采样层(upsampling)
上采样有三种方式
①interpolate
将输入矩阵进行reshape到一个想要的尺寸,然后通过最邻近插值或双线性插值来计算每个点的值
nn.functional.interpolate(input, size=None, scale_factor=None, mode=‘nearest’, align_corners=None)
②deconvolution
反卷积,实现上采用转置卷积核的方法,又称作转置卷积 (transposed convolution)
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, bias=True)
③uppooling
反池化,在池化过程中,记录下max-pooling在对应kernel中的坐标,在反池化过程中,将一个元素根据kernel进行放大,根据之前的坐标将元素填写进去,其他位置补0
6. attention结构
对于全局信息,注意力机制会重点关注一些特殊的目标区域,也就是所谓的注意力焦点,进而利用有限的注意力资源对信息进行筛选,提高信息处理的准确性和效率
二、循环神经网络-RNN(Recurrent Neural Networks)
1. 为什么需要RNN(循环神经网络)
普通神经网络都只能单独的处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。
2. RNN结构
这个网络在t时刻接收到输入
x
t
x_t
xt之后,隐藏层的值是
s
t
s_t
st,输出值是
o
t
o_t
ot。关键一点是,
s
t
s_t
st的值不仅仅取决于
x
t
x_t
xt,还取决于
s
t
−
1
s_{t-1}
st−1
3. RNN结构的类型
一对一、一对多、多对一、多对多(输出与输出相等或不等)、注意力结构
4. 梯度爆炸的问题
梯度爆炸更容易处理一些,因为梯度爆炸的时候,我们的程序会收到NaN错误。我们也可以设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取。
5. 梯度消失的问题
- 合理的初始化权重值,以躲开梯度消失的区域
- 使用relu代替sigmoid和tanh作为激活函数
- 使用长短时记忆网络(LSTM) 和 Gated Recurrent Unit(GRU),这是最流行的做法
①长短时记忆网络(Long Short Term Memory Network——LSTM)
LSTM用两个门来控制单元状态c的内容,一个是遗忘门(forget gate),它决定了上一时刻的单元状态
c
t
−
1
c_{t-1}
ct−1有多少保留到当前时刻
c
t
c_{t}
ct;另一个是更新门(update gate),它决定了当前时刻网络
c
~
t
\tilde{c}_{t}
c~t的输入有多少保存到单元状态
c
t
c_{t}
ct。LSTM用输出门(output gate)来控制单元状态
c
t
c_{t}
ct有多少输出到LSTM的当前输出值
a
t
a_{t}
at。
②门控循环单元(GRU)
GRU (Gated Recurrent Unit)是LSTM的一种变体,也许是最成功的一种。它对做了很多简化,同时却保持着和LSTM相同的效果。
GRU 有两个有两个门,即一个重置门(reset gate)和一个更新门(update gate)。从直观上来说,重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。
下图中z为更新门,r为重置门,
r
t
r_t
rt代表
h
t
−
1
h_{t-1}
ht−1与
h
~
t
\tilde{h}_{t}
h~t之间的相关性
下图是简化的GRU(一个门):
三、双向循环神经网络-BRNN(Bidirectional Recurrent Neural Networks)
由于标准的循环神经网络(RNN)在时序上处理序列,他们往往忽略了未来的上下文信息。一种很显而易见的解决办法是给网络加入未来的上下文信息。理论上,M可以非常大来捕获所有未来的可用信息,但事实上发现如果M过大,预测结果将会变差。
双向循环神经网络(BRNN) 的基本思想是使每一个训练序列的正向和反向 形成 两个循环神经网络(RNN),而且这两个都连接着 一个输出层。这个结构提供给 输出层 在输入序列中每一个点的完整的过去和未来的上下文信息。
四、深层循环神经网络(Deep RNN)
深层循环神经网络是为了增强模型的表达能力而网络中设置了多个循环层
五、序列任务中的Attention结构
1. attention产生原因
通常使用传统编码器-解码器的RNN模型,来解决序列到序列的任务,但是这存在一个问题:
- 输入序列不论长短都会被编码成一个固定长度的向量表示,而由于不同的时间片或者空间位置的信息量明显有差别,利用定长表示则会带来误差的损失
而Attention机制则通过对输入信息进行选择性的学习,来建立序列之间的关联
2. Attention具体内容
3. Self-attention具体内容
注意:普通的Attention机制都是求输出Target句子中某个单词和输入Source句子每个单词之间的相似度,而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制。
4. Multi-headed Self-attention具体内容
一个Multi-Head Attention 包含多个 Self-Attention 层
Multi-headed Self-attention注意力机制-详情信息点我
六、Transformer结构
Transformer 模型使用了 Self-Attention 机制,不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息
七、Bert结构
语言模型:通过在海量的语料的基础上运行自监督学习方法为单词学习一个好的特征表示4
〉使用了Transformer作为算法的主要框架,能更彻底的捕捉语句中的双向关系;使用了Mask Language Model(MLM)和Next Sentence Prediction(NSP)的多任务训练目标;
使用更强大的机器训练更大规模的数据
使BERT的结果达到了全新的高度
Google开源了BERT模型,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。
八、其他
1. 参考链接
- https://zhuanlan.zhihu.com/p/47063917
- https://zhuanlan.zhihu.com/p/365386753
- https://zhuanlan.zhihu.com/p/505105707
- https://www.jianshu.com/p/9b87b945151e
本文只用于个人学习与记录,侵权立删
更多推荐
所有评论(0)