【AI小白】何为AI
简介
本节我们会讲到何为人工智能,以及人工智能在我们现实生活中的应用。
各类学习资料请见 人工智能学习清单 经常更新
1. 人工智能的故事
1.1 人工智能史 (看心情完善中)
自计算机诞生之初(甚至早在其诞生之前),就有先驱者尝试用机器来模拟人的智能。
1950年,艾伦·图灵在《计算机器与智能》中提出了图灵测试。
图灵测试:测试者与两个被测试者(一个人和一台机器)隔开的情况下,测试者通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。
1956年达特茅斯会议提出:“学习和智能的每一个方面都能被精确地描述,使得人们可以制造一台机器来模拟它”
在这个会议上,一个新领域的名字被确定了下来——人工智能(Artificial Intelligence)
从此AI作为一名学科正式诞生。
从1956年至今,人工智能的发展经历过两次发展寒冬(发展历史可见《机器学习》周志华 1.5节)。
而如今,随着计算资源与数据量的飞速增长,人工智能进入第三次发展浪潮,并逐渐改善我们的生活。
1.2 生活中的人工智能
说起人工智能,也许你第一反应想到的是《我,机器人》又或是《西部世界》中有身体,会移动,有情感的机器人。
的确,这是人工智能。但目前我们生活中的人工智能可能会让你有点”失望”。
目前应用在我们生活中的人工智能不是能说会道、有自我思想的机器人,而是专注于解决某一个领域问题的程序。
如谷歌翻译的翻译系统、微信语音时的自动转化为文字、高铁的”刷脸”进站、手机拍照的自动聚焦、智能蓝牙音箱等等,都是由人工智能实现的。
除此之外,正在研究中的十分有趣的领域有:
- 智能作画
- AI作曲、AI写文章
- 人声生成
- 将二维图片转化为三维模型
- ······
未来,人工智能将成为自动驾驶、工业制造、医疗、安防、客服等领域必不可少的一部分。
2. 机器学习与人工智能
2.1 何为机器学习
在介绍何为机器学习之前,我先问你一个问题。
1到10的整数相加等于多少?
这太简单了,直接口算就能出来,55。那么
1到n的整数相加等于多少?
会编程的朋友可以很简单地写出几行代码,直接累加起来就可以了。
sum = 0
for i in range(n):
sum += i+1
再高级一点,我们可以直接用等差数列的加法公式,一行就搞定了。
sum = (1+n)*n/2
我们上面给出的公式,是“解决一个问题准确而完整的描述”,俗称算法。再简单直白一点,就是解决问题的方法。
对于整数累加问题,我们很容易就可以找到一个算法,那就是从一开始累加(没错,这么简单的方法也是算法)来得到结果。
再比如已知一个二元一次方程,我们可以用代码编写一个求根公式(这也是一个算法)来求得解。
看来,很多问题,我们只要知道了算法( 解决问题的方法 ),一直算下去就能得到结果了。
下面请思考一下这个问题,试图找到这个问题的算法:
已知北京市上万间房屋的数据(面积、地址等等信息)以及房屋的价格。请预估一间面积为A平方米,坐落在B处的房子的价格。
再或者这个问题:
已知数千张肺癌细胞照片与数万张正常肺细胞照片。如何预测一个肺细胞是否是癌细胞?
对于房价的问题,也许我们可以在人工看完所有数据后根据感觉写一个这样的算法:
if 房子在三环内:
房价 = 面积*100000 + 其他因素
elif 房子在五环内:
房价 = 面积*80000 + 其他因素
...
这里面的在三环、五环内以及每平方米十万、八万,都是我们根据感觉想出来的。即没有理论依据,也不准确。
而对于第二个问题,那就更难了,一般一个癌症专家需要有几年、十几年的行医经验才会有比较高的判断癌细胞的准确率。把这种方法写出if、else、for构成的代码,几乎不可能。
既然在这么多数据面前,自己的感觉把握不准,那么我们能不能让计算机自己学习数据,然后自己得出一套算法呢?
或者说,我们能不能找到一种能
自己学习数据,并求出相应算法的算法
由已知数据,学习出一套算法,并能很好地应用到新的数据上。这种学习就是机器学习。(关于机器学习的定义长期以来一直众说纷纭,这里笔者只是给出了自己的理解,非准确定义)
关于机器学习常见的英文定义来自于Mitchell
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
Mitchell 1997
周志华所著的《机器学习》 将其翻译为:
假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习
这种定义理解起来可能有点复杂,其实只要理解机器学习是 根据数据 学习算法的学问即可。
2.2 人工智能及其分支
这里,我们会具体探讨人工智能、机器学习和深度学习的区别。
人工智能,即用机器来制造出智能。
广义来说,人工智能是指有思想,有自我意识的机器。但目前人工智能的发展还只是初级阶段,能做到的智能只是模拟人类某一方面的感知,比如识别物体、语音识别成文字等等。(除此之外,有时候我们将大数据分析,如购物推荐、拥堵时段驾驶路线推荐等看上去和人的感知没什么共同之处的领域也纳入人工智能之中)
假设你刚刚学会了编程,现在请你设计一个可以聊天的人工智能,你会怎么做?
最显而易见的想法应该是这样的:
if 对方说"你好"或者"你好啊":
return "你好"
if 对方说"今天天气如何?":
return "今天天气是" + 查询天气()
if 对方说"帮我查一下明天的机票"
return 查询机票(明天)
...
很明显,根据人的经验,用代码认为定义每一种情况是一个很笨拙的方法,因为可能出现的情况是无穷多的。而且当有上千条,万条规则的时候,软件维护起来很复杂。
或者我们采取一个稍微明智一点的方式:
1. 首先,将对方的话拆分成名词、动词、形容词等
2. 由步骤一中得到的词来分析句子的语法
3. 尝试理解句子的含义
4. 生成应该回复的内容
这种方法对我们来说更符合逻辑,好像我们学外语的时候就是按照这个步骤学习的。但是对于步骤二、三、四来说,具体怎么实现很不明确。
在人工智能发展初期,科学家们的确是按照逻辑来的, 一些人工智能项目试求”将关于世界的知识用形式化的语言进行硬编码”,然后使用逻辑推理规则来解决这样的问题。(如1989年的Cyc项目)
然而随着研究的深入,使用逻辑推理的方法来解决问题出现的困难越来越多。这种人工智能实现的方式也逐渐被人们抛弃。
那么实现人工智能还有哪些比较好的方式呢?
还记不记得前面我们介绍的机器学习——根据数据自己学习算法
如果我们手边有上千万条人们的聊天记录(合法获取),我们可以让程序去学习这些聊天记录,自己学习如何回复。
关于如何学习这些数据,就是机器学习所需要解决的问题了。各种各样的解决方法我们会在后序的文章中讲到。(再不济,最笨的方法是从上千万条聊天数据库中找到与发问者对话最相似的语句,并回复数据库中的下一条内容)
由此可见,人工智能有很多实现方法,而机器学习是众多实现方法的一种。值得一提的是,机器学习也是目前最主流的人工智能实现方法,几乎所有应用在我们日常生活中的AI都是由机器学习实现的。
在我们使用众多经典的机器学习算法,如朴素贝叶斯、决策树、SVM等等之前,我们常常需要对数据进行人工处理。比如一个房子可能有面积、经纬度、所在街道、所在楼层、房间数等等数十甚至上百种与房间有直间或间接关系的属性(如Kagge比赛房价预测,需要我们根据79个属性来预测房价)。我们需要分析每个属性对最终结果的重要性,并对这些属性进行舍去、合并等操作(这种步骤称为数据预处理),生成出一些新的,更有意义的属性(我们称之为表示)
很多情况下,我们数据预处理的好坏直接关系到机器学习算法最终的好坏。也就是说:在经典的机器学习算法中,数据预处理成为了我们人工智能水平的天花板。
那么有没有什么办法能突破这种天花板呢?那就是采用表示学习。既然我们都让计算机自己根据数据学习算法了,那我们就让它学习得更彻底一点:让计算机先学习如何从原始数据中提取出有价值的内容,再根据这些有价值的内容进行学习。即先去学习这些数据的有意义的表示。
一般表示学习用在图像处理、声音处理等领域。像房价预测,由于其不同的属性差异性太大(面积属性是数值,在哪个街道属性是文字,是否南北朝向属性又是一个布尔值),一般我们还是采用数据预处理的方法来手动得出更有意义的属性(表示)。
在表示学习上再拓展一点,我们可以这样:
- 从原始数据中学习到有价值的内容
- 学习这些价值的内容,学习出更加高级的内容
- 再学习高级的内容,学习出更高级的内容
- ……
即堆成一个”塔”,每一层的内容都在之前一层内容的基础上学习而来。我们称这种表示学习方法为深度学习。
这里采用《深度学习》中的一个图来进行介绍。我们用深度学习算法来学习一个图片,原始内容是像素点,第一层学习到了边,第二层学习到了角和轮廓,第三次学习到了更加复杂的图形,一直到最后,可以识别出图片时人、车还是动物。(这是感性认知,具体每层内容到底学到了什么,每人能具体说清楚)
总而言之,机器学习是人工智能的一种实现方法。深度学习是一种表示学习算法,而表示学习属于机器学习算法。
总结与延伸
- 人们一直尝试用机器来模拟人的智能(人工智能 AI),虽然目前AI已经应用到我们的生活中,但其有专一性,每个人工智能系统只能用于特定的领域。
- 机器学习是“根据数据学习算法”的学问。
- 人工智能,机器学习,深度学习是截然不同的三个概念。
- 人工智能:尝试用机器来制造出智能。
- 机器学习是实现人工智能的一种方法。其他实现人工智能的方法如手动编写每一条规则等。
- 深度学习是机器学习的一种算法。机器学习其他算法还包括SVM,决策树,贝叶斯估计等等。
- 人工智能:尝试用机器来制造出智能。
- 机器学习应用包括数据挖掘、计算机视觉、自然语言处理、机器人决策等等。
读物推荐
视频推荐
- 人工智能应用:CS229 第一讲 (无字幕)第52分钟后
附录-课程规划
我把这个系列教程称为【AI手册】,因为与其说这是个教程,我更愿意称其为“指南”。
在AI这条路上,笔者也是一个学习者。记得我在刚接触AI时,面对眼花缭乱的资料不知从何下手、找不到合适的练手项目、看各种教程结果只是相同的基础知识看了很多遍,浪费了很多时间……
因此作为一个有一点点经验的”过来人”,笔者会把自己当初学习AI的经验、认为有价值的知识汇集成一个手册,一个“指南”。
尽量全面、详细、由浅入深地讲述入门AI的各类基础知识。尽自己可能做到:
- 合理安排内容,由浅入深,新手入门100%可靠。
- 一本指南,点出基本知识,给出相关深入知识的索引。避免各类教程内容重叠、节约大量找资料的时间。
- 提供配套练习代码(会讲各类包的使用,更会专注底层原理代码,拒绝”调包侠”)
- 对于入门者来说,这是一本资源查找书:各个领域、算法可以快速找到相应章节以及深入资料的索引。
注意:为了合理安排入门内容,整个手册的内容结构可能会时常更改,写过的文章也会时常修正、增添新内容。
强烈建议读者拥有python基础以及微积分、线性代数和概率论的数学基础。
本指南大体涵盖内容:
- 机器学习
- 机器学习基础(基本概念、算法原理及代码实现)
- 数据挖掘(特征工程、应用实战)
- 深度学习
- 深度学习基础(基本内容、Tensorflow)
- 计算机视觉
- 自然语言处理
- 强化学习
作者:M小白
未完待续…
3 thoughts on “【AI小白】何为AI”