写点什么

动态记忆网络:向通用 NLP 更近一步

  • 2019-05-17
  • 本文字数:1732 字

    阅读完需:约 6 分钟

动态记忆网络:向通用NLP更近一步

本文需要读者对诸如 LSTM 和 GRU(包括 seq2seq 编码器-解码器架构)之类的递归神经网络有一定的基础。


众所周知,通用 NLP 的一大障碍是不同的任务(例如文本分类,序列标记和文本生成)需要不同的序列结构。 解决这个问题的一种方法是将这些不同的任务看作是问答形式的问题。比如,文本分类问题可以视为询问模型某段文本表达的情绪是什么,答案可以是“积极”,“消极”或“中立”之一。


论文《有问必答:用于自然语言处理的动态记忆网络》(Ask Me Anything: Dynamic Memory Networks for Natural Language Processing)介绍了一种用于问答形式问题的新型模块化结构。


对于复杂的问答式问题而言,LSTM 和 GRU 的记忆组件可能成为瓶颈。仅一次前馈就想将记忆组件中的所有相关信息积聚起来是非常困难的,因此,该论文背后的关键思想是允许模型根据需要任意访问数据。


尽管乍看起来,这一架构非常复杂,但是它可以分解为许多简单的组件。


模 型

语义记忆模块

语义记忆模块指的是词嵌入(词向量表示),例如 Glove 向量,即输入文本在被传递到输入模块之前被转换成的向量。

输入模块


输入模块即指标准的 GRU(或 BiGRU),每个句子的最后的隐状态是明确可访问的。

问题模块


问题模块也是标准的 GRU,其中待解答的问题作为输入项,并且最后的隐状态是可访问的。

情景记忆模块


这一模块可让输入数据进行多次前馈。在每次前馈时,输入模块中的句子嵌入表示(sentence embedding)作为输入传递到情景记忆模块中的 GRU。 此时,每个句子嵌入表示都会被赋予权重,权重与其被询问的问题的相关性相对应。


对于不同的前馈,句嵌入表示会被赋予不同的权重。 比如,在下面的例子中:



由于句子(1)与问题没有直接关系,因此可能不会在第一次被赋予高权重。 然而,在第一次前馈时,模型发现足球与约翰相关连,因此在第二次前馈时,句子(1)被赋予了更高权重。


在第一次前馈(或第一个“episode”)中,问题嵌入表示(question embedding)'q’被用于计算来自输入模块的句子嵌入表示(sentence embedding)的注意力分数。然后,将句子 sᵢ的注意力得分输入 softmax 层(使得注意力得分总和为 1)或单个 sigmoid 单元来获得 gᵢ。gᵢ是赋予句子 sᵢ的权重,并作为在 timestep i 中 GRU 的输出项的全局门(global gate)。


timestep i 和 episode t 的隐状态计算如下:



当 g = 0 时,直接复制隐状态:



论文中用 mᵗ来表示 GRU 第 t 个 episode 最后的隐状态,可被视为在第 t 个 episode 中发现的事实聚集。 从第二个 episode 开始,mᵗ被用于计算第 t+1 个 episode 中句子嵌入表示以及问题嵌入表示 q 的注意力分数。


计算过程如下:



论文采用了许多简单的度量方法来计算 sᵢ和 q 以及 sᵢ和 mᵗ-1 之间的相似性,即元素相乘法和绝对值。然后将连接的结果输入一个 2 层的神经网络来计算 sᵢ的注意力得分。 对于第一个 episode,m⁰被替换为 q。


episode 的数量可以是固定的、预定义的数字,也可以由网络本身确定。在后一种情况下,为输入附加一项特殊的前馈结束表示(end-of-passes representation)。如果门函数(gate function)选择该向量,则停止迭代。

回答模块


回答模块由解码器 GRU 组成。 在每个 timestep,之前的输出将与问题嵌入表示一同作为输入项输入该模块。



然后使用词汇表上的标准 softmax 生成输出。


解码器通过 m 个向量的一个函数(来自情景记忆模块的 GRU 计算的最后隐藏状态)进行初始化。

情感分析应用

该论文发表时,其模型取得了当时情绪分析领域的最先进结果。



例如,在下面示例中,模型会关注所有的形容词,在仅允许 1 次前馈时,模型会产生不正确的预测。 然而,当允许 2 次前馈时,该模型在第二次前馈时会对积极的形容词倾注非常高的注意力,并产生正确的预测。


(情感的注意力分析)

其它数据集的表现


替换模块

模块化的一个重要好处是,可以在不修改任何其他模块的情况下将一个模块替换为另一个模块,只要替换模块具备正确的接口。


论文《用于视觉和文本问答的动态记忆网络》展示了动态记忆网络在基于图像回答问题中的作用。


输入模块被另一模块替换,后者基于 CNN 的网络从图像中提取特征向量。然后提取的特征向量会像以前一样输入到事件记忆模块。





阅读原文:


https://towardsdatascience.com/a-step-towards-general-nlp-with-dynamic-memory-networks-2a888376ce8f


2019-05-17 08:005582

评论

发布
暂无评论
发现更多内容

华为云CDN加速为中小企业数字化效力

YG科技

华为云CDN:让网络延时,成为过去时!

YG科技

文心一言 VS chatgpt (12)-- 算法导论3.1 6~7题

福大大架构师每日一题

ChatGPT 文心一言

【Python实战】Python采集最低战力信息

BROKEN

三周年连更

【Python实战】Python采集电影评论

BROKEN

三周年连更

为什么企业们更偏好使用华为云CDN?

YG科技

华为云弹性公网IP服务,实惠又便捷!

轶天下事

华为云D-Plan解决方案助力汽车零部件质检智能化

轶天下事

Python中的哈希表

Echo_Wish

Python 数据结构 哈希表

c语言如何用宏来实现字符串到函数的映射?

linux大本营

C语言 映射函数

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

Go Mutex:保护并发访问共享资源的利器

陈明勇

Go golang mutex 互斥锁 三周年连更

斩获四奖|海泰方圆荣登网信自主创新尖锋榜

电子信息发烧客

自动回收内存:Go语言的GC垃圾回收机制详解

Jack

2022-04-24:用go语言重写ffmpeg的muxing.c示例。

福大大架构师每日一题

Go 音视频 ffmpeg

一个神奇的小工具,让URL地址都变成了"ooooooooo"

南城FE

JavaScript 前端 url

如何执行mysql文件

linux大本营

MySQL 数据库

TypeScript 函数 详解

程序员海军

Vue3 Typescript 三周年连更

华为云全球加速GA,让企业获得更优质的服务体验

平平无奇爱好科技

汽车制造数字化转型如何做?有哪些可行性案例?

优秀

数字化转型 汽车制造

智能感知编码优化与落地实践

Baidu AICLOUD

视频编解码

ShareSDK QQ平台注册

MobTech袤博科技

云环境中的灾备规划与分析

穿过生命散发芬芳

灾备 三周年连更

小程序容器技术保障车载业务生态中的应用安全

FinFish

小程序容器 小程序技术 车载业务 车载生态 车载应用

华为云WAF设置要塞,筑起企业网络安全万里长城

轶天下事

华为云CDN,助力企业数字化转型

YG科技

云计算

CouldNOTfindGMP(missing:GMP_LIBRARYGMP_INCLUDE_DIR)CallStack(mostrecentcallfirst)

linux大本营

Linux GNU cmake

点对点传输效率对比测试——镭速传输

镭速

对标阿里P8级Java面试题及答案整理(2023速成版,7天就能吃透)

收到请回复

华为弹性云服务器ECS,帮助企业节省成本上云成本

平平无奇爱好科技

云计算,

动态记忆网络:向通用NLP更近一步_AI&大模型_Anusha Lihala_InfoQ精选文章