最近赢了人机大战的AlphaGo火了,火得一塌糊涂,圈里圈外,是人都在谈AlphaGo。但是AlphaGo毕竟是为特定场景特定应用设计的特定型人工智能,和通用型人工智能还是有很大差别,离人工智能普及更差得很远。所以这么说,是因为之前做过几个特定型人工智能项目(语音识别和图像识别类型的,合起来可以是视频识别,但是没做),有些体会,对特定型人工智能设计思路比较了解,近期一直在考虑通用型人工智能的事,现在已经开始做这件事。但是只是一个开始,很多东西还在琢磨、探索中,路能不能走通也是未知数。在此和大家说说,分享一下我们的设计思路,希望能抛砖引玉。
  先从人工智能本身说起。人工智能是啥?就是让计算机拥有类似人的思维能力,怎么拥有呢?学习!现在这已经是共识,就是把一大堆数据输进计算机,借助大数据的存储计算能力,加上人对数据的分析理解,过滤掉里面的“噪音”,在大数据里形成一个相对准确的数据池。这个数据池,就成为计算机“思考”的源头。然后继续往里面加数据,这样数据池里的数据就会越来越多,计算机可以参考比较的内容也会越来越多,相应的分析判断能力就会越来越强,理论上,它就会越来越“聪明”。
  这个过程好比老师教孩子。小孩受本身阅历限制,他的知识储备少,在成长过程中会接受错误信息,对某些问题不理解,或者对某些信息判断错误,老师在这时要及时发现纠正,灌输正确的知识,让孩子形成正确的认识。正确的东西学习重复多了,自然对错误的知识形成抗体,以后也不会再犯。
  再说特定型人工智能。特定型人工智能和通用型人工智能相比,它是专门为某一个领域准备的。比如说这次人机大战的AlphaGo,它只思考下围棋的事,别的事不用管,那么做为它的老师,“真正的人”,只管向它输入各种围棋棋谱,给它建立一个分析模型,考虑对手落子之后,怎么根据这个落子下出正确的棋路。在这个过程中,它可能会下错,不过有老师在,老师会给它纠偏,慢慢它的棋艺就会越来越高。
  相比之下,通用型人工智能就要复杂多了。因为我们面对的世界太庞大,上下五千年,东西两半球,小到柴米油盐,大到两次大战,啥事没发生过,还有人的各种感情问题,比如“你是风儿我是沙”这样卿卿我我的东西,让计算机能够理解,建立这样全方位的知识体系肯定难得多。
  到这儿,就要说我们设想的这个东西了:自编程。自编程不是让人写代码,也不是让机器写代码(机器写代码N年前就有了,现在好象也没啥进展)。是让机器模仿人的意图,主动建立一套识别分析模型。在这套模型里,根据不同的录入内容,再进行细分,逐渐具体到一个个单项上。拿AlphaGo这件事来说,它只是世界上各种对弈棋类中的一种,在通用型人工智能这个大的模型框架下,是其中很小的一个子模型。
  再打个比方,军坛里有很多人在讨论隐形飞机的事。这件事如果让机器做,那么应该这样处理:
  1.建立一个飞机的识别分析模型。
  2.在飞机的识别分析模型之下建立一个隐形飞机的识别模型。
  3.向隐形飞机的识别分析模型里加注各种相关的数据。
  如果有人问“世界上哪种隐形飞机最牛B”时,根据“最牛B”这个语义,找到和“隐形飞机”关联的数据进行计算。得分高的自然就牛B。开始可能会有错,那就调整关联参数进行纠偏。这个工作开始一般是人做,训练多了让机器识别判断自己做。人工智能很关键的“深度学习”、“自主学习”实际指的就是这个。以后随着越来多人问,正确答案会受到更多人肯定,关联参数的权重就要增加,达到一定比例后,把正确的保留,错误的取消掉。
  这就是我们大体解决通用型人工智能的思路。归纳起来就是一个树形结构,先有“根”一级的识别分析模型,在“根”之下,有“子”一级识别分析模型,子还有“孙”,逐次递增,直到一个个具体单项。每一级识别分析模型都有各种属性与它建立关联。人机交互的时候,根据应用场景,与树形结构中的识别分析模型进行关联,找到最可能匹配的单项,再去寻找正确的答案。
  如果把AlphaGo迁移到通用型人工智能下面,最少是这样一个层次结构:“棋-围棋-对弈”。AlphaGo将成为通用人工智能环境下的一个子集。以后李世石如果再找AlphaGo下棋,通用型人工智能将引导他到“对奕”下面。其实不只李世石,全世界的人都可以和AlphaGo搏杀,搞个万人对阵机器大赛,如果真有一天出现这个场景,那可比当年《棋王》里的王一生大战老者壮观多了去了!
  扯远了,说正题!其实我们现在做通用型人工智能还是有很多困难。最大问题是要建立各种识别分析模型,还有在里面建立各种识别判断。而且每个识别分析模型的要求标准不一样,另外它们之间肯定有互通的地方,也有排斥的地方,这要建立很多关联,对它们精确定位,在计算的时候还在结合现实场景去理解和处理关联。统一规则肯定没法做到,比较靠谱的是针对几个相似的识别分析模型,做相对统一的规则,不过现在这个正在尝试中。
  至于数据的存储计算问题,现在已经解决,我们有一个超强的大数据系统,PB、EB量级的数据,存储计算起来都已经在不在话下。目前已经是已经PB了。
  总之我们做的通用型人工智能还是个框架,很多东西在摸索、探索中。有兴趣的兄弟可以交流,也希望哪位大神能给点提醒,来个突破!^_^!

从AlphaGo谈通用型人工智能设计的更多相关文章

  1. 【原创】NES第一波:如何用通用型6502宏汇编器,制用NES/FC游戏。

    在163的博客关了呀.在这边重新开张了. 以后若网友有什么要长篇解答的问题,也在这儿作答. 作为第一波原创文章,我打算做一次小白示范.那就是一步一步的展示某个汇编编译器的用法. 一.科普 很多人认为程 ...

  2. 浅谈Hybrid技术的设计与实现第三弹——落地篇

    前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...

  3. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  4. 浅谈Hybrid技术的设计与实现

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...

  5. (转)浅谈Hybrid技术的设计与实现

    转载地址:https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hyb ...

  6. 城市经纬度 json 理解SignalR Main(string[] args)之args传递的几种方式 串口编程之端口 多线程详细介绍 递归一个List<T>,可自己根据需要改造为通用型。 Sql 优化解决方案

    城市经纬度 json https://www.cnblogs.com/innershare/p/10723968.html 理解SignalR ASP .NET SignalR 是一个ASP .NET ...

  7. 泛型理解及应用(二):使用泛型编写通用型Dao层

    相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板.对于Hibernate生成 ...

  8. 【转】AlphaGo Zero 和强人工智能

    AlphaGo Zero 和强人工智能 前段时间比较热门的是 AlphaGo(阿法狗)的升级版:AlphaGo Zero(阿法狗零).跟阿法狗不同,阿法狗零不依赖于任何人类对弈记录,完全从围棋的规则出 ...

  9. 浅谈Hybrid技术的设计与实现【转】

    https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...

随机推荐

  1. [原]Linux系统管理使用技巧总结

    一.磁盘管理 1.查看磁盘空间大小 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小.如果不带其他参数(-h表示human-readabl ...

  2. 在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题

    在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题   Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少 ...

  3. Saltstack系列5:Saltstack之pillar组件

    pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等. 在pillar中定义的数据与 ...

  4. WINDOWS黑客基础(6):查看文件里面的导入表

    int main(void) { HANDLE hFile = CreateFile("D:\\Shipyard.exe", GENERIC_READ, FILE_SHARE_RE ...

  5. Linux后台开发常用工具

    内存分析工具valgrind valgrind辅助工具qcachegrind 可视化查看valgrind结果 淘宝DBA团队发布的监控脚本,使用perl开发,可以完成对linux系统和MySql相关指 ...

  6. Yii集成smarty说明

    1.       [在protected目录下建立文件夹vendor/smarty,把smarty的类包放入其中] 2.       [在extensions目录下边建立文件CSmarty.php] ...

  7. eclipse 每次切换工作空间都要重新配置

    首先,导出T1中的配置打开T1,选择file --> Export --> 在弹出框中选择General 下的preference --> next --> 在export p ...

  8. Instant Run

    http://tools.android.com/tech-docs/instant-run N Developer Preview users: Instant Run is currently i ...

  9. Shell 重定向 &>file,2>&1,1>&2 的区别

    Shell上:0表示标准输入1表示标准输出2表示标准错误输出> 默认为标准输出重定向,与1>相同2>&1 意思是 把标准错误输出重定向到标准输出1>&2 意思是 ...

  10. HttpClient和HttpURLConnection整合汇总对比

    性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭 ...