自用~~笔记~~
知识补充:
空洞卷积(膨胀卷积)——Dilated Conv
在标准卷积的基础上注入空洞,以此来增加感受野(reception field)。因此增加一个超参:膨胀率,指kernel的间隔数量。
因果卷积
传统的CNN无法直接处理sequence模型这种序列问题,所以使用因果卷积,其作用就是解决序列问题。
膨胀因果卷积
膨胀非因果卷积
Wavenat
wavenet是一种全卷积的模型,包含了多个多层如下dilated的结构,随着dilated conv深度增加,来指数性地增大感受野,捕获序列之间较长的时间关系。
如图,隐层中每一层的节点都会把该原来的值和通过激活函数的值相加后传递给下一层,其中1x1的卷积核用来实现降通道数的操作。然后每一个隐层的过激活函数后的结果相加做一系列操作后传给输出层。
wavenet是使用在语音信号上发表的。
TCN
网络结构:
上图(b)为整体网络结构分为左边和右边两部分:
- 左边:Dilated Causal Conv ---> WeightNorm--->ReLU--->Dropout--->Dilated Causal Conv ---> WeightNorm--->ReLU--->Dropout 即为:(Dilated Causal Conv ---> WeightNorm--->ReLU--->Dropout)*2
分别对上部分讲解(这里除了因果膨胀卷积外,几乎可以说和Resnet一样,去看resnet就很好理解了,然后把卷积换成因果膨胀卷积)
残差模块参考:ResNet详解_qq_45649076的博客-CSDN博客_resnet
残差模型:
由上上图(a)为TCN结构的核心,卷积+残差,作者命名为Residual block,每个block有两个卷积操作和一个残差操作。
由下图左中每一层到下一层,都会两个卷积和一个残差操作,并不是一个残差操作。
并且在d=1d=1时,空洞卷积退化为普通的卷积,如右图。
可以看出来,残差结构替代了TCN层与层之间的简单连接,由于 x和 F(x)之间的通道数可能不一样,所以这里设计了一个 1 × 1Conv来对x做一个简单的变换,使得变换后的 x与F(x)可以相加。其实这里的图都有一定的欺骗性,每一层每个时刻只有一个网格并不代表这一时刻的通道数等于1
残差块的改进:
变为:
1. 因果膨胀卷积
2. weightnorm
权重归一化,对权重值进行归一化。
模型优化学习:模型优化之Weight Normalization - 知乎
优点:
- 时间开销小,运算速度快
- 引入更少噪声
- weightnorm是通过重写深度网络的权重来进行加速的,没有引入对minibatch的依赖
3.ReLU 激活函数
4. Dropout 丢弃
防止过拟合,提高模型运算速率。
最后采用了全卷积网络(这样输入输出维度会一致)。
所以整体结构就是:
输入数据,整体有n-1次操作,每次都是两次卷积+一次残差,每次卷积有一定的k和d大小。
优点:
- 并行性。对比RNN可以并行处理
- 感受野灵活。
- 稳定的梯度。减少梯度爆炸和消失的问题。
- 内存更低。
缺点:
- TCN在迁移学习方面没有很强的适应能力。因为其感受野不够大,在将一个模型从一个对记忆信息需求量少的问题迁移到一个需要更长记忆的问题时。
- 单箱结构
- 卷积大小还是相比transformer任意长度的相关信息都可以抓取到的特性差。
TCN源码解读
参考链接:
时间卷积网络(TCN):结构+pytorch代码_Leon_winter的博客-CSDN博客_tcn
时域卷积网络TCN详解:使用卷积进行序列建模和预测_deephub的博客-CSDN博客_tcn网络
TCN(Temporal Convolutional Network)时间卷积网络pytorch实战 - 朴素贝叶斯 - 博客园
TCN论文及代码解读总结_我是chios的博客-CSDN博客_tcn论文