放牧代码和思想
专注自然语言处理、机器学习算法

CS224n研究热点15 Neural Turing Machines

目录

dnc.jpg    hankcs.com 2017-07-14 上午11.43.28.png

这次讲座覆盖了来自DeepMind的两篇论文:

hankcs.com 2017-07-14 上午11.44.00.png

第二篇是第一篇的轻微改进,这里只关注抽象思想。

问题 

hankcs.com 2017-07-14 上午11.49.57.png

目前的神经网络擅长模式识别和动态决策,但无法使用知识进行深思或推断。比如明明可以胜任电子游戏这么复杂的问题,却无法完成最短路径这样的简单问题。

任何DFS算法变种都要储存当前访问过的节点,是否神经网络的问题出在记忆(或说内存)上呢?

记忆是解决方案吗

可是LSTM不是已经有Memory吗?事实上那只能叫cache,不能叫RAM。

Neural Turing Machines

这种模型引入了可长期持续、随机读写的RAM:

hankcs.com 2017-07-14 上午11.53.40.png

由RNN充当controller的角色:

hankcs.com 2017-07-14 上午11.54.50.png

决定何时读写哪一部分:

hankcs.com 2017-07-14 上午11.55.10.png

如何读写

如果你曾经上过计算机体系课,你就会明白内存是离散的结构,无法关于要读写的地址求导,自然无法利用反向传播优化。

解决方法是对所有地址进行不同的连续的程度读写,比如attention机制。

读内存

就是attention向量与memory矩阵的乘积:

hankcs.com 2017-07-14 上午11.58.54.png

写内存

类似地,将要写入的值利用attention得到向量,写入内存的所有位置:

hankcs.com 2017-07-14 下午12.01.19.png

这种更新也有点像GRU。

attention更新

如何得到正确的attention向量呢?

第一步

RNN controller生成query vector,与memory的每个地址做点积,得到一个强度向量,softmax一下得到attention向量:

hankcs.com 2017-07-14 下午12.05.21.png

第二步

与前一个attention vector做混合:

hankcs.com 2017-07-14 下午12.05.52.png

第三步

shift filter(允许读取attention集中注意的地址的邻居)一下,sharpen(锐化,使强者越强)得到最终attention分布,用于读写:

hankcs.com 2017-07-14 下午12.10.37.png

效果

可以在家谱知识库上做准确的推断:

References

https://deepmind.com/blog/differentiable-neural-computers/ 

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n研究热点15 Neural Turing Machines

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    大神 为什么页面旁边的边框不能隐藏 很影响阅读

    软绵绵巧克力云3个月前 (07-31)回复

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机