欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

神经图灵机(Neural Turing Machine)

图灵机

图灵机介绍:这里,图灵完备介绍:这里(两个链接都需要翻墙(╯﹏╰))

图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程,例如简单的四则运算的表达式求值可以很明显的通过这几机器设计出来。

现代的计算机里面的程序,可以看做是纸带长度有限的图灵机,所以如果我们可以通过DNN自动生成图灵机,是不是也相当于可以实现「自动写程序」。

神经图灵机结构

QQ20170322-220002

神经图灵机有两个重要的组成部分:

  1. 控制器(controller)
  2. 内存器(memory bank)

其中,虚线框外部可以看做是「外部世界」,controller和虚线外面的两部分(Input和Output)交互;同时也选择性的和Memory交互。

Read Head

Read Head就是从Memory中读取信息到Controller, 首先Memory是有状态的, \(M_t\) 表示 \(t\) 时刻的Memory。 \(M_t\) 是一个 \(M \times N\) 的矩阵,N表示位置,M表示每一个位置的向量长度。

读取的时候需要对 \(M_t\) 做一个压缩,将多个位置变为一个位置,也可以看做是对 \(M_t\) 进行「行变换」,每一个位置有一个已经「归一化」的权重 \(w_t(i)\) ,读取的结果可以使用公式表示为:

\(r_t=\sum_i w_t(i) M_t(i)\)

Write Head

从LSTM的输入门和遗忘门的灵感,写操作有两部分组成「删除操作」和「追加操作」。

删除操作

删除操作使用公式表示为:

\(\hat{M_t}(i) = M_{t-1}(i)[1 - w_t(i) e_t] \)

其中 \(w_t\) 是写权重(类似门的作用), \(e_t\) 是删除向量, 代表的是想要忘记的信息,将上面公式展开可能会更好的帮助理解。

追加操作

追加操作公式为:

\(M_t(i) = \hat{M_t} + w_t(i) a_t\)

其中 \(a_t\) 表示的是追加的信息

需要明确的是,写头可以有多个

权重生成机制

这里将介绍, \(w_t\) 是如何产生的,

QQ20170323-115746

如上图,生成最终的 \(w_t\) 需要 好几个步骤,每一个步骤的目的可以表示为:

  1. 相似度计算操作,根据内容相似度得到权重 \(w_t^c\)
  2. 融合操作,将上一步计算出来的 \(w_t^c\) 和上一轮计算出来的 \(w_{t-1}\) 使用一个gate融合
  3. 平移操作,对融合后的结果 \(w^g_t\) 进行「加权循环移动」,通过循环卷积实现(很简单,别被吓到)
  4. 锐化操作,将结果向量中的权重差距通过缩放操作变大

 

按照内容聚焦

传统的LSTM就可以看做是只有「内容聚焦」attention模型,具体流程如下:

  1. 读写头生成一个 \(k_t\)
  2. \(M_t\) 的每一个位置计算相似度,对相似度做全局的归一化
  3. \(\beta_t\) 作为归一化的权重

按照位置聚焦

为了解决循环和跳转寻址,这里引入「按照位置寻址」,通俗的理解这个操作可以表述为:通过矩阵的乘法,将输入向量循环平移(带权重)

句式方式为,每一个读写头,都生成一个 \(s_t\) ,如果位置一共有N个, \(s_t\) 的长度就是N,理想情况是 \(s_t\) 中只有一个位置的值是1,如果 \(s_t(6)=1\) ,表示的意义就是向右平移了6位。那么如何得到 \(s_t\) 的值呢,Controller通过生成一个数字(不是N个数字),这个数字表示一个宽度为1的均匀分布的下界。如下图中,生成的是6.7,那么只有 \(s_t(6)=0.3,s_t(7)=0.7\) 是非零,别的都是0。

QQ20170326-221254

通过矩阵的乘法,可以实现对一个向量的平移,论文中对这个方式称为「循环卷积」,具体公式为:

QQ20170327-154824

Controller网络

这里有好几个选项,可以用普通的NN,也可以用RNN,如果用普通的NN对Read Head的数量会有依赖,因为一次只可以读取一个信息,RNN即使只有一个Read Head,也可以读到历史上前几步的信息,因为它内部有自己的「memory」。

当然,NN也有好处,没有内部数据的存储,所以每次行为「好解释」。

 

资料

《Neural Turing Machines》

神经网络图灵机(Neural Turing Machines, NTM)

实现:https://github.com/carpedm20/NTM-tensorflow

http://distill.pub/2016/augmented-rnns/

 

未经允许不得转载:大数据算法 » 神经图灵机(Neural Turing Machine)

分享到:更多 ()

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站