因果卷积(causal)与扩展卷积(dilated)之An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
本文首发于https://www.cnblogs.com/fantastic123/p/9389128.html,这个博客也是我的,所以不是搬运他人的
author:gswycf
最近在看关于NLP(自然语言处理)方面的文章,(其实不是自己要看),anyway,看了一个“An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling“,讲到了:虽然人们现在都在用RNN和LSTm去处理序列问题(sequence modeling),但是明显最近几年这些模型在这些问题上出现了瓶颈,你们之前都说CNN不适合处理sequence modeling问题,但其实并不是的,作者提出了一个普适的CNNN模型,在多个序列问题上和之前的RNN和LSTM比较,结果发现,CNN在这方面的能力确实是被低估了,CNN建立的model要比之前人们之前用的RNN要好很多,而且简洁。
这篇blog并不是要讲那篇文章,我可能会单独写一篇(看有没有时间),这篇blog主要是结束那篇文章中提出的两个概念:因果卷积(causal)与扩展卷积(dilated)
因果卷积:
因为要处理序列问题(即要考虑时间问题,)就不能使用普通的CNN卷积,必须使用新的CNN模型,这个就是因果卷积的作用,看下面一个公式,对与序列问题(sequence modeling),主要抽象为,根据x1......xt和y1.....yt-1去预测yt,使得yt接近于实际值
我们根据图片来看下因果卷积的样子,下面这个图片来自:https://deepmind.com/blog/wavenet-generative-model-raw-audio/
上面的图片可以详细的解释因果卷积,但是问题就来,如果我要考虑很久之前的变量x,那么卷积层数就必须增加(自行体会)。。。卷积层数的增加就带来:梯度消失,训练复杂,拟合效果不好的问题,为了决绝这个问题,出现了扩展卷积(dilated)
扩展卷积:
对于因果卷积,存在的一个问题是需要很多层或者很大的filter来增加卷积的感受野。本文中,我们通过大小排列来的扩大卷积来增加感受野。扩大卷积(dilated convolution)是通过跳过部分输入来使filter可以应用于大于filter本身长度的区域。等同于通过增加零来从原始filter中生成更大的filter。
这就可以解决因果卷积带来的问题,在示意图中,卷积感受野扩大了1,2,4,8倍。扩大卷积(dilated convolution)可以使模型在层数不大的情况下有非常大的感受野。