当前位置: 首页 > 编程日记 > 正文

AlphaGo之父DeepMind再出神作,PrediNet原理详解

640?wx_fmt=jpeg

作者 |  beyondma
转载自CSDN博客

近期,DeepMind发表论文,称受Marta Garnelo和 Murray Shanahan的论文“Reconciling deep learning with symbolic artificial intelligence: representing objects and relations”启发,他们提出了一种新的架构,可将目前人工智能的两大流派符号派和神经网络派相结合,并取得良好效果。但是对于如此重要的论文,在国内的主流技术论坛上竟然没有什么的解读与评论,经过了两天的研究,笔者先将我对PrediNet的一些成果发布出来,供各位参考。


人工智能的两大流派的优劣比较


人工智能主要分为符号流、神经网络、遗传等几个流派,目前是神经网络和符号流比较占上峰,但是由于几个流派间基本前提不尽相同,如何将几个流派的思想整合,一直是个比较难以解决的问题,这里简要介绍一下符号和神经网络两大流派。

符号流派认为,一组对象之间存在关系可以用符号表示,符号的组合(and, or, not,等等),可以参与推理过程,但是在DeepMind之前,符号与逻辑推理的关系都是通过专家人工指定的,而不是通过对计算机进行训练获取相应的模型。

神经网络学派则是受到神经元之间相互连接的作用为启发,尤其是以神经网络为代表的算法,其实是先随机给予每个神经元一个权重(weights),然后通过与最终结果的比较,不断训练得到最终的模型。

神经网络学派的优势是在海量数据处理及预测方面表现非常好,/root但是其模型复用性不强,比如识别人脸的模型只能用于训练人脸,而不能用来识别人手或者猫脸等其它特征;而符号学派的命题型结论可以推广,但是由于过于依赖人力,所以发展缓慢。


PrediNet结合两大流派思想的方式


在PrediNet引用的论文“Reconciling deep learning with symbolic artificial intelligence: representing objects and relations”提出了这样一种架构,先由Relation Network处理,其中Relation(关系)是由one-hot向量表示的,也就是每个relation都是彼此独立的,彼此不相关,比如性别中的男、女就是彼此独立的,用one-hot向量表示就是(0,1)和(1,0),而如果这时把他们放入同一维度表示为1和2,就会出现一些问题,因为1和2在数学就有倍数关系存在相关性了。如果读者不好理解,可以把relation简单理解为符号(symbol),输入序列经过关系网络(Relation Network)的处理,输出给MLP(多层感知机),得到最终输出。


640?wx_fmt=png


这次DeepMind提出的PrediNet方案,与之前的架构不尽相同,输入先经过CNN(卷积神经网络)处理,再由PrediNet处理,最后由MLP(多层感知机)进行输出如下图所示,读者可以把PrediNet看做是一个管道,连接在CNN和MLP之间。而实验的结果也说明,PrediNet训练完成后是可以被复用到的。


640?wx_fmt=png


所以划重点,这次 DeepMind 提出的 PrediNet 是一种可以被神经网络派算法所使用的管道层,而且 PrediNet 这个管道层还具备一定的通用性。


PrediNet的工作原理简述


PrediNet其实是一种降维的手段,将高维数据(如图像)转换为低维的命题表示形式。这里先把论文的原文翻译一下:

PrediNet的工作分为三个阶段:注意、绑定和评估。注意阶段,其实就是使用注意力算法选取对象,绑定阶段用计算一组三个位置关系的前两个,评估阶段计算每个谓词剩余参数的值,使结果命题为真。

具体地讲,PrediNet模块由k个头组成,每个头计算对象对之间的j个关系。对于给定的输入L,每个头h使用共享权重的WS,计算相同的关系集合,但是每个头h都基于匹配键查询(key-query matching)的点积(dot-product)注意力算法,去选取对象序列的。

每个头h计算一对单独的查询Qh 1和Qh 2(通过Wh Q1和Wh Q2),但是key space K(由WK定义)在heads之间共享。将得到的注意力掩码(attention mask)对直接应用于L,得到E1和E2,再将E1和E2由一个线性映射(Ws)到一维空间,将继续送入一个元素比较器(element-wise comparation),得到一个差分向量D, 最后,将所有k个头的输出连接起来,得到最终的向量R。向量R是表示k个头和j个关系的PrediNet模块的最终输出。

cmake --build .

这里我做一下解释,首先PrediNet将工作分配N个HEAD去完成,其中每个HEAD使用了两个独立的WQ和WQ2以及一个共享的KEY,基于匹配键查询(key-query matching)的点积(dot-product)注意力算法得到一个掩码(mask),这也就是注意阶段,然后将掩码()mask)应用到输入L上,得到E1和E2,这也就是绑定阶段。接下来使用WS对于E1和E2将降维,送入比较器得到D,并结合所有HEAD得到最终结果。

如果要深入理解PrediNet,其实关键是要理解基于WQ(实际上是查询),WK(实际是键值)的匹配键查询的点积注意力算法(key-query matching dot-product),不过鉴于博主这种技术前沿的解读与分享阅读量一直很低,所以也就不再展开了。不过如果本篇阅读能超过520的表白秘笈(https://blog.csdn.net/BEYONDMA/article/details/90300624),那么下周我就来继续分享注意力算法的相关内容。

DeepMind原论文链接:https://arxiv.org/pdf/1905.10307.pdf

原文链接:

https://blog.csdn.net/BEYONDMA/article/details/90726949


公开课精彩推荐



本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程中,QA也是一个非常精彩的环节。


640?wx_fmt=jpeg


640?wx_fmt=jpeg


推荐阅读

  • 开源要自立?华为如何“复制”Google模式

  • 谷歌用1.2万个模型“推翻”现有无监督研究成果!斩获ICML 2019最佳论文

  • 24式,加速你的Python

  • 荔枝“自由”?朋友,你实现了吗?

  • 为防 Android 碎片化?Google 强迫开发者使用自有开发工具!

  • Docker 存储选型,这些年我们遇到的坑

  • 从制造业转型物联网,看博世如何破界

  • 回报率850%? 这个用Python优化的比特币交易机器人简直太烧脑了...

  • 面试阿里技术岗,竟然挂在第4 轮……


640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢


相关文章:

php中file_get_contents如何读取大容量文件

php中file_get_contents如何读取大容量文件 一、总结 一句话总结:使用file_get_contents()进行分段读取,file_get_contents()函数可以分段读取 1、读取大文件是,file_get_contents()函数为什么会发生错误? 发生内存溢出而打开错误…

Vmware虚拟机的复制后无法使用的问题和解决

为什么80%的码农都做不了架构师?>>> 我在自己的机器上用Vmware安装的Ubuntu 12.04系统,并在里面部署了Openstack的开发环境,部署的过程有些复杂,不希望再次重复这个过程,于是就复制整个的虚拟机文件到其他…

Facebook频谱图模型生成比尔·盖茨声音,性能完胜WaveNet、MAESTRO

作者 | James Vincent 等编译 | 夕颜、Monanfei出品 | AI科技大本营(ID:rgznai100)计算机生成语音领域,正在酝酿着和一场革命。Facebook 工程师们设计创建的机器学习模型 MelNet 就是一个启示。下面这段听起来怪异的话像极了比尔盖茨是吧&…

数据表设计的原则

如何设计数据表: 三个范式 ER图

图像配准----Harris算子

Harris算子是C.Harris和M.J.Stephens在1988年提出的一种特征点提取算子。它用一阶偏导来描述亮度变化,这种算子受信号处理中自相关函数的启发,给出与自相关函数相联系的矩阵M。M矩阵的特征值是自相关函数的一阶曲率,如果两个曲率值都高&#…

关于ORA-01950: no privileges on tablespace 的解决

前天晚上,本想在家里搭一个公司项目的开发环境,以便在工作忙的时候做点“家庭作业”。下班之前,通过PLSQL Developer导数据库时,不知道什么原因,以.dmp格式导出时总不成功,于是选择以.sql格式导出&#xff…

继往开来!目标检测二十年技术综述

作者 | 周强来源 | 我爱计算机视觉(id:aicvml)计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶、视频监控、机器人视觉等,而被研究学者广泛关注。几天前,arXiv新出一篇目标检…

python+selenium百度贴吧自动签到

#-*- coding:utf-8 -*- from selenium import webdriver import time import os import random from selenium.webdriver.common.action_chains import ActionChainsbrowser webdriver.Chrome()# 最大等待加载完的时间 max_loading 600 # 延时随机n秒执行 wait_time random.…

图像配准----NCC

在用Harris算子对图像进行角点提取后,两幅图像得到的角点个数不一定相等,这时就要先对它们进行处理,得出一一对应的角点对。 归一化互相关(Normalized Cross Correlation method, NCC)匹配算法是一种经典的统计匹配算法,通过计算模…

Ext Scheduler Web资源甘特图控件

原文来自 http://www.fanganwang.com/Product-detail-item-1430.html欢迎转载。 关键字: 资源甘特图又叫负荷图,其纵轴不再列出活动,而是列出整个部门或特定的资源。 Ext Scheduler资源甘特图是基于Extjs核心库的开发的,基于WEB浏…

50行代码教AI实现动作平衡 | 附完整代码

作者 | Mike Shi译者 | linstancy责编 | Jane出品 | AI科技大本营(id:rgznai100)【导读】本文将为大家展示如何通过 Numpy 库和 50行 Python 代码,使用标准的 OpenAI Gym平台创建智能体 (agent),就教会机器处理推车杆问…

图像配准----双向匹配

由Harris提取出的两幅图像的角点个数或对应关系并不是一一对应的。为了后续的配准,需要先对提取出的角点进行初始匹配,双向匹配方法是比较简单的一种方法,它实现容易。 设参考图像特征点集为X {x1, x2, …,xp}, p > 3;待配准图…

[专业亲测]Ubuntu16.04安装Nvidia显卡驱动(cuda)--解决你的所有困惑【转】

本文转载自: 因为要做毕设需要安装caffe2,配置cuda8.0,但是安装nvidia驱动真的是把我难倒了,看了很多篇博文都没有效果,现在我自己重新总结了下几种 安装方法(亲测有效),希望能帮到大…

IE下javascript的console方法

IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console&#xff0c;IE6下没有。特用此办法来兼容IE6. <br /><pre lang‘‘html‘‘> <!doctype html> <html> <head> <meta charset‘‘utf-8‘‘/> </head> <body&…

图像配准----RANSAC

对角点进行初始匹配后&#xff0c;所选定的角点并不能保证全部是正确的点&#xff0c;也可能有误点&#xff0c;因此&#xff0c;还需要进一步对所选定的角点进行精确匹配。 RANSAC(RANdom Sample And Consensus)方法是由Fischler和Bolles提出的一种鲁棒性的参数估计方法。它的…

教你用OpenCV实现机器学习最简单的k-NN算法

前言&#xff1a;OpenCV 的构建是为了提供计算机视觉的通用基础接口&#xff0c;现在已经成为经典和最优秀的计算机视觉和机器学习的综合算法工具集。作为一个开源项目&#xff0c;研究者、商业用户和政府部门都可以轻松利用和修改现成的代码。k-NN算法可以认为是最简单的机器学…

div 相同属性提取

把样式名或id写在一起&#xff0c;用逗号隔开 <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>信息详情</title> <style type"text/css"> #box-1, #box-2, #box…

ehcache 简介

hCache 是一个纯Java的进程内缓存框架&#xff0c;具有快速、精干等特点&#xff0c;是Hibernate中默认的CacheProvider。 下图是 Ehcache 在应用程序中的位置&#xff1a; ehcache部署起来很简单&#xff0c;主要分两步&#xff1a; 1.首先要给他写个核心配置XML文件 <ehca…

【leetcode】30. Substring with Concatenation of All Words

题目如下&#xff1a; 解题思路&#xff1a;本题题干中有一个非常关键的前提&#xff0c;就是words中的所有word的长度一样&#xff0c;并且都要被使用到。所以&#xff0c;我们可以把输入的s按word的长度进行等分&#xff0c;以s "barfoothefoobarman",words [&qu…

图像配准----SIFT

SIFT算子(Scale Invariant Feature Transform)是David Lowe提出的一种基于尺度空间的、对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。SIFT特征提取的是极其细微、大量的特征点&#xff0c;即时少数物体、物体的一小部分也可以产生大量特征向量。 SIFT算法如…

终于把微软BING搜索-SPTAG算法的原理搞清了

作者 | beyondma转载自 CSDN 博客近日&#xff0c;微软在GitHub上开源了其BING的搜索算法SPTAG&#xff0c;github地址&#xff1a;https://github.com/microsoft/SPTAG。这个算法笔者简单看了一下&#xff0c;的确是很有价值可以看大家介绍下&#xff0c;这种称为SPTAG &#…

把握每天的第一个钟头

当我十七岁的时候&#xff0c;我读到一段话&#xff0c;它是这么说的&#xff1a;“如果你把每天都当做最后一天来活着&#xff0c;那么有一天你将会是对的。”这句话让我留下了深刻的印象&#xff0c;从那时候开始&#xff0c;过去的 33 年来&#xff0c;我每天早上都对着镜子…

向量叉积计算法

如果向量A为{a, b, c}&#xff0c;向量B为{m, n, p}&#xff0c;如何计算向量A与向量B的叉积呢&#xff1f; 用行列式&#xff1a; |i j k| |a b c| |m n p| (bp-cn)i (mc-pa)j (an-bm)k 例如用matlab实现两个向量的叉积&#xff1a; a [1 2 3]; …

你是个成熟的C位检测器了,应该可以自动找C位了

作者 | 李翔转载自视说AI&#xff08;ID:techtalkai&#xff09;写在前面C位是近年网络上一个比较热门的词&#xff0c;最早来源于DOTA等游戏领域&#xff0c;是核心位置&#xff08;Carry位&#xff09;的简称&#xff0c;代表的是能够在游戏前中期打钱发育并在游戏后期带领队…

Data Artisans发布支持ACID事务的流式处理框架Streaming Ledger

data Artisans宣布推出Streaming Ledger&#xff0c;它扩展了Apache Flink&#xff0c;提供了跨表、键和事件流执行可序列化ACID事务的功能。这项正在申请专利的技术是Flink的专有附加技术&#xff0c;超越了当前一次只能在一个键上实现一致性的标准。\\在发布Streaming Ledger…

The Life Cycle of a Servlet

为什么80%的码农都做不了架构师&#xff1f;>>> Servlet的生命周期由Servlet容器管理&#xff0c;包含如下几个步骤&#xff1a; 1. 装载Servlet类; 2. 创建Servlet的实例; 3. 调用Servlet的init()方法; 4. 调用Servlet的service()方法; 5. 调用Servlet的destroy()…

矩阵奇异值分解

转自&#xff1a;http://www.madio.net/forum-redirect-goto-nextnewset-tid-47409.html 奇异值分解是线性代数中一种重要的矩阵分解&#xff0c;在信号处理、统计学等领域有重要应用。定义&#xff1a;设A为m*n阶矩阵&#xff0c;AHA的n个特征值的非负平方根叫作A的奇异值。记…

智课雅思词汇---十、pend是什么意思

智课雅思词汇---十、pend是什么意思 一、总结 一句话总结&#xff1a;【词根含义】&#xff1a;悬挂,垂;称量;支付 词根&#xff1a;-pend-, -pens- 【词根含义】&#xff1a;悬挂,垂;称量;支付 【词根来源】&#xff1a;来源于拉丁语动词pendeo, pendere, pependi, - (悬挂,下…

新技术“红”不过十年,半监督学习为什么是个例外?

作者 | 严林来源 | 授权转载自知乎&#xff08;ID:严林&#xff09;这一波深度学习的发展&#xff0c;以2006年Hinton发表Deep Belief Networks的论文为起点&#xff0c;到今年已经超过了10年。从过往学术界和产业界对新技术的追捧周期&#xff0c;超过10年的是极少数。从深度学…

常用Linux路由命令(route、ip、ifconfig等等)

第一组命令&#xff1a; ifconfig, ifup, ifdown 1) ifconfig 作用&#xff1a;手动启动、观察与修改网络接口的相关参数&#xff0c;包括IP地址以及MTU大小等。 例1.1&#xff1a;暂时修改IP地址 # ifconfig eth0 192.168.100.100 例1.2&#xff1a;修改IP地址、掩码和MTU # i…