本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:深度学习挑战冯·诺依曼结构

时间:2016-12-14 17:05来源:668论坛 作者:118KJ 点击:
:COO、执行总编、主编、高级编译、主笔、运营总监、客户经理、咨询总监、行政助理等 9 大岗位全面开放。 简历投递:j [email protected] HR 微信: 13552313024 新智元为COO和执行总编提供

  :COO、执行总编、主编、高级编译、主笔、运营总监、客户经理、咨询总监、行政助理等 9 大岗位全面开放。

  简历投递:j[email protected]

  HR 微信:13552313024

  新智元为COO和执行总编提供最高超百万的年薪激励;为骨干员工提供最完整的培训体系、高于业界平均水平的工资和金。

  加盟新智元,与人工智能业界领袖携手改变世界。

  【新智元导读】挑战冯·诺依曼,就必须从三个要素入手:基本操作,例如加减乘除;逻辑流程控制,例如if-else-then,for,j2直播,while;设存储器,内存和硬盘的寻址。DeepMind 团队认为,冯·诺依曼体系中的逻辑流程控制和外设存储器使用,都必须在程序中写死,而不能通过观察范例,自动生成程序。

  2016年10月27日 “Nature” 期刊第538卷,发表了Google 旗下的 DeepMind 团队写的人工智能的论文,题目是 “Hybrid computing using a neural network with dynamic external memory” [1],用配置了动态外部存储的神经网络,实现杂交计算。这篇论文介绍了 Differentiable Neural Computer 的实现细节。

  DeepMind 团队在伦敦工作,2014年被 Google 收购。DeepMind 开发的 AlphaGo,2016年年初战胜了围棋高手李世乭。

  早在 2014年12月,DeepMind 团队发表了一篇论文,“Neural Turing Machines” [2]。后来,他们对 Neural Turing Machines (NTM)的存储管理方式做了改进,命名为 Differentiable Neural Computer(DNC)。Differentiable 是可训练的意思,尤其是可以用 gradient descent 的算法来训练。

  冯·诺依曼体系

  当今世界,所有计算机的体系,都源自于冯·诺依曼于 1945 年设计的体系,冯·诺依曼体系有三大要素:

基本操作,例如加减乘除。

逻辑流程控制,例如if-else-then,for,while。

外设存储器,内存和硬盘的寻址。

  挑战冯·诺依曼,就必须从这三个要素入手。DeepMind 团队认为,冯·诺依曼体系中的逻辑流程控制和外设存储器使用,都必须在程序中写死,而不能通过观察范例,自动生成程序。

  如果把程序理解为把输入 x 转换为输出 y 的函数 f(),y = f(x),那么 neural network 就是模拟任何函数的通用模型f^()。

  但是早期的 neural network 有两个软肋:

不能实现 variable binding,也就是说,f() 的内部参数,不能随着输入 x 的不同而改变。

不能实现 variable-length structure,也就是说,输入 x 和输出 y 的维度都是定长的,不能改变。

  早期 neural network 的这两个软肋,都不难修补。譬如循环神经网络 Recurrent Neural Network(RNN),就解决了这两个问题。换而言之,RNN 是 Turing-complete 的,可以用来模拟任何函数,当然也可以模拟任何程序的功能。

  既然冯·诺依曼体系的三大要素中的两个,基本操作和逻辑流程控制,都能够被 RNN 模拟,假如 RNN 也能够解决存储管理的问题,那么整个冯·诺依曼体系,就都能够被 RNN 来实现了。所以 Differentiable Neural Computer (DNC)的工作重点,在于存储管理。

  [3] 深入浅出地解释了用RNN 来管理存储的原理。建议先读 [3],再读 [2],最后读 [1]。需要特别注意的,个人体会有几个方面,1. 存储的设置,2. 寻址机制,3. 需要训练哪些参数,4. 如何把 DNC 应用到 Graph 操作中。

  存储的设置

  [3] 把 NTM/DNC 的存储设置解释为 the memory is an array of vectors,也就是一个矩阵,每一行就是一个 vector,每行的 vector 的长度一致,所有行集结起来就是 array。在文中的例子中,[3] 把 memory 简化为 an array of scalar, 也就是 N 行单列的矩阵,每一行只存储一个数值。

  什么时候需要存储向量呢?如果存储里存放的是图像,那么每个存储单元上存储的是一个像素(r,g,b),像素就是一个向量,三个 bytes 组成的向量。

  但是如果需要存储的是一篇文章,每个存储单元上需要存储一个词,而每个词的长度不同,怎么办?三篇文章都没有说,但是简单的办法有二。

每个存储单元上,预留足够长的 vector,遇到很短的词,空着的 byte 就全部填 0。

把每个词,无论长短,都转换为词向量,词向量的长度定长。第二个办法就是其它论文中说的 encoding 的办法。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容