动态记忆网络

原文
Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

简介

Question answering 是自然语言处理领域的一个复杂问题. 它需要对文本的理解力和推理能力. 大部分 NLP 问题都可以转化为一个 QA 问题. DMN 网络可以用来处理 QA 问题. DMN 的输入包含事实输入,问题输入,经过内部处理形成片段记忆,最终产生问题的答案.

DMN 可进行端到端的训练,并在多种任务上取得了 state-of-the-art 的效果:包括 QA(Facebook 的 bAbI 数据集),情感分析文本分类(Stanford Sentiment Treebank)和词性标注(WSJ-PTB).

动态记忆网络

DMN 由4个模块组成:

这里写图片描述
- 输入模块: 将原生文本输入编码成分布式向量表示. NLP 问题中,输入可以是一个句子,一个故事,电影评论,新闻文章或者维基百科文章等.
- 问题模块: 同输入模块类似,但输入是问题. 输出喂给片段记忆模块.
- 片段记忆模块: 片段记忆模块通过关注机制决定关注输入数据的那些部分,并根据之前的记忆和问题产生新的记忆.
- 回答模块: 根据最终记忆,产生问题的回答.

输入模块
  • 输入模块是一个 RNN 网络. 它的输入是 Work embedding(如通过 word2vec 或 GloVe 编码). 输入是 TI
个单词 w1,...,wTI
. 在每个时间点 t,RNN 更新其隐藏状态 ht=RNN(L[wt],ht1) . L 是 word embedding matrix. 在输入只有一个句子的情况下,输入模块输出 RNN 的所有隐藏状态. 在输入是多个句子的情况下,我们将所有句子拼接,并在每个句子末尾插入句末 token. RNN 每个句末 token 位置的隐藏状态作为输出. 输入模块的输出序列为 Tc 个 fact representation c. 其中 ct 是输出序列的第 t 个元素. 输入只有一个句子的情况下, TC=TI;输入多个句子的情况下, TC
  • 是句子个数.
  • RNN 的选择: 原生的 RNN 性能较差, GRU 和 LSTM 性能差不多,但 LSTM 的计算更加昂贵,所以一般使用 GRU.
问题模块

同输入模块类似,也是一个 RNN 网络.
- 在每个时间点 t,RNN 更新其隐藏状态 qt=RNN(L[wQt],qt1)

.
- 输出是最后隐藏节点 qTQ

. (不同于输入模块,输入模块的输出是多个隐藏节点)

片段记忆模块
  • 片段记忆模块在输入模块输出的事实 c 上迭代,更新内部的片段记忆. 记忆更新 mi=GRU(ei,mi1)
. 每个迭代都根据之前的记忆 mi1、问题q 和事实 c 产生新的片段 ei
关注机制.
– 构造一个门函数, git=G(ct,mm1,q).
– 隐藏层更新 hit=gitGRU(ct,hit1)+(1git)hit1
– 片段 ei=hiTC
– 门函数 G(c,m,q)=σ(W(2)tanh(W(1)z(c,m,q)+b(1))+b(2))
  • 是一个两层神经网络. 其中z(c,m,q) 是c,m,q 的特征向量.
回答模块
  • 回答模块也是一个 GRU 网络.
  • 初始值为 a0=mTM

输出为 yt=softmax(W(a)at)
隐藏状态 at=GRU([yt1,q],at1)
  • , 上次输出和问题一起作为输入
训练

最小化回答序列的交叉熵


转载:https://blog.csdn.net/javafreely/article/details/71994247

G
M
T
 Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
Text-to-speech function is limited to 200 characters
 
Options : History : Feedback : DonateClose
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值