当前位置: 首页 > news >正文

通俗理解记忆网络(Memory Network)——从0到1彻底掌握End-to-End MemNN

目录

  • 1. 为什么Memory Network如此重要?
  • 2. Memory Networks vs 传统RNN/LSTM
  • 3. 原始Memory Networks(2014,非端到端)
  • 4. End-to-End Memory Networks(MemN2N)核心详解
    • 4.1 单跳(Single Hop)完整架构
    • 4.2 输入编码(Embedding + Position Encoding + Temporal Encoding)
    • 4.3 Attention机制推导
    • 4.4 多跳(Multi-Hop)推理过程
  • 5. 数学公式完整推导
  • 6. PyTorch完整可运行代码(单跳 + 3-Hop + PE + TE)
  • 7. bAbI数据集实验复现与结果分析
  • 8. 主流变体对比(DMN / Key-Value MemNN / Memformer)
  • 9. 局限性、为什么被Transformer取代?RAG的继承
  • 10. 总结 + 思考题

1. 为什么Memory Network如此重要?

2014-2015年,Facebook AI Research(FAIR)连续推出两篇革命性论文:

  • Memory Networks(Weston et al., ICLR 2015)
  • End-to-End Memory Networks(Sukhbaatar et al., NeurIPS 2015)

这是第一个真正可微分的外部记忆 + 多跳推理框架,奠定了现代Memory-Augmented Neural NetworksRetrieval-Augmented Generation (RAG)的理论基础。

它首次在bAbI数据集上实现了接近人类水平的多跳推理(3-hop以上),远超当时的LSTM。

2. Memory Network 与 RNN/LSTM 的本质区别

维度LSTM/GRUMemory Network (MemNN)
记忆方式隐状态 h_t(固定维度)外部显式Memory(N个向量)
推理方式单步顺序多跳(Multi-hop)注意力
长距离依赖衰减严重可通过多次跳跃直接访问
可解释性高(可可视化attention)
外部知识注入困难天然支持

4. End-to-End Memory Networks 详解(最重要章节)

4.1 单跳架构图(经典原图)

核心流程(Single Hop)

  1. Story → 嵌入为 Memory M(N×d)
  2. Question → 嵌入为 u(d维)
  3. Attention:p_i = softmax(u^T m_i)
  4. o = Σ p_i * c_i
  5. 最终预测:â = softmax(W (o + u))
4.2 输入模块(Input Module)进阶技巧
  • Bag-of-Words(最基础)
  • Position Encoding (PE):强烈推荐!解决词序问题
    P E i , j = ( 1 − i N ) ⋅ ( 1 − j d ) + i N ⋅ j d ( j 为维度 ) PE_{i,j} = (1 - \frac{i}{N}) \cdot (1 - \frac{j}{d}) + \frac{i}{N} \cdot \frac{j}{d} \quad (j \text{为维度})PEi,j=(1Ni)(1dj)+Nidj(j为维度)
  • Temporal Encoding:给每个sentence加上时间向量 T_i(可学习)
4.3 多跳(Multi-Hop)机制(最强大之处)

多跳更新规则
u k + 1 = u k + o k u^{k+1} = u^k + o^kuk+1=uk+ok
其中 o^k 是第k跳的输出向量

通常3-hop即可解决bAbI中绝大多数多跳任务。


5. 完整数学公式推导

设:

  • Story有N个sentence,每个sentence有T个词
  • Embedding维度 d = 50 或 100

嵌入矩阵

  • A, B, C, W ∈ R^{V × d} (V为词表大小)

第k跳计算
m i k = A k x i + T i A ( Input Memory ) m_i^k = A^k x_i + T_i^A \quad (\text{Input Memory})mik=Akxi+TiA(Input Memory)
c i k = C k x i + T i C ( Output Memory ) c_i^k = C^k x_i + T_i^C \quad (\text{Output Memory})cik=Ckxi+TiC(Output Memory)
p i k = softmax ( ( u k ) T m i k ) p_i^k = \text{softmax}( (u^k)^T m_i^k )pik=softmax((uk)Tmik)
o k = ∑ i = 1 N p i k c i k o^k = \sum_{i=1}^N p_i^k c_i^kok=i=1Npikcik
u k + 1 = u k + o k u^{k+1} = u^k + o^kuk+1=uk+ok

最终:
a ^ = softmax ( W ( u K + o K ) ) \hat{a} = \text{softmax}(W (u^K + o^K))a^=softmax(W(uK+oK))


6. PyTorch完整高质量实现(推荐收藏)

importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassEndToEndMemoryNetwork(nn.Module):def__init__(self,vocab_size,embed_dim=64,num_hops=3,max_sent=20):super().__init__()self.embed_dim=embed_dim self.num_hops=num_hops self.max_sent=max_sent# Embedding (A, B, C)self.A=nn.Embedding(vocab_size,embed_dim)self.B=nn.Embedding(vocab_size,embed_dim)self.C=nn.Embedding(vocab_size,embed_dim)# 可选:Position Encoding + Temporal Encodingself.position_encoding=self._generate_position_encoding(max_sent,embed_dim)self.temporal_A=nn.Parameter(torch.randn(max_sent,embed_dim))self.temporal_C=nn.Parameter(torch.randn(max_sent,embed_dim))self.W=nn.Linear(embed_dim,vocab_size)def_generate_position_encoding(self,max_sent,dim):# 经典Position Encoding from paperencoding=torch.zeros(max_sent,dim)foriinrange(max_sent):forjinrange(dim):ifj%2==0:encoding[i,j]=(1-i/max_sent)-(j/dim)*(i/max_sent)else:encoding[i,j]=(1-i/max_sent)+(j/dim)*(i/max_sent)returnnn.Parameter(encoding,requires_grad=False)defforward(self,story,question):# story: (batch, num_sent, num_word)batch_size,num_sent,num_word=story.shape# Input Memory mm=self.A(story)# (batch, sent, word, d)m=m.sum(dim=2)+self.position_encoding[:num_sent]+self.temporal_A[:num_sent]# Question embedding u0u=self.B(question).sum(dim=1)# (batch, d)forhopinrange(self.num_hops):# Attentionu_temp=u.unsqueeze(1)# (batch, 1, d)attn=torch.matmul(u_temp,m.transpose(1,2))# (batch, 1, sent)p=F.softmax(attn.squeeze(1),dim=-1)# (batch, sent)# Output Memory cc=self.C(story).sum(dim=2)+self.position_encoding[:num_sent]+self.temporal_C[:num_sent]o=torch.matmul(p.unsqueeze(1),c).squeeze(1)# (batch, d)u=u+o# Update query vector# Final predictionlogits=self.W(u)returnlogits

7. bAbI 10k 实验结果(经典数据)

模型Mean Error (%)Failed Tasks (≤95%)
LSTM48.720
MemNN (Strong Supervision)6.82
MemN2N (1-hop)18.414
MemN2N (3-hop)12.18
MemN2N (3-hop + PE + TE)6.92
DMN+5.81

结论3-hop + Position Encoding + Temporal Encoding是MemN2N的甜点配置。


9. 为什么后来被Transformer + RAG 取代?

Memory Network 的致命局限

  1. Memory 固定大小(N=20~50),无法处理长文档
  2. 每次都全Attention,O(N) 计算开销
  3. 无法处理超长上下文(>512 token)

现代继承者

  • RAG:用Dense Retriever + LLM(Memory Network的精神继承者)
  • Memformer/Infinite Attention
  • Transformer-XL + Memory
  • Longformer / Reformer

总结

End-to-End Memory Networks 是深度学习历史上第一个真正实现“可微分外部记忆 + 多跳推理”的里程碑模型。

虽然已被Transformer时代超越,但它的思想(External Memory + Soft Attention + Multi-Hop)深刻影响了:

  • RAG
  • Memory-Augmented LLMs
  • Agent Memory
  • Knowledge Graph Reasoning

思考题(欢迎评论区讨论)

  1. 如果把Memory Network的Memory换成Key-Value Memory,能解决什么问题?
  2. 在长文档QA上,如何把MemNN思想与Sliding Window结合?
  3. 你觉得未来最有潜力的Memory架构是什么?

欢迎点赞 + 收藏 + 留言,我看到高赞评论会继续更新进阶版(包括Key-Value MemNN完整代码、DMN+实现、RAG vs MemNN对比实验)!

参考文献

  • End-To-End Memory Networks (Sukhbaatar et al., NeurIPS 2015)
  • Memory Networks (Weston et al., ICLR 2015)
  • Dynamic Memory Networks (Kumar et al., ICML 2016)
http://www.jsqmd.com/news/360771/

相关文章:

  • SMUDebugTool:破解硬件稳定性难题的底层调试方案
  • 2026年靠谱的光敏实物印章,无锡宜兴实物印章,公安备案实物印章厂家推荐及采购参考 - 品牌鉴赏师
  • 训练稳定性保障:微调过程中的梯度爆炸与Loss发散排查
  • 最全自学黑客技术学习路线,少走弯路
  • 安装Pspice成功要点
  • 拖延症福音!专科生专属降AI神器 —— 千笔·专业降AI率智能体
  • 编译错误:将当前用户的默认 Shell 切换为 bash
  • 通俗理解消息传递机制
  • 《内网安全攻防.渗透测试实战指南》学习笔记一:内网渗透基础
  • office PPT文件瘦身
  • 毕业论文神器!千笔·降AI率助手,全网顶尖的降AI率软件
  • 简易黑客初级教程:黑客技术,分享教学
  • 2026更新版!9个一键生成论文工具:研究生毕业论文+开题报告高效写作测评
  • UE 自定义Plugins插件遇到的问题
  • 好写作AI:当文学遇见算法,如何让创意与效率“双向奔赴”?
  • ELK 搭建实战:从 0 到 1 打通日志收集、分析与可视化
  • 渗透神器 - BurpSuite - 基础篇
  • 2026年甲级监理公司推荐:权威评测与排名,直击项目管理效率与安全痛点 - 品牌推荐
  • 新手必刷的五个渗透测试靶场(建议收藏)
  • 终止代码: STORE DATA_STRUCTURE CORRUPTION
  • 股票智能预测系统(Python代码,可以自主选择预测模型,被预测的为每天的收盘价格,代码有详细注释),很容易替换为其它时序数据集,其它模型也很容易被加进去,已经留了增加其它模型的位置
  • springboot 整合 druid
  • 价值两万美元的复制粘贴失误:当HackerOne“黑”了自己
  • 第三方评估报告哪家可靠?2026年第三方评估公司全面评测与推荐,直击独立性与专业性痛点 - 品牌推荐
  • 2026年西安靠谱的结婚礼品店排名,特色礼品店口碑哪家好 - 工业设备
  • 考古级揭秘:网络安全工程师,你真的了解DOS系统吗?(别告诉我你只知道“攻击”)
  • 剖析成人高考知名的教学机构,济南万汇教育值得选吗? - 工业品网
  • 轴承故障诊断(一维时序信息结合二维图像实现故障诊断,python编程,十分类,每行代码都有详细中文注释,Tensorflow框架)
  • 2026年防火铝塑板厂家推荐:多行业应用横向对比排名,涵盖交通与家具领域安装痛点 - 品牌推荐
  • 2026年热门的蓝宝石片甩干机,芯片甩干机,电池片甩干机厂家采购推荐榜单 - 品牌鉴赏师