2016-ICLR-Order Matters- Sequence to sequence for sets

news/2024/5/14 17:29:41/文章来源:https://blog.csdn.net/weixin_42486623/article/details/128997505

2016-ICLR-Order Matters- Sequence to sequence for sets


Paper: [https://arxiv.org/pdf/1511.06391.pdf](https://arxiv.org/pdf/1511.06391.pdf)
Code:

顺序重要性:集合的顺序到序列

摘要

许多需要从观察序列映射或映射到观察序列的复杂任务现在可以使用序列到序列(seq2seq)框架来制定,该框架使用链规则来有效地表示序列的联合概率。然而,在许多情况下,可变大小的输入和/或输出可能不会自然地表示为序列。因此,作者讨论 seq2seq 框架的扩展,该框架超越序列并以原则的方式处理输入集。此外,作者提出了一个损失,通过在训练期间搜索可能的顺序,处理输出集结构的缺乏。并展示了关于排序的主张的经验证据,以及对基准语言建模和解析任务的seq2seq框架的修改,以及两个人工任务 - 排序数字和估计未知图形模型的联合概率。

序列和集合的神经网络

考虑一个具有 nnn(Xi,Yi)i=1n(X_i, Y_i)^n_{i=1}(Xi,Yi)i=1n的给定训练集的通用监督任务,其中(Xi,Yi)(X_i, Y_i)(Xi,Yi)是输入的第 iiii 对及其相应的目标。序列到序列范式对应于 XiX_iXiYiY_iYi都由长度可能不同的序列表示的任务:Xi={x1i,x2i,...,xsii}X_i = \{x^i_1, x^i_2,...,x^i_{si}\}Xi={x1i,x2i,...,xsii}Yi={y1i,y2i,…,ytii}Y_i = \{y^i_1, y^i_2, …, y^i_{ti} \}Yi={y1i,y2i,,ytii}。在这种情况下,使用条件概率 P(Y∣X)P(Y |X)P(YX)对每个示例建模并使用链式法则将其分解如下

并将其实现为编码器递归神经网络 (RNN, 以按顺序读取每个 xs∈Xx_s \in XxsX,如下所示:

其中 hsh_shs 是编码器在时间 s 的状态,后跟解码器 RNN 以在给定当前状态 gtg_tgt 和之前的 yt−1y_{t−1}yt1 符号的情况下,一次生成一个 yt∈Yy_t \in YytY

输入集

原则上,当使用复杂编码器(如递归神经网络)时,顺序无关紧要,因为这些是通用近似器,可以从输入序列(例如,任何顺序的 n 元语法)对复杂特征进行编码。作者认为,顺序似乎很重要的原因是由于潜在的非凸优化和更合适的先验。并且输入数据向模型显示的顺序会影响学习性能。

注意力机制(重要,主要公式)

在此,作者采用了基于“content”的注意力。它具有以下特性:如果随机排序内存,从内存中检索到的向量不会改变。这对于正确处理输入集 XXX 本身至关重要。基于注意力机制的流程块使用以下功能:

其中 iii 通过每个内存向量 mim_imi(通常等于 X 的基数)进行索引,qtq_tqt 是一个查询向量,允许从内存中读取 rtr_trtfff 是一个从 mim_imiqtq_tqt 计算单个标量的函数(例如,点积),LSTM 是一个计算循环状态但不带输入的模型。qt∗q^∗ _tqt 是此 LSTM 演变的状态,通过将查询 qtq_tqt 与生成的注意力读出 rtr_trt 连接起来而形成。ttt 是指示要提供给解码器的状态所携带多少“处理步骤”的索引。请注意,排列 mim_imimi′m_{i′}mi 对读取向量 rtr_trt 没有影响。

读取、处理、写入

有三个组成部分:

  • 一个读取块,它使用一个小神经网络简单地将每个元素 xi∈Xx_i \in XxiX 嵌入到一个记忆向量 mim_imi(所有 iii 使用相同的神经网络)。
  • 一个进程块,它是一个没有输入或输出的LSTM,在存储器mim_imi上执行TTTT级计算。
  • 一个写块,它是一个 LSTM 指针网络,它接收 qT∗q^∗_TqT(作为从输入集产生输出所需的上下文),并指向 mim_imi的元素(隐式地, xix_ixi), 一次一个步骤。

输出顺序的重要性

已经考虑了编码输入集的问题; 把注意力转向输出表示。描述随机变量 Y 集合上的联合概率的链式规则可能是联合概率的最简单分解,它不会产生任意限制(例如条件独立性)。

结论

LSTM已被证明是表示可变长度顺序数据的强大模型,这要归功于它们能够处理合理的长期依赖关系,并且使用链式规则有效地分解联合分布。另一方面,有些问题表现为一组无序的元素,要么作为输入,要么作为输出;在其他一些情况下,数据由一些需要线性化才能馈送到 LSTM 的结构表示,并且可能有多种方法可以做到这一点。

代码

来自于torchdrug

class Set2Set(Readout):def __init__(self, input_dim, type="node", num_step=3, num_lstm_layer=1):super(Set2Set, self).__init__(type)self.input_dim = input_dimself.output_dim = self.input_dim * 2self.num_step = num_stepself.lstm = nn.LSTM(input_dim * 2, input_dim, num_lstm_layer)self.softmax = Softmax(type)def forward(self, graph, input):ensor: graph representations"""input2graph = self.get_index2graph(graph)hx = (torch.zeros(self.lstm.num_layers, graph.batch_size, self.lstm.hidden_size, device=input.device),) * 2 # [bi*num_lyers, batch, hz]query_star = torch.zeros(graph.batch_size, self.output_dim, device=input.device) #[seq_len, batch, input_dim]for i in range(self.num_step):query, hx = self.lstm(query_star.unsqueeze(0), hx) #[seq_len, bz, bi*hz], [bi*nlayers, batch, hz]query = query.squeeze(0)product = torch.einsum("bd, bd -> b", query[input2graph], input) #attention = self.softmax(graph, product) # batch内节点对每个batch的注意力output = scatter_add(attention.unsqueeze(-1) * input, input2graph, dim=0, dim_size=graph.batch_size)query_star = torch.cat([query, output], dim=-1)return query_star

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++创建多线程的方法总结

下个迭代有个任务很有趣,用大量的线程去访问一个接口,直至其崩溃为止,这就需要多线程的知识,这也不是什么难事,总结一下C中的多线程方法:std、boost、pthread、windows api。 目录 一、多线程预备知识 二…

基于SpringBoot实现ChatGPT-QQ机器人

概述 近期ChatGPT火爆全球,在其官方网站上也列举了非常全面的应用案例,仅仅上线两个月活跃用户数已经达到1亿,成为历史上用户数增长最快的面向消费者的应用 快速体验 OpenAI官网对外提供了标准的 API 接口,可以通过HTTP请求进行…

简单的密码加密

用户的密码必须被加密后再存储到数据库, 否则就存在用户账号安全问题用户使用的原始密码通常称之为"原文"或"明文", 经过算法的运算, 得到的结果通常称之为"密文"在处理密码加密时, 不可以使用任何加密算法, 因为所有加密算法都是可以被逆向运算…

centos学习记录

遇到的问题及其解决办法 centos7安装图形化界面 yum groupinstall ‘X Window System’ yum groupinstall -y ‘GNOME Desktop’ 安装完成后输入init 5进入图形化界面 centos7安装vmware-tools 第一步卸载open-vm-tools 输入命令 yum remove open-vm-tools 输入命令 reboot 在…

微前端基础

一、什么是微前端 微前端是一种软件架构,可以将前端应用拆解成一些更小的能够独立开发部署的微型应用,然后再将这些微应用进行组合使其成为整体应用的架构模式。微前端架构类似于组件架构,但不同的是,组件不能独立构建和发布&…

大数据时代的小数据神器 - asqlcell

自从Google发布了经典的MapReduce论文,以及Yahoo开源了Hadoop的实现,大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下,数据分析开始从过去的采样抽查变成全量整体,原先被抽样丢弃的隐藏…

网络安全实验室7.综合关

7.综合关 1.渗透测试第一期 url:http://lab1.xseclab.com/base14_2d7aae2ae829d1d5f45c59e8046bbc54/ 进入忘记密码页面,右键查看源码,发现一个手机号 解题思路:通过给admin用户绑定13388758688手机号码,然后再进行…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(16-40集)

严正声明! 重要的事情说一遍,本文章仅供分享,文章和代码都是开源的,严禁以此牟利,严禁侵犯尚硅谷原作视频的任何权益,我知道学习编程的人各种各样的心思都有,但这不是你对开源社区侵权的理由&am…

【算法题解】15. 设计最小栈

这是一道 中等难度 的题。 题目来自:leetcode 题目 设计一个支持 push ,pop ,top 操作,并能在 常数时间 内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void p…

驱动 | Linux | NVMe 不完全总结

本文主要参考这里 1’ 2 的解析和 linux 源码 3。 此处推荐一个可以便捷查看 linux 源码的网站 bootlin 4。 更新:2022 / 02 / 11 驱动 | Linux | NVMe 不完全总结NVMe 的前世今生从系统角度看 NVMe 驱动NVMe CommandPCI 总线从架构角度看 NVMe 驱动NVMe 驱动的文件…

详细解读503服务不可用的错误以及如何解决503服务不可用

文章目录1. 问题引言2. 什么是503服务不可用错误3 尝试解决问题3.1 重新加载页面3.2 检查该站点是否为其他人关闭3.3 重新启动设备3.3 联系网站4. 其他解决问的方法1. 问题引言 你以前遇到过错误503吗? 例如,您可能会收到消息,如503服务不可…

三种方式查看linux终端terminal是否可以访问外网ping,curl,wget

方法1:ping注意不要用ping www.google.com.hk来验证,因为有墙,墙阻止了你接受网址发回的响应数据。即使你那啥过,浏览器都可以访问Google,terminal里面也是无法得到响应 百度在墙内,所以可以正常拿到响应信…

sklearn降维算法1 - 降维思想与PCA实现

目录1、概述1.1 维度概念2、PCA与SVD2.1 降维实现2.2 重要参数n_components2.2.1 案例:高维数据的可视化2.2.2 最大似然估计自选超参数2.2.3 按信息量占比选超参数1、概述 1.1 维度概念 shape返回的结果,几维几个方括号嵌套 特征矩阵特指二维的 一般来…

truffle 创建测试合约并部署到测试网络

1、npm 安装truffle npm install -g truffle2、创建truffle项目 mkdir imooc-on-blockchain-truffle && cd imooc-on-blockchain-truffle3、初始化truffle目录,会生成如下几个目录 contracts 存放.sol合约文件migrations 部署脚本目录test 测试文件目录t…

【GlobalMapper精品教程】045:空间分析工具(2)——相交

GlobalMapper提供的空间分析(操作)的方法有:交集、并集、单并集、差异、对称差集、相交、重叠、接触、包含、等于、内部、分离等,本文主要讲述相交工具的使用。 文章目录 一、实验数据二、符号化设置三、相交运算四、结果展示五、心灵感悟一、实验数据 加载配套实验数据(…

分布式之分布式事务V2

写在前面 本文一起来看下分布式环境下的事务问题,即我们经常听到的分布式事务问题。想要解决分布式事务问题,需要使用到分布式事务相关的协议,主要有2PC即两阶段提交协议,TCC(try-confirm-cancel)&#xf…

html的表单标签(form)

目录标题1、表单标签主要有三大类:2、表单标签中常见的属性3、例子代码及结果4、注意:5、表单中特殊的属性表单标签可以用来数据交互,而前面学的六个标签只能发送不能接收。 表单标签的作用就是数据交互1、表单标签主要有三大类: …

ImageMagick任意文件读取漏洞(CVE-2022-44268)

0x00 前提 前几天爆出一个 ImageMagick 漏洞 ,可以造成一个任意文件读取的危害比较可观,最近有时间来复现学习一下 主要是影响的范围很大,很多地方都有这个问题,需要来学习一下 0x01 介绍 ImageMagick 是一个免费的开源软件套…

SpringMVC:拦截器(12)

拦截器1. 拦截器概念2. 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1: 创建拦截器类步骤2: 配置拦截器类步骤3: SpringMVC添加SpringMvcSupport包扫描和interceptor包扫描步骤4: 简化SpringMvcSupport的编写5 测试3. 拦截器参数解析(了解)3.1 前置处理…

【Call for papers】SIGCOMM-2023(CCF-A/计算机网络/2023年2月15日截稿)

ACM SIGCOMM is the flagship annual conference of the ACM Special Interest Group on Data Communication (SIGCOMM). ACM SIGCOMM 2023, the 37th edition of the conference series, will be held in New York City, US, September 10 - 14, 2023. 文章目录1.会议信息2.时…