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

【独家】深入浅出话AI:定义和主要研究方法

直入主题,咱们该先给人工智能来个全面的定义,对吧?


但悲催的是这种清晰唯一的定义在人工智能研究圈里是不存在的!(不存在至少是因为理解和定义智能本身就是个正在进行时。)


人工智能的三种定义


我们确实有很多种方式来定义什么是人工智能。第一种,也是最常见的一种,从人工智能研究广受欢迎的成果的角度:大体上来讲,人工智能或者是“创造和研究具备智能行为的机器”(注意:“具备”是怎么解释都行),或者是“创造和研究可以思考的机器”(注意:什么样的“思考”都行)。


第二种定义是从人工智能的组成部分或者其想解决的问题的角度,您最常听到的是这样的:


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

图译

计算机视觉:如何识别目标?

语音识别与合成:如何将声音转化为文字或将文字转换为声音

自然语言处理NLP:如何从语言中提炼有意义的特征?以及如何在生成式语句中赋予有意义的特征?

知识表示:如何用一种更实用的方法(例如,分层级的,语义网络)给信息排序?

推理:如何通过整合碎片信息形成结论?

规划:如何计划一系列行动,以确保这些行动被执行的同时,能达成特定的目标?


所以这儿我们忍不住用一个更有文化的-或者说更高大上的-方式去定义人工智能。 Astro Teller(现任X,Alphabe’s moonshot factory的首席执行官)在1998年提出:“人工智能是研究如何使机器做他们在电影中干的事情的科学”。


这个定义差不多就是通用人工智能(强AI 或者全AI)和超级人工智能的概念,这些所谓智能的例子在科幻小说里非常多。小说里总会说这个通用系统将会达到或者超过人类的能力- 也就是说,人工智能将会整合我们刚才列出的全部功能。


现在人工智能评论员们中最流行的活动之一是试图猜测天网(电影终结者里的人工智能防御系统)何时被取代。如果你注意到针对通用人工智能和超级人工智能的各种预测存在着巨大差别,也会由衷地觉得很难定论这些预测是高估还是低估人工智能,而且这种水平的机器智能是否可以做到。


AI的主要研究方法


从上个世纪50年代开始,人工智能一般采用两种方法进行研究:

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

第一种方法是首先制定规则,然后通过阶梯树解决问题。人工智能的先驱们,很多是逻辑学家,他们很喜欢这种方法。这种方法在上个世纪八十年代随着专家系统的诞生达到顶峰,例如,系统把从有机化学专家那儿获得的知识库和决策引擎封装在程序中,就能帮助化学家们识别不知名的分子。


问题是这样的系统在开发一个新模型的时候,你必须从头开始-那些手写的,具体的规则本身就非常困难,或者最后就不可能归纳起来运用在不同问题之间,例如语音识别的规则很难用在医学诊断上。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

第二种方法是建立一个通用模型,这种方法只需要通过提供数据调整模型参数即可,是近期最受欢迎的方法。


有些模型与统计学方法相当接近,但最有名的那些模型是受神经科学启发而建立的,即人工神经网络。这种人工神经网络都有一个共有的通用方法:

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

图译

1、它们由神经元构成

2、它们被组织在不同的层里,信息通过输入层,“隐藏层”(由于在中间),然后到达输出层

3、神经元和层之间存在数量巨大的连接(这些连接可能是向前的、向后的,甚至同一层内相邻的神经元之间也会存在连接)

4、这些连接代表了权重,表示某一个连接两端神经元的相对重要性,负权重代表一个神经元对另一个神经元存在抑制作用,正权重代表一个神经元对另一个神经元存在刺激作用。


目前火爆的深度学习,估计大家现在都有所耳闻。深度学习就是一种由大量的层组成的上述类型的人工神经网络 – 因此很“深”, 它在图像目标识别中取得了相当好的成果。


另外,机器学习模型分为三类,都是可能会遇到的:


有监督学习:给模型输入标识过的数据 – 例如一个典型的猫的图片,这张图片带着一个“猫”的标签。


无监督学习:给模型输入未标识的数据,靠它自己进行模式识别。因为数据经常不会被标识 – 想想所有堆积在你智能手机里的照片-并且标识过程很花时间,所以无监督学习方法虽然更难并且不够完善,但是看起来比有监督学习更有前景。


增强学习:每次模型迭代后,你都会给它一个评级。举一个DeepMind的例子,它训练了一个玩古老的雅达利游戏的模型,模型里的等级是游戏显示的分数,模型渐渐地学会了如何获得最多的分数。增强学习方法可能是三种方式中最不完善的,但是最近DeepMind算法的成功已经清楚地表明在增强学习上的努力获得了丰硕回报。


人工智能不是一棵树。而是一片灌木丛!


所以,当把人工智能解决的问题结合在一起时,会发现它是随着各种学派而变化的,这些学派还有自己的分支,有不同的目标和受到不同来源的启发……这样大概就能理解为什么想把这个领域的研究做个完美分类总是有问题的。请看下图 – 看出来问题了吗?


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


把“机器学习”和“语音”放在同一个层次是不准确的,因为你能用机器学习模型解决语音问题 – 他们不是并行的分支,但是,其他更加不同的分类更让人纠结。


因此,人工智能领域的难与美之处就在于它肯定不是一棵有序的树,而是一片灌木丛。一个分支的成长比另一个快,就会进入大家的视野,然后又轮到另一个分支发生类似的情况等等。有些分支会产生交叉,另一些不会,一些分支被淘汰,又有新的出现。


因此最核心的一条建议是:永远别忘了大方向和重点,否则你就会迷失!


原文发布时间为:2017-04-01

本文作者:方芳  冯羽

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”微信公众号

相关文章:

C#语言与面向对象技术(3)

本图文主要掌握以下问题: 1. 什么是多态? 2. 多态如何分类? 3. 运行时多态与编译时多态有什么区别? 4. 方法如何重载? 5. 运算符如何重载? 6. override与overload有什么区别? 7. 抽象方法…

【亲测有效】如何安装屏幕录制工具ScreenPresso

ScreenPresso是一款功能强大的截图和录制屏幕工具,安装后可以通过简单的操作就可以录屏屏幕录像。 【安装包】:下载地址 【环境要求】 1)win10操作系统 2)ScreenPresso安装包 【安装步骤】 step 1 双击已经下载的安装包文件…

2007过年休息的日子

今天值班,2007年上班期间难得的轻闲机会了。借此,为老朋友们更新一下我的近况。年前四五天就请了年休假,准备享受不用上班的日子。以为能过得轻松惬意,想不到没完没了的家务怎么也做不完,似乎每天都是做饭和打扫卫生&a…

Matlab与线性代数 -- 数组的表示,冒号的用法

这段时间有同学给我后台留言,希望能够推送与Matlab相关的内容,本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务,想来想去,就以此为契机,把Matlab的内容和线性代数的内容结合起来吧,…

利用SurfaceView显示正弦曲线,仿造示波器

众所周知,view是通过刷新来重绘视图的,Android系统通过发出VSYNC信号来进行屏幕重绘,刷新的时间间隔为16ms,如果在16ms内view完成你所需要的所有操作,那么用户在视觉上就不会产生卡顿的感觉;而如果执行的操…

如何使用OWASP Dependency Check的命令行(CLI)模式进行依赖库安全漏洞扫描

OWASP Dependency Check是一款用于识别项目的依赖项是否有已知漏洞的工具,本文介绍一下如何使用Dependency Check工具的命令行模式进行依赖库漏洞扫描。 【下载地址】:安装包下载 【环境要求】: 操作系统:centos7.5 【使用方法…

E8.Net 2005工作流平台版本发布

2007年2月,完成了EPowerFlow.Net2003版本升级到E8.Net2005版本的工作,今后E8.Net工作流平台就可以使用Microsoft Visual Studio 2005(SP1)的进行应用开发了。EPowerFlow.Net2003版本将继续保留一段时间,未来将全面推广E8.Net2005版本。E8.Net…

设计模式系列·抽象工厂模式

前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列王小二需求历险记(一)设计模式系列王小二需求历险记(二)设计模式系列封装、继承、多态设计模式系列初探设计模式之王小二的疑问设计模式系列Facad…

14级团队学习成果汇报 -- 利用express+socket.io搭建简易版聊天室

周鹏,14级数理系,信息与计算科学大三学生。在LSGO软件技术团队负责前端部分,本图文是他的一个完整作品,代码可在Github上下载。

String复习笔记

注:可以在我的下载中下载完整word版 我的String学习体系 不可变 常见操作 补充:重载 在变成连接符String s "abc"24"haha";格式化输出 thinking in java 的例子 StringBuffer 简介 常见操作

面向对象模型的四种核心技术

1、分类类是具有相同属性结构和操作方法的对象的集合,属于同一类的对象具有相同的属性结构和操作方法。分类是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例”(instance-of)的关系。同一个类中的若干个对象&#xf…

Matlab与线性代数 -- 线性间隔向量

这段时间有同学给我后台留言,希望能够推送与Matlab相关的内容,本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务,想来想去,就以此为契机,把Matlab和线性代数的内容结合起来吧,希望对…

盖茨基金会:如何使用Python拯救生命

每年全球都要花费数十亿美元来预防疾病,减少死亡,资助预防保健及治疗的各种研发项目,以及其他的健康方案。但资金毕竟是有限的,所以一些组织,比如全球卫生资金的主要捐助者比尔&梅林达盖茨基金会(Billa…

正则表达式复习笔记

注:可以在我的下载中下载完整word版 复习体系 简介 正则表达式是:符合一定规则的表达式。 作用:用于专门操作字符串。 特点:用一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊符号…

规划文章的“显示效果”,还是太多犹豫。

现在的一篇文章可能有“带图片”(现称焦点),头条(可能要重新命名标题),有几种显示效果的情况怎么办?把头条和焦点规划到一起来?想不出一个比较好的解决方案。初步准备“一对多”。先…

Matlab与线性代数 -- 方阵的行列式

这段时间有同学给我后台留言,希望能够推送与Matlab相关的内容,本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务,想来想去,就以此为契机,把Matlab和线性代数的内容结合起来吧,希望对…

《深入浅出iPhone/iPad开发(第2版)》——在Xcode中建立你的界面

本节书摘来自异步社区《深入浅出iPhone/iPad开发(第2版)》一书中的在Xcode中建立你的界面,作者 【美】Dan Pilone , Tracey Pilone,更多章节内容可以访问云栖社区“异步社区”公众号查看 在Xcode中建立你的界面深入浅出iPhone/iPa…

Struts2+spring+jdbc 以xml配置形式整合

今天做作业&#xff0c;练习一下Struts2springjdbc 以xml配置形式整合 整合步骤&#xff1a; 工程结构图&#xff1a; 重要配置文件 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.…

我和你不了的故事

我和你不了的故事——代腾飞 2006年12月11日 于成都你无言告别而消失得无影无踪我的世界只留下了你昔日的背影从此你我相隔在不远不近的时空里然而我却失去了你所有的联系你带走的是我们在一起的欢歌笑语为我留下的却是思念的苦楚和美妙而难忘的回忆不知此时的你是否偶尔能把…

前后端分离的探索(四)

文桥&#xff0c;13级机械电子工程系&#xff0c;大四学生。在LSGO软件技术团队负责前端部分&#xff0c;本图文是介绍目前流行的前后端分离技术的第四篇&#xff08;一共六篇&#xff09;&#xff0c;希望大家能够对这块有所了解。

《Adobe Fireworks CS5中文版经典教程》——导读

前言Adobe Fireworks CS5是一款专业级图像处理应用程序&#xff0c;融矢量和位图处理功能于一身。之所以采取独特的图像处理方法&#xff0c;是由于Fireworks旨在让用户能够创建和处理屏幕图形&#xff0c;以供Web或诸如移动应用程序和Adobe Flash等基于屏幕的工具使用。Firewo…

使用wsimport生成本地调用代码

使用wsimport生成本地调用的步骤 wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具. wsimport.exe位于JAVA_HOME\bin目录下. 常用参数为: -d<目录> - 将生成.class文件。默认参数。 -s<目录> - 将生成.java文件。 -p<生成的新包名> -将生成的…

单片机练习-RC-5红外遥控器程序及简单制造DIY PC遥控器

本程序采用的芯片为SAA3010, 参考资料有:1. 常用红外遥控接收头引脚图解2. 红外遥控编码资料3. RC-5红外遥控程序 4. GIRDER中文教程与电脑遥控器制作资料 5. Girder网站 (一个需要钱买的遥控)6. 再度出击&#xff0c;20元打造经典PC遥控器&#xff01;7. SAA3010 DataSheet这次…

《iOS9开发快速入门》——导读

本节书摘来自异步社区《iOS9开发快速入门》一书中的目录&#xff0c;作者 刘丽霞 , 邱晓华&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录前 言 第1章 iOS 9开发概述 1.1 iOS 9新特性 1.2 构建开发环境—Xcode 7.0 1.3 编写第一个iOS 9应用 1.4 小…

C#语言与面向对象技术(4)

本图文主要掌握以下问题&#xff1a; 1. 为什么要引入属性的概念&#xff1f; 2. 属性的get与set方法是怎样定义的&#xff1f; 3. 什么是索引器&#xff1f; 4. 索引器是如何实现的&#xff1f;

使用wsdl2java命令生成webservice本地调用代码

使用wsdl2java命令生成webservice本地调用代码 如果没有设置环境变量&#xff0c;就要先进入cxf的bin目录 例子&#xff1a; wsdl2java -d . http://localhost:7890/hello?wsdl 它包含以下参数&#xff1a; &#xff0d;d参数&#xff0c;指定代码生成的目录。 &#xff0d…

js表单验证大全

js验证表单大全1. 长度限制<script>function test() {if(document.a.b.value.length>50){alert("不能超过50个字符&#xff01;");document.a.b.focus();return false;}}</script><form namea οnsubmit"return test()"><textarea…

《为iPad而设计:打造畅销App》——大胆创意

本节书摘来自异步社区《为iPad而设计&#xff1a;打造畅销App》一书中的大胆创意作者【英】Chris Stevens&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 大胆创意为iPad而设计&#xff1a;打造畅销App其他的应用开发者都在做什么呢&#xff1f;或许应该在应…

Matlab与线性代数 -- 对数化间隔向量

这段时间有同学给我后台留言&#xff0c;希望能够推送与Matlab相关的内容&#xff0c;本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务&#xff0c;想来想去&#xff0c;就以此为契机&#xff0c;把Matlab和线性代数的内容结合起来吧&#xff0c;希望对…

ContentProvider访问问题

问题解决一&#xff1a; 写了一个类&#xff0c;实现了ContentProvider&#xff0c;在清单文件中也注册了。 <provider android:name".provider.MyProvider" android:authorities"mytest" /> 但是访问的时候出现异常&#xff1a; j…