论文题目:Depthwise Separable Convolutions for Neural Machine Translation
第一遍阅读,简单做个笔记,持续更新
谈到智能对话系统,我们最熟悉的应该是基于LSTM + seq2seq + attention的模型了。
几乎一直以来处理序列问题都是LSTM/GRU在编码端或者解码端抽取文本信息,利用隐状态对信息的传递,使得LSTM可以整合整句话的信息。
随着CNN在图像领域的突破,CNN也逐渐被用于解决NLP问题,并且取得了不错的成绩。
比如,自回归卷积模型(auto-regressive convolutional models )在应用到语音,图像和文本生成任务上,已经取得了很好效果;甚至在处理sequence问题上已经超越了RNN。卷积不需要处理整个一段话,而是提供了一种处理非局部信息的有效方式。正如我们所知道的,CNN通常都是通过加深模型深度以增加效果,很明显随之而来就是参数暴增,训练难度加大。鉴于此问题,我们从深度分离卷积(depthwise separable convolutions )得到灵感,比如xception and mobilenets,应用到NLP领域,并取得了成功。
这篇论文提出的卷积seq2seq架构被称为SliceNet,在NLP的机器翻译任务上进行了测试。该架构有两个关键点:
1,depthwise的堆叠 + 分组卷积grouped + residual连接
2,去除掉空洞卷积 dilation,实际上separability特性已经可以取代掉这个之前CNN-seq2seq的重要组件了。
深度分离卷积可以分为两个部分:spatial and pointwise ;前者是作用在input的每一个channel上,并不像之前卷积计算会叠加所有channel;pointwise是1*1的核将spatial的结果进行channel方向的融合,并产生新的channel大小。这部分涉及的公式如下:
这种depthwise & seq2seq模型,由一系列离散的卷积单元units构成,每个unit通过训练能学习到特定的特征。这些units连续组装在一起,可以逐渐学习到越来越高的特征抽象随着网络深度的增加。该模型的意义在于专注每一层channel,然后将其融合在一起,这就是depthwise的特性。对比普通CNN同时计算all channel,属于对参数的低效或者无效利用。
上文也说了depthwise参数量小,那我们具体算算,贴一张论文中的截图如下:
我们就算前两个,第一行是普通卷积,k是核的size,c是输入输出的通道数,所以显然总参数量为k*c方;第二行是depthwise,spatial+pointwise=kc + c方。
下面讲一下该模型的结构图,如下所示:
该模型遵循卷积自回归,正如bytenet,wavenet中一样,输入和输出有同样的深度;该模型通过两个独立的自网络concat,然后被喂到解码端。在每一步,自回归解码器产生一个新的输出预测值,然后返回喂给编码器,进而预测输出。encoder & decoder 都有depthwise的堆叠,并且利用了attention机制。
本文暂时没有评论,来添加一个吧(●'◡'●)