标签:
NTM是一种使用Neural Network为基础来实现传统图灵机的理论计算模型。利用该模型,可以通过训练的方式让系统“学会”具有时序关联的任务流。
论文:http://arxiv.org/abs/1410.5401
中文翻译:http://www.dengfanxin.cn/?p=60
ppt:http://llcao.net/cu-deeplearning15/presentation/NeuralTuringMachines.pdf
基于Theano的python语言实现1:https://github.com/shawntan/neural-turing-machines
基于Theano的python语言实现2:https://github.com/snipsco/ntm-lasagne
基于Torch的实现:https://github.com/kaishengtai/torch-ntm
基于Tensor Flow的实现:https://github.com/carpedm20/NTM-tensorflow
基于C#的实现:https://github.com/JanTkacik/NTM
基于JS语言的实现:https://github.com/gcgibson/NTM
GO语言实现:https://github.com/fumin/ntm
相关博客1:https://blog.wtf.sg/category/neural-turing-machines/
相关博客2 :https://medium.com/snips-ai/ntm-lasagne-a-library-for-neural-turing-machines-in-lasagne-2cdce6837315#.twrvqnda9
百度贴吧:http://tieba.baidu.com/p/3404779569
知乎中关于强人工智能的一些介绍:http://www.zhihu.com/question/34393952
首先,我们来复习一下大学的知识,什么是图灵机呢?图灵机并不是一个实体的计算机,而是一个理论的计算模型,由计算机技术先驱Turing在1936年提出(百度知道)
它包含如下基本元素:
TAPE:磁带,即记忆体(Memory)
HEAD:读写头,read or write TAPE上的内容
TABLE:一套控制规则,也叫控制器(Controller),根据机器当前状态和HEAD当前所读取的内容来决定下一步的操作。在NTM中,TABLE其实模拟了大脑的工作记忆
register:状态寄存器,存储机器当前的状态。
如下图:
所谓的NTM,其实就是使用NN来实现图灵机计算模型中的读写操作。其模型中的组件与图灵机相同。那么,NTM中是怎么实现的呢?
假设t时刻的内存数据为
定义读取向量为
显然,
写操作分解为顺序执行的两步:
1.擦除(erase)
2.添加(add)
式中的空心圆圈表示向量按元素逐个相乘(point-wise),显然,这里的
假设
如果不考虑
如果要完全擦除一个分量,只需要对应的
Write Head还需要生成一个长度为
t时刻的内存值将为:
显然,
有两种寻址策略,
产生一个待查询的值
首先,需要进行寻址操作的Head(Read or Write)生成一个长度为M的key vector:
其中,
相似度函数这里取余弦相似度:
直接使用内存地址进行寻址,跟传统的计算机系统类似,controller给出要访问的内存地址,Head直接定位到该地址所对应的内存位置。对于一些对内容不敏感的操作,比如乘法函数
基于地址的寻址方式可以同时提升简单顺序访问和随机地址访问的效率。我们通过对移位权值进行旋转操作来实现优化。例如,当前权值聚焦在一个位置,旋转操作1将把焦点移向下一个位置,而一个负的旋转操作将会把焦点移向上一个位置。
在旋转操作之前,将进行一个插入修改的操作(interpolation),每个head将会输出一个修改因子
显然,
在上述的interpolation操作结束后,每个head将会产生一个长度为N的移位权值向量
写成矩阵的形式如下:
原始可改写为:
由于卷积操作会使权值的分布趋于均匀化,这将导致本来集中于单个位置的焦点出现发散现象。为了解决这个问题,还需要对结果进行锐化操作。具体做法是Head产生一个因子
通过上述操作后,权值分布将变得“尖锐”。
我们通过一个简单的例子来说明:
假设N=5,当前焦点为1,三个位置-1,0,1对应的权值为0.1,0.8,0.1,
所以有:
取
可以看出来,经过锐化处理后
整个寻址的过程如下图:
通过上图的内存寻址系统,我们能够实现三种方式的内存访问:
1.直接通过内容寻址,即前边提到的Content-base方式;
2.通过对Content-base产生的权值进行选择和移位而产生新的寻址权值,在这种模式下,运行内存操作焦点跳跃到基于Content-base的下一个位置,这将使操作Head能够读取位于一系列相邻的内存块中的数据;
3.仅仅通过上一时刻的权值来生成新的操作地址权值,而不依赖任何当前的Content-base值。这将允许Head进行顺序迭代读取(比如可以通过多个时刻的连续迭代,读取内存中一个连续的数组)
NTM的结构中存在很多的自由参数,比如内存的大小,读写头的数目,内存读取时的位移的范围。但是最重要的部分还是控制器的神经网络结构。比如,是选用递归网络还是前馈网络。如果选用LSTM,则其自有的隐层状态可以作为内存矩阵
Neural Turing Machines-NTM系列(一)简述
标签:
原文地址:http://blog.csdn.net/rtygbwwwerr/article/details/50548311