(Neural Turning Machine)神经图灵机理解和pytorch实现

神经图灵机是一种具有外部记忆的深度学习模型,解决了传统神经网络的长期记忆问题。它通过读写头和定位机制进行信息存储和检索。本文详细介绍了读记忆、写记忆和定位机制的原理,并提供了Pytorch实现的概述。神经图灵机的读过程通过内容和位置基址确定记忆,写过程结合LSTM的门控机制进行擦除和添加操作。此外,还讨论了训练过程和实际应用,如DNC(Differentiable Neural Computer)。
摘要由CSDN通过智能技术生成

一般的神经网络不具有记忆功能,输出的结果只基于当前的输入;而LSTM网络的出现则让网络有了记忆:能够根据之前的输入给出当前的输出。但是,LSTM的记忆程度并不是那么理想,对于比较长的输入序列,LSTM的最终输出只与最后的几步输入有关,也就是long dependency问题,当然这个问题可以由注意力机制解决,然而却不能从根本上解决长期记忆的问题,原因是由于LSTM是假设在时间序列上的输入输出:由t-1时刻得到t时刻的输出,然后再循环输入t时刻的结果得到t+1时刻的输出,这样势必会使处于前面序列的输入被淹没,导致这部分记忆被“丢掉“。

神经图灵机通过引入外部记忆解决了这个问题。 举个简单的例子,我们人类在记忆一些事情的时候,除了用脑袋记,还会写在备忘录上,当我们想不起来的时候,就可以去翻阅备忘录,从而获得相关的记忆。神经图灵机模仿人类记忆的过程:其中的控制器(controller)相当于我们人类的大脑,用于把输入事物的特征提取出来;外部记忆(memory)相当于我们的备忘录,把事物的特征记录在上面,那么完整的过程就是:控制器将当前输入转化为特征,写入记忆,再读取与当前输入特征有关的记忆作为最后的输出。整个过程与图灵机的读写很像,只不过神经图灵机这里让所有的读写操作都可微分化,因此可以用神经网络误差后向传播的方式去训练模型

这里写图片描述

那么问题就来了,当获得一个输入的特征后,我们如何确定在记忆中储存的位置,而且如何从记忆中获取与当前输入相关的信息呢?这就是接下来要分析的神经图灵机主要工作。

Neural Turning Machine

这里写图片描述

1. 读记忆 (Read Heads)

我们把记忆看作是一个 N × M N \times M N×M的矩阵 M t M_t Mt,t表示当前时刻,表示记忆会随着时间发生变化。我们的读过程就是生成一个定位权值向量 w t w_t wt,长度为 N N N,表示N个位置对应的记忆权值大小,最后读出的记忆向量 r t r_t rt为:

r t = ∑ i N w t ( i ) M t ( i ) r_t = \sum_i^N w_t(i) M_{t}(i) rt=iNwt(i)Mt(i)

其中权值向量的和为1: ∑ i w t ( i ) = 1 \sum_i w_t(i)=1 iwt(i)=1,本质上是一个对N条记忆进行一个加权求和的思想。

2. 写记忆(Write Heads)

神经图灵机的写过程参考了LSTM的门的概念:先用输入门决定增加的信息,再用遗忘门决定要丢弃的信息,最后用更新门加上增加的信息并减去丢弃的信息。具体来说,神经图灵机会生成一个擦除向量 e t e_t et(erase vector) 和一个增加向量 a t a_t at(add vector),长度都为 N N N,向量中每个元素的值大小范围从0到1,表示要增加或者删除的信息。对于写记忆过程,神经图灵机首先执行一个擦除操作,擦除程度的大小同样由向量 w t w_t wt决定:

M t ′ ( i ) = M t − 1 ( i ) ( 1 − w t ( i ) e t ( i ) ) M_t'(i)=M_{t-1}(i)(1-w_t(i)e_t(i)) Mt(i)=Mt1(i)(1wt(i)et(i))

这个操作表示从 t − 1 t-1

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值