02. 人工智能核心基础 - 导论(1)
Hi,你好。我是茶桁。
非常开心能够和再次见面,能够和大家一起来学习人工智能的这个课程部分。接下来我会给大家一个既内容充实又包含了一点点难度的这样的一个课程。
我希望上完我的课程之后,能够有所收获。能够收获到自己看本课程时期望的目标。
我们首先要有一个信任,你相信我基本上常见的我都是遇到过的。我能帮你解决这些问题,我的这个课程比起市面上其他的这个课程有什么特点呢?首先是我自己有 11 年的 Python 编程经历,就今年 2023 年正好是 11 年。
Python 当时在我开始学的时候,是一个非常非常小众的语言。我还记得,但是似乎 Ruby 都比 Python 稍微要热一点,现在 Ruby 和 Python 比当然差了很多,可是那个时候,因为一样的特性这两者被对比的很多。
第二,从我开始系统的学习,到做研究,到做项目开始,有 9 年的时间,在企业里的工作经历 6 年时间。
什么是人工智能
What is artificial intelligence?
接下来是一些关于学习的一些建议。这第一节课,我要跟大家带来一个很很重要的内容,就是我们这个课程叫做人工智能课程,那么咱们需要花费一些篇幅,来搞定的一个问题,就是人工智能到底是什么。
你有没有想过人工智能是什么?这个世界上现在对于人工智能到底是什么
几乎可以说每一个人的定义都不一样。不同的人,每一个同学其实都有一个自己的认识,每一个人其实对于人工智能的定义其实都不太一样。
我们可能在整个生活中会看到很多和人工智能相关的东西,例如 openAI 的 ChatGPT,Google 的 Bard,百度的文心一言,微软的 New Bing。再比如说美国 NASA 发射火星车。
日本,还有法国人经常会做这种拟人的机器人,当然有些电影里面会有类似于终结者这样的东西。
波士顿 Dynamic 他们会出这个机器狗,还有 AlphaGo、无人驾驶、语音识别,还有面部识别。
而目前,人工智能的其中一个分之,也就是生成式人工智能火的一塌糊涂是吧。
就这些东西,你会发现我们都把它叫做人工智能。但是你仔细看起来,好像这些东西的区别每个又很大。为什么我们把它都叫做人工智能呢?他们之间的共同性是什么呢?
有些科学家用 iPad 去自动监测水稻的整个生长,你会发现在这个过程中好像没有任何机器人相关的东西。但是我们也把它叫做人工智能。那人工智能到底是什么呢?
首先我想给大家一个很客观的说法,大家一定要知道你现在学的是一个前沿知识,所以大家一定要抱着一个很开放的心理。目前没有一个公认的对于人工智能的定义,整个人工智能,整个 AI 其实是有不同的学派,是有不同的争论的。
这个对于我们整个东亚教育体系的学生来说可能比较难以接受,这个就是咱们从小学的东西往往都是有标准答案的,基本上课本上的东西不容置疑。学一个东西往往刚开始的时候学的是什么什么的定义。
比方生态循环定义是什,动量的定义是什么。但是当我们如果说现在学的是一个研究生课程或者博士课程,你要特别习惯的一个点就是有很多很多很重要的内容,其实这个世界上是没有标准化定义的。
例如说很火的基因工程。那么什么是基因,其实不同的学派他们的定义是不一样的,在有些学派里,这个东西是基因,有些就不是。
现在的复杂系统。什么东西是系统?在不同的学派都不一样。
所以今天我们会带着大家从各个维度来理解一下人工智能,但是不会给他一个精确的完整的定义。因为人工智能在不同的时间段,在不同的学派,它的定义是不一样的。
There is no definition accepted by all the researchers or engineers.
当你上完课程,如果你发现你听到了两个关于 AI 的定义或说法,你只要知道他们其实是不同的人在不同的时刻,不同的问题场景下对于这个东西所做的定义,你要理解他们。
在咱们整个学习的过程中,从今天开始,你以后要学习到的这些知识,大家一定要知道。
我第一节课要给大家知道的一点就是,你学的东西很有可能之后是会变的,之后是会过时的。而且你学的这个东西很有可能再过几年他会被人认为提出来是错的。
之所以会产生这样的问题不是因为你当时学错了,而是因为你现在学的是一个比较前沿的东西,整个科学的进步。
大家可以去看一下有一段关于 Steven Hawking 当时还活着的时候的一段采访。他说我们做的事情就是不断的推翻前人的工作,并且等着我们的工作被后人推翻。这就是做前沿的事情所面临的一个问题。
所以大家一定要保持心态的开放,我发现我们做程序员出身的同学,很多同学比较固执。比方说有的同学会争到底学 Java 好还是学 C++好,到底学 PHP 好还是 JS 好啊等等。什么 Python 就怎么怎么样。
就互相争,这个争论其实完全没有必要啊。你们不知道 PHP 宇宙无敌吗?
如果想成为一个真正优秀的人,一定要保持一个开放的心。我给大家分享一个概念,是道德经的前两句话,这个可能很多同学都听过,但是呢多同学不理解他是什么意思。
所谓「道可道 非常道」,这个道可道是什么意思呢?就是如果一个道理它可以被说出来,那么它就不是一个固定的道理。如果一个道理可以被人说出来,那么他肯定就有另外一种说法,肯定不是永久的道理。
如果一个东西我们给他给了一个名字,我们是可以说出来的,这个名也是可以说出来的意思。如果有一个可以讲出来的名字,那么它也不会是一个固定的名字。就好比一个人,你能够给他起一个名字,一个东西你能够给他起一个名字,就能够给他换另外一个名字。
同学在这个过程中,第一节课我想多次跟大家强调的就是:要理解并接受这个世界的复杂性,以多维度多角度观察问题,切忌固步自封。
我为什么要跟大家来讲这些事情呢?有的同学说,你讲这些东西但没有用啊。我要年薪十几万二十几万,我想年薪四五十万,我想年薪赶快过百万,年薪千万。你给我讲讲怎么年薪四五十万,百万千万别扯这些闲的。
其实我想跟大家说的是,一个人如果你想突破自己现有的边界,想从一个月一万多、两万多到一个月四、五万,五、六万,甚至一个月平均下来能挣十几万二十几万,年薪百、万千万来说,这个时候重要的是你一定要能博采众长。
在我们 AI 的这个行业更是这样。就是你要能知道你学的这个东西是会变的,不要死板的去动他。那么这个时候就会有一个问题,我们在这个课程上学什么呢?
我们在课程上学的大家更应该关注的是那些不变的东西,例如我给大家就是讲 CNN 结构的时候,大家就一定要跟着我去思考,为什么当时人们提出来了 CNN,CNN 比起其他网络它到底解决了之前哪些不能解决的问题?它到底它的原理是什么?
只有你理解了为什么,那么当他之后出现新的东西的时候你也知道他改了哪些东西,你也更能跟上这个时代的变化。切记死记硬背。
我们把基础课上完之后,把基础东西掌握了。现在我跟你说很多东西可能你也不理解其中到底是什么意思,先把基础课上完。然后会有专门的时间给大家介绍。
虽然现在整个人工智能没有一个统一的定义,但是我们可以从不同的维度来给大家做一个分析。
从时间维度来讲
首先从时间维度上来分析。
最早最早的时候提出来人工智能,有的同学说可以把这个时间都扯到中国的伏羲啊、阴阳啊、八卦算盘。就有人说 AI、人工智能最早是中国的伏羲氏当时提的。什么阴阳变化啊各种定制。这个无从考证。
因为伏羲确实自己也没有留下什么可验证的东西,我们说一下可验证的东西。最接近的,最早是一个叫做图灵的人,当时提出来了一个问题叫做 Can Machines think,机器们能思考吗?
他在这个过程中讨论了一个问题,就是如何实现机器的智能化与自动化。在这篇文章里面他做了一个定义,机器如果有智能,如果能思考我们怎么去检测它。
在此之前其实图灵还做了一件很重要的事情,它提出来一个东西叫做图灵机,图灵机是一个什么东西呢?他是图灵在数学上证明了,如果我们能够在一个有限的带子上有一个状态,然后我们还有一个东西可以去读取他的状态。我们还有一些固定的操作,注意是固定的操作,这样的一台机器可以执行所有的运算,加减乘除,积分、微分,平方、开方等等。他证明了这样的一个简单东西可以执行所有的运算。除了他不能自动判断是否停机问题。
就是除了机器不能自动判断它是不是要停,除此之外它能够计算所有的计算。这是当年图灵提出来了一种机器叫做图灵机,他在理论上奠定了现代计算机的基础。
有的同学看完原始的文章后说这图灵机也太简单了吧,但图灵之所以厉害的地方就在于,你看一看我们学过的数学书、物理书、化学书,你就知道我们学过的计算有多少了,他把那么多复杂的计算变成了一个极其简单的模型。
把极其复杂的东西变成非常非常简单的东西,这才是需要非常大的智慧的。后来做完了图灵机,图灵又开始去思考机器能计算,到底能不能思考呢?当时这个文章写的很长,大家去去可以读他的原文。
图灵就提出一个很著名的测试,我们如何去测试机器有没有智慧。他给出了一个比较可行的方案,当时是说一个人在屋子外边,对面有两个屋子,其中一个屋子里也是一个人,另外一个屋子是一个机器。但是对于外边的这个人他不知道里边到底哪边是人,哪边是机器。屋外这个人可以给门缝里面去递一些那个纸条,给 1 和 2 递一些纸条。
当然那个图灵并不知道后来人们发明了互联网,可以直接打字。他当时还不知道有互联网这个东西。如果外边这个人他分不清楚里边这个人到底是人还是机器,我们就可以说对面的机器是有智慧的。
比方说他可以问对面啊一个非常复杂的数字。如果机器有智慧的话,按照图灵的理解是他会假装很复杂,虽然瞬间可以算出来,但是他会假装一下。或者他会问一些问题,比方说你吃了吗?你今天觉得这个天气怎么样啊?对或者问他一些哲学问题,比方说你觉得我们有自由意识吗等等。结果就是如果当外面的人发现他不能判断里边到底是人还是机器的时候,我们就说是有智慧的。
图灵当时提出来了图灵机和图灵测试,大家发现图灵想的东西都非常的高屋建领似得。他没有造出来任何机器。
在整个人工智能及计算机的历史上,有一个非常著名的人叫做冯诺伊曼。这个人把图灵提出来的计算模型,纸带加上一个读取物,再加上有线操作员,变成了一台机器。
这台机器通过电子管,电线连接起来,变成了一种真的能运行的机器。这种机器呢就叫做冯诺伊曼体系结构的机器。
这台机器当时在整个第二次世界大战中起到了非常著名重要的作用,世界第一台原子弹和它有密不可分的关系。就是刚才那个纸带,如果说我们要图灵机能够做出来真正可运行的,其实就是变成冯诺伊曼这样的结构,它变成了我们日后真正能运行的机器的基础。
后来到一九五几年,第二次世界大战结束,有一群很年轻的科学家就集中在一起提出来了一个单词,这个时候呢就有一个单词在一个词组,在人类的历史长河中被提出来就叫做:Artificial Intelligence,当时叫做 Every aspect of learning or any other feature of intelligence can be so precisely described that a machine can be made to simulate it.
什么意思呢?只要一种 intelligence 能够被表述,那么这个机器就能够去模仿它。当时一九五几年的时候,人们对人工智能,对于我们的这种 intelligence feature,比方说我们的眼睛看东西、人说话。大家觉得这种能力可能一二十年机器就可以做好。
因为当时人们制造出来原子弹,就觉得人类已经厉害的不行了。还有准备阿波罗登月等等。那个时候,就觉得人类已经非常非常厉害了。但是呢人们发现这件事情非常非常的困难,直到 2016 年才有了一些进展。
当年的这个会议,提出人工智能的会议,大家可以看到都是很年轻的科学家,都是二十几岁哎 30 岁左右的。
我一出镜有同学说,好年轻啊。其实我比起他们来说年龄已经算大了。大家一定要知道,所有的科学技术,高产期高分期一定是很年轻的时候,那个时候人的思维最活跃。在这些科学家里边,每一个人都成为了世界顶尖的计算机科学家。而且里面还有一个非常著名的人,克劳德·艾尔伍德·香农就在这里,香农后来是成为了我们信息论整个的开山鼻祖。
我们现在每天说 3G、4G、5G,我们每天用的互联网,其实都离不开香农的工作。
后来到一九六几年,人们提出来了一个非常简单的模型,这个模型叫做 Perceptron, 感知器。
Perceptron book showed that linear models could not solve XOR (Minsky / Papert) 1969, first AI winter.
感知器是最早的类似于现在的深度学习,但是他和现在深度学习还是有比较大的区别。他提出来了这样的一种东西,就是通过我们的简单的线性和非线性,简单线性变化,能够去拟合出一些函数。而且能够对我们的一些问题进行分割。
但是有数学家和计算机科学家就证明了,这种感知器模型连最简单的逻辑上的异或关系都解决不了。
什么叫做逻辑上的异或关系呢?
我们来看一下这张图左边的坐标轴,坐标轴 X1 轴是 0,1, X2 也有 0,1。
假如我们现在有逻辑上的 and,逻辑上的 or,逻辑上的 not。
如果是 and 的话,0 和 0 是不是就是 0,0 和 1 的话就是 0,1 和 1 就是 1,0 和 1 就是 0。
在数学上这种 Perceptron 其实它是类似于 ,其实它是一种线性变化。
线性变化的话它可以做线性分割,比方说 and,就可以线性的去把这个数据分割了。or 其实也可以, not 其实也可以。大家可以下来之后自己查一下。
但是人们就发现像这种异或关系,怎么样机器都是不能去解决的。就是你不能画一条线,把加号和减号给他分割开。在这是非常基本的一个逻辑操作。
人们就说这玩意连这个都解决不了,你还能干啥。后来人们就发现这个其实是希望通过函数拟合来解决我们的问题,希望通过函数拟合来解决类似于分类等等这种问题,类似于通过函数拟合来解决逻辑问题。
这部分听不懂没关系,因为这个方法现在已经不用了。你只要能知道一九六几年的时候人们已经提出来了一个和现在的深度学习模型比较相似的东西。但是后来他就不行了,因为他解决不了一些很基本的问题,就可以了。
后来从一九六几年开始,人们就把 AI 的这个问题转向了通过符号和逻辑运算,这是一九七几年八几年的时候最重要的一个方法。
Changed AI research to Symbols and Logics.
然后在 1980 年到 1990 年的时候,开始有一个人,这个人是 2019 年获得图灵奖的一个作者,叫做 Hinton。
Backpropagation, statistical learning, 1980s ~ 1990s
Hinton 当时在美国加利福尼亚圣地亚哥分校的脑科学认知科学实验室,当时就发现我们可以通过一种叫做反向传播的东西,再加上非线性变化来拟合复杂函数。
我们梳理一下时间段,一九三几年的时候图灵提出来了我们可以有一种机器,他可以执行各种各样的运算。一九四几年、五几年冯诺依曼就做出来了真的能计算的机器,一九五几年的时候提出来人工智能到底是不是模仿我们各种可以定义的 intelligence 的特征。 后来人们就提出来了一种 Perceptron 能够拟合简单函数。但是后来发现它其实连一些最基本的逻辑运算都做不了。到一九六几年,AI 有一个很重要的一个学派,现在这个学派其实也有很多人,只不过现在它不活跃了。就是此起彼伏,整个学派不活跃了。这个学派就是基于 Symbols 和 Logics 演算的。
到 1980 年有一个人叫做 Hinton,他当时就提出来可以通过一种叫做反向传播的方法来拟合复杂函数。
而同期,也是一九八几年,有一个很年轻的博士生,现在呢也是一个大佬了。这个人估计国内很多人都会比较熟悉,这个当时很年轻的博士生叫做李开复,他提出来一个东西,他的论文叫做一种能够自动识别语音的系统。
当时人们发现用 Perceptron,类似于函数拟合这种东西是解决不了 AI 的问题。人们把它变成了逻辑和推演问题,一九七几年、八几年的时候人们解决 AI 的问题是怎么解决的呢?比方说咱们现在输入了一段语音,机器要把这段语音到底是什么内容给他翻译出来。比方说这段语音我们听起来可能是「你好吗」,也有可能呢机器可能认为说是「泥耗马」,也有可能是「你好嘛」。
当时摆在这些科学家面前的问题是,人们其实已经能够通过语音来把它转变成以上三种的内容,就这些文字都可以转化出来。但是大家不知道,我让机器怎么能够「自动」,怎么样能够自动的去识别出来到底是 1、2 还是 3。
当时大家真的很恼火,就是做不出来。在全世界来说,大家都是在做什么语法分析,还定义了各种语法。大家学过那个英语语法吗?就是定义了很多语法规则,语法术。大家希望通过这些去解决,结果当时这个语法规则是越做越复杂,语言的特例实在是太多了。
后来人们就发现李开复提出来一个方法,就是他基于概率来做这件事情。怎么基于概率来做这件事情呢?
在李开复之前人们如何判断这句话对还是错,这句话为什么错,因为他不符合语法规范,因为他怎么怎么样一大堆。
但对于李开复来说他并不会说这个话真的就错了,其实这个话人家也有可能对。
举个例子,你像这个「泥耗马」,那现在很多网络用语里一些奇奇怪怪的用语和这个「泥耗马」很类似,也许其实这个「泥耗马」就是对的。
所以说,这些话其实并不能就给他打个对错,而是要判断它的概率。类似于我们在基于语境,放在网络上一句话是正确的,放在考试里大概率就是错误的。
李开复当时是怎么判断的?他的核心思想很简单,咱们不是有很多书籍吗?有很多文章,你给他统计一下,比方说,你可以统计出来这么多书里边「你好」出现了多少次,「吗」出现了多少次,「你好吗」出现多少次。
那么这个你好吗,这句话的概率它就等于:P(你好|吗)P(吗)。这是不是就是一个条件概率啊?之前仔细看了我数学篇的同学对于这个公式应该就非常熟悉了对吧?
「你好吗」的概率可以通过在文本中数个数来知道,你给我 10 万本书我给你数一遍,「吗」字也可以数出来。这样做结果就是我们把之前非常复杂的计算方式变成了数数就能解决的问题。其实数数就是我们的统计问题,统计本质上就是数数。
就上面这两篇论文,把我们的整个 AI 从以前的符号分解,带到了我们的神经网络加上统计学这样的一个过程中。
后来发展到了 1998 年,有了一个真正的能解决实际问题的 AI 程序了。看起来很复杂的一个视觉上的程序,解决自动识别问题。
0123456789,手写字母识别。当时是杨立坤使用一种叫做 CNN 的网络解决了 0-9 之间,识别手写数字的问题。大家就对它越来越有信心了,但是当时是又由于我们的计算能力和我们的数据量,之后大家知道这种 CNN,神经网络其实特别需要计算力和训练数据的数据量,导致没有大规模去应用。
时间到了 2015 年,准确的说最重要的是 2012 年。当时有一个叫做 image net 这样的比赛,image net 有 1,000 多万张图片,有 1,000 多类,让大家自己去做图片分类。
当时 2010 年的时候图片分类的 TOP5 的错误率有将近 30%,TOP5 的错误率是什么意思?就是我也不指望你全说对,你给出 5 个可能的选项,其中有一个对了就算你对,这叫 TOP5。
就是你给 5 个,只要里边有一个对了就算你对。当时的正确率也只有 72%。
如果你要按 TOP0 啊 TOP1 的话,那估计就错误率能超过 50%。这是咱们 2010 年时候的情况,就很差。
其实从 08 年之前大家一直也都在尝试,基本上是每一年能前进 1%,最多 2%。所以在 2010 年的时候,当时有一些科学家预言人工智能能在实际生活中落地大约在 2040 年左右。为啥呢?你看这个错误率是不是 30%,2010 加 30 就是 2040 年代。就按照这个速度,都是每一年前进一个百分点,两个百分点。
结果到了 2012 年这个错误率基本上相当于是拦腰折断了。
是一个科学家的学生用了一种模型,这个模型就叫做深度神经网络。他的错误率直接下降到了 16%,拦腰折断。后来从 2012 年之后每一年的错误率都迅速下降,到了 2015 年的时候错误率已经低于人类、低于人眼了。人其实也会犯错误。2015 年的时候准确度已经达到 99.7%,低于人类了。
那这个时候是不是就意味计算机在识别物体的这件事情上已经低于人类?是不是就能意味着他有可能能商用了?真正的计算机在我们国家开始大规模应用落地,开始蓬勃爆发其实也就是产生在 2016、17 年。
你现在回忆一下,在 8 年前,如果是春运的时候,比如像北京西站杭州东站成都东站这种大站,郑州站这种,是不他临时会在外面安排很多检票员,二三十个。
北京机场很夸张,每年那个时候会有 30 多个临时检票窗口,有 30 多个人在那里检票检测。
但现在,坐高铁的话全部都是身份证自动比对了。大家知道,就是对于我们的孩子来说,他就觉得这是很正常的一件事情,身份证放到这边然后人脸识别直接通过。但其实就在 8 年前,这件事情还是做不到的,还得有一个人在那里吭哧吭哧在那检查。
这就是我们其实我们是亲眼见证、感受了这个时代,从 2012 年到现在真的产生这样大的变化。
当时,2012 年带队的这个科学家叫做 Alex,他就是刚才我们提过的 Hinton 的学生。Alex 做了什么事情呢?他把我们刚才提到的 1998 年的那个网络做了优化,做了分布式。
然后在这个时候,硬件和数据已经都 OK 了,所以他改动之后取得了当时的世界第一,在人类的科学进步史上留下了不可磨灭的作用。
2016 年又发生了一件很重要的事情,当时一个叫做 Deepmind 的公司要挑战当时的职业围棋九段。
围棋这件事情在整个人类的所有的游戏中是公认的难度最大的,就当年的 IBM 可以下赢国际象棋,但他就是下不赢围棋。甚至有科学家证明了围棋这件事情在现有的计算体系下是无法被解决的。
但是 Deepmind 这个公司的首席科学家就说,为什么人类要这么痴迷于游戏呢?是因为游戏其实是对我们现实世界问题的一种抽象和简化,而围棋是所有的游戏中对人类的这个世界抽象简化程度最为相似的,所以它的难度也是最大的。
在 Deepmind 之前,世界上最先进的人工智能程序都不能打败职业的初段的选手,结果 AlphaGo 要挑战。Deepmind 要挑战的是李世石,一个职业九段。这个我不得不佩服一下,我们不得不佩服谷歌的这个公关能力、市场能力。
他为什么当时这个比赛要去选李世石呢?其实当时李世石不是世界排名第一的棋手,当时排名世界第一的是柯洁,也是中国的年轻人。但是李世石是柯洁之前的世界第一,李世石当时年龄已经大了,但是因为李世石是柯洁之前当了好多年的世界第一,所以李世石在全世界来说名气更大。
围棋选手都是黄金期就那么几年,他现在年龄稍微大了,脑子又跟不上了,人又是职业九段,名气又大,难度又不是最大的。所以说,谷歌当时就搞了这么个东西。结果赢了,赢了之后他们就发现,就说这东西都是很机械的,都不是智慧。
人们一直说围棋是智慧,因为里面有推理,感觉有分析、有逻辑。AlphaGo 当时的成功其实就证明了我们现有的这个计算机科学,整个人工智能能解决推理问题。这也是非常非常重要的一个操作。
后来到了 2019 年开始,我们会发现一个叫做 Alot 的概念被广泛接受,所有的工厂,所有的东西都有了 AI 的智能化。
在十几年前我们有人提物联网,大家会觉得是个很遥远的事情。但是大家想一下,你最近有没有骑那个共享单车啊?有没有用滴滴打车去打车?你会发现现在的这个智能化,其实它不仅仅是在以前的什么下个棋什么的,所有常用的硬件它都联网了,车的调度、自行车的安排等等。
从 2019 年之后,各个领域都开始做人工智能的东西。这是我们说的第一个维度,就是从时间维度上来说,不同时间段的人工智能有不同的这个侧重点,有不同的影响世界的东西出现。
版权声明: 本文为 InfoQ 作者【茶桁】的原创文章。
原文链接:【http://xie.infoq.cn/article/f8f94f88e5f4b87dc970414e3】。未经作者许可,禁止转载。
评论