ICML 2017: 基于卷积的Seq2Seq解决方案

news2024/11/26 10:03:30

一.文章概述

通常而言,Seq2Seq解决方案一般都采用循环神经网络,但在本文,作者提出了基于卷积神经网络的解决方案ConvS2S。基于卷积神经网络的方案有两大优势:计算并行化更高,优化更容易(非线性的数量是固定的)。

二.卷积框架

ConvS2S的框架如下图所示,在对源语句English(上)进行编码后,对4个德语目标词进行编码(左下)并计算并计算注意力。然后将注意力(中右)计算的条件输入添加到解码器状态,再预测目标单词(右下)。

Conv2S

2.1 位置编码

给定输入序列 x = ( x 1 , . . . , x m ) \mathbf{x} = (x_1,...,x_m) x=(x1,...,xm),其对应的嵌入表示为 w = ( w 1 , … , w m ) \mathbf{w}=\left(w_1, \ldots, w_m\right) w=(w1,,wm),其中 w j ∈ R f w_j \in \mathbb{R}^f wjRf。对于其嵌入表示,作者加上了绝对位置,即 e = ( w 1 + p 1 , … , w m + p m ) \mathbf{e}=\left(w_1+p_1, \ldots, w_m+p_m\right) e=(w1+p1,,wm+pm)

2.2 卷积块结构

Encoder和Decoder都采用卷积块(一维卷积+非线性层)。令Decoder第 l l l块的输出为 h l = ( h 1 l , … , h n l ) \mathbf{h}^l=\left(h_1^l, \ldots, h_n^l\right) hl=(h1l,,hnl),Encoder第 l l l块输出为 z l = ( z 1 l , … , z m l ) \mathbf{z}^l=\left(z_1^l, \ldots, z_m^l\right) zl=(z1l,,zml) 。给定输入 X ∈ R k × d X \in \mathbb{R}^{k \times d} XRk×d ,经过卷积神经网络的输出为 Y = [ A B ] ∈ R 2 d Y=[A B] \in \mathbb{R}^{2 d} Y=[AB]R2d。对于非线性层,作者采用的是门控线性单元,即:
v ( [ A B ] ) = A ⊗ σ ( B ) v([A B])=A \otimes \sigma(B) v([AB])=Aσ(B)
其中 σ ( B ) \sigma(B) σ(B)控制着当前上下文中哪些输入 A A A是相关的。

此外,为了能堆叠更深的卷积层,作者使用了残差连接。
h i l = v ( W l [ h i − k / 2 l − 1 , … , h i + k / 2 l − 1 ] + b w l ) + h i l − 1 h_i^l=v\left(W^l\left[h_{i-k / 2}^{l-1}, \ldots, h_{i+k / 2}^{l-1}\right]+b_w^l\right)+h_i^{l-1} hil=v(Wl[hik/2l1,,hi+k/2l1]+bwl)+hil1
为了避免decoder看到未来的信息,作者在输入的左侧和右侧都pad k − 1 k-1 k1 0 0 0,并删除了卷积输出末端的 k k k个元素。

h i l = v ( W l [ h i − k / 2 l − 1 , … , h i + k / 2 l − 1 ] + b w l ) + h i l − 1 h_i^l=v\left(W^l\left[h_{i-k / 2}^{l-1}, \ldots, h_{i+k / 2}^{l-1}\right]+b_w^l\right)+h_i^{l-1} hil=v(Wl[hik/2l1,,hi+k/2l1]+bwl)+hil1

2.3 Multi-step Attention

对于每个decoder层,作者引入了单独的注意力机制。作者组合当前解码器状态 h i l h_i^l hil和先前的目标元素 g i g_i gi来计算注意力:
d i l = W d l h i l + b d l + g i d_i^l=W_d^l h_i^l+b_d^l+g_i dil=Wdlhil+bdl+gi
对于解码层 l l l,状态 i i i和源元素 j j j的注意力 a i j l a_{i j}^l aijl是基于点积计算的:
a i j l = exp ⁡ ( d i l ⋅ z j u ) ∑ t = 1 m exp ⁡ ( d i l ⋅ z t u ) a_{i j}^l=\frac{\exp \left(d_i^l \cdot z_j^u\right)}{\sum_{t=1}^m \exp \left(d_i^l \cdot z_t^u\right)} aijl=t=1mexp(dilztu)exp(dilzju)
其中 z j u z_j^u zju表示最后一个编码层的输出。当前解码曾的输入 c i l c_i^l cil即为解码器输出和输入嵌入 e j e_j ej的加权和:
c i l = ∑ j = 1 m a i j l ( z j u + e j ) c_i^l=\sum_{j=1}^m a_{i j}^l\left(z_j^u+e_j\right) cil=j=1maijl(zju+ej)

上述注意力的计算方法与传统的seq2seq中的注意力机制有点不太相同,作者还添加了 e j e_j ej,其类似于键值存储网络,其中键是 z j u z_j^u zju ,值是 z j u + e j z_j^u+e_j zju+ej。编码器的输出 z j u z_j^u zju表示潜在的大输入上下文,而 e j e_j ej提供了特定输入元素的点信息,其对预测比较有效。

2.4 正则化策略

通过缩放残差模块的输出和注意力以确保整个网络的方差不会发生剧烈变化。

对于残差块,将残差块的输入和输出的总和乘以 0.5 \sqrt{0.5} 0.5 ,使总和的方差减半。

由注意力生成的条件输入 c i l c_i^l cil m m m个向量的加权和,作者通过乘以 m 1 / m m \sqrt{1 / m} m1/m 来抵消方差的变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AndroidStudio无法查看Compose重组次数?

印象中是一开始使用AndroidStudio LayoutInspector想查看Compose重组次数的时候,一开始折腾了下后来忘了这茬事了,最近🪜到期了,家里又换了台新的mac mini又看到这个问题😊,就想着给大家整理了一下解决方法…

Python+requests+unittest+excel实现接口自动化测试框架

一、框架结构: 工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求(runmethon.py) 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if heade…

win10,WSL的Ubuntu配python3.7手记

1.装linux 先在windows上安装WSL版本的Ubuntu Windows10系统安装Ubuntu子系统_哔哩哔哩_bilibili (WSL2什么的一直没搞清楚) 图形界面会出一些问题,注意勾选ccsm出的界面设置 win10安装Ubuntu16.04子系统,并开启桌面环境_win…

opencv: 解决保存视频失败的问题

摘要:opencv能读取视频,但保存视频时报错。 一、首先要确保已经下载了openh264.dll文件,否则保存的视频无法打开,详细可以浏览这个:opencv:保存视频。 二、保存视频时出现一下问题: OpenCV:…

自学Mysql调优笔记

Mysql性能调优学习 预计十天完成14/day 1. 存储引擎 存储引擎是基于表的,而不是基于库的 SHOW ENGINES --展示所有存储引擎1.1 InnoDB DML操作遵循ACID模型,支持事务。 行鸡锁,提供并发访问性能。 支持外键约束,保证数据完…

赢麻了!smardaten闷声干大事,竟然用无代码开发了复杂小程序!

本文目录 一、【前言】二、移动端项目实战:关爱云服务平台2.1 项目背景2.2 6大场景功能拆解(1)场景1-首页(2)场景2-找活动(3)场景3-找组织(4)场景4-找服务(5&…

自学网络安全———(黑客技术)

如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…

电压放大器在无损探伤中的应用研究

电压放大器是一种常见的电子设备,其主要作用是将低电平信号转换为高电平信号。在无损探伤中,电压放大器被广泛应用于信号增益和分析,以便更好地检测表面或内部缺陷。下面安泰电子Aigtek将详细介绍电压放大器在无损探伤中的应用研究。 电压放大…

电缆桥架填充计算表

一、规范要求 1、《建筑电气与智能化通用规范》(GB55024-2022)6.1.2: 导管和电缆槽盒内配电电线的总截面面积不应超过导管或电缆槽盒内截面面积的40%;电缆槽盒内控制线缆的总截面面积不应超过电缆槽盒内截面面积的50%。 2、《建筑…

asp.net core automapper的使用

1.安装automapper的nuget包 AutoMapper.Extensions.Microsoft.DependencyInjection 2.创建需要映射的类和转换后的类 public class studto{public int sn { get; set; }public string name { get; set; }public string sex { get; set; }public int age { get; set; }public s…

快速使用Spring Cache

哈喽~大家好,这篇我们来看看快速使用Spring Cache。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【日常学习上的分享】 🥉与这篇相关的文章: R…

数据结构之道:如何选择适合你的数据存储

文章目录 第1节:数据结构的基本原理1.1 时间复杂度和空间复杂度1.2 数据的访问方式1.3 数据的增删操作 第2节:常见的数据结构2.1 数组(Array)2.2 链表(Linked List)2.3 栈(Stack)2.4…

数字化卡券拉新怎么做?卡券营销系统如何裂变用户

卡券促销活动对于大众用户而言是一种常见的营销手段,也是一种推动产品销售的方式,针对不同类型的营销诉求,同类型的卡券活动也需要配置不同的落地手段,才能更好地抓住消费者的心理,达到增收的目的,如何借助…

Interceptor内存马

Interceptor是SpringMVC中的拦截器,类似于Servlet中的Filter,主要针对Controller层进行拦截请求。 Interceptor的注册过程 在DispatcherServlet#doDispatch方法中的会调用getHandler方法(可接Controller查找部分),在…

选择适合的项目管理工具,助力出海企业

当下全球化的加速推进,越来越多的企业开始寻求海外市场的机会,从而迎来了充满机遇的前景:市场多元化,降低单一市场风险,实现更稳健的增长;技术创新,不同地区的市场需求可能会激发新的技术创新&a…

通用CI/CD软件平台TeamCity推出代理终端功能,谁能从中获益?

JetBrains官方在TeamCity中推出代理终端:这项新功能专门用于帮助用户轻松查看代理上的系统日志、检查已安装的软件,以及直接从 TeamCity 的 UI 调试特定代理问题。 TeamCity是一个通用的 CI/CD 软件平台,可以实现灵活的工作流、协作和开发做…

增强for循环和一般for循环的对比使用

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。个人B站主页热爱技术的小郑 ,视频内容主要是对应文章的视频讲解形式。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘…

智能回答机器人的“智能”体现在哪里?

人工智能的广泛应用已经成为当今社会科技发展的趋势之一。通过人工智能技术,我们可以在不同领域中实现自动化、智能化和高效化,从而大大提升生产和生活效率。智能回答机器人的出现和使用便能很好的证明这一点。今天我们就来探讨一下智能会打机器人的“智…

全网最全Python系列教程(非常详细)---数值篇讲解(学Python入门必收藏)

🧡🧡🧡这篇是关于Python中数值的讲解,涉及到以下内容,欢迎点赞和收藏,你点赞和收藏是我更新的动力🧡🧡🧡 涉及到: 数值表现形式进制之间的转换常用操作 1 表…

C++与QML交互总结二

目录 1.CPP调用QML 1.1 QMetaObject::invokeMethod调用 1.2 CPP中的信号绑定qml中的槽 2.QML调用CPP 2.1 QML单实例注册 2.2 将类对象注册到QML的上下文中 2.3 QML信号调用CPP槽 3.QML中注入一个cpp实例 3.1qmlRegisterType 3.2QML_ELEMENT 4.附加属性: QML_ATTACHE…