1. 人工智能 1.1. 人类对人工智能的梦想,可以追溯到很久很久以前 1.1.1. 从古希腊开始,铁匠之神赫菲斯托斯(Hephaestus)拥有赋予金属物品生命的能力 1.1.2. 从16世纪的布拉格开始,传说中伟大的拉比在那里用黏土制作了一个傀儡魔像,意图保护该城市的犹太人免遭迫害 1.1.3. 从18世纪苏格兰的詹姆斯·瓦特(James Watt)开始,他为正在建造的蒸汽机设计了一个巧妙的自动控制系统——调速器,从而为现代控制理论奠定了基础 1.1.4. 从19世纪初开始,年轻的玛丽·雪莱(Mary Shelley)被恶劣的天气困在瑞士的一栋别墅里,和她的丈夫——诗人珀西·比希·雪莱(Percy Bysshe Shelley),以及他们家的朋友拜伦(Byron)勋爵一起,玩了一场文字游戏,创作了《弗兰肯斯坦》 1.1.5. 从19世纪30年代开始,在彼时的伦敦,查尔斯·巴贝奇(Charles Babbage)发明了分析机,这激励着才华横溢的阿达探寻机器是否最终能够具备创造性 1.1.6. 从18世纪掀起的自动机器装置狂热开始 1.2. 人工智能故事的开头与计算机的开端应该是一致的 1.2.1. 艾伦·图灵(Alan Turing) 1.2.1.1. 图灵在诸多领域都有非凡成就,最非凡的是在偶然的机会下,他发明了计算机 1.2.1.2. 1935年,剑桥大学国王学院,一位才华横溢、不拘泥于传统的年轻学生 1.2.1.3. 1952年,他以“严重猥亵罪”被起诉和定罪,被迫服用某种旨在降低性欲的粗制滥造的药物来进行所谓的“化学阉割” 1.2.1.3.1. 图灵是同性恋,在当时的英国,同性恋是一种犯罪 1.2.1.4. 1954年,他亲手结束了自己的生命,年仅41岁 1.2.1.5. 图灵在第二次世界大战期间为英国政府效力,承担了一项非常重要的工作,而这项杰出工作的成果一直秘而不宣,直到20世纪70年代才公开 1.2.1.6. 在20世纪80年代,这个名字在数学和计算机领域以外压根不为人知 1.2.2. 人工智能研究人员和计算机科学家崇拜图灵,是出于完全不同的理由 1.2.2.1. 他是真正意义上的计算机发明者,不久,又成为人工智能领域的主要奠基人 1.2.2.2. 他发明了一种可以解决数学问题的机器,如今,为了纪念他,我们称之为图灵机 2. 判定问题 2.1. 由数学家大卫·希尔伯特(David Hilbert)于1928年提出 2.2. 判定问题是指,是否所有的数学描述都是“可判定的”,即是否存在一种方法,可以确认某个给定的数学描述是真是假 2.3. “某个数是否是一个质数”是可判定问题 2.3.1. 每当我们遇见“数n是否是一个质数”这样的问题时,只要给予足够的时间,就能找到答案:遵循相关步骤执行,最终就能得到明确的答案 2.4. 英国数学家安德鲁·威尔斯(Andrew Wiles)在20世纪90年代论证著名的费马大定理,数学界花费了好几年时间才消化了他那几百页的手稿,并确信他的论证是正确的 2.5. 是否所有的数学判定问题都是可判定的? 2.6. 是否存在某种数学问题,无论你投入多少时间,都无法寻找到相应的可供严格遵循来解决问题的方法? 2.7. 本质是数学问题是否都可以简化为寻找对应算法就可以解决的问题 2.7.1. 图灵在1935年给自己立下的艰巨挑战,而他以令人难以置信的惊人速度解答出来了 2.7.2. 图灵的证明短小精悍,而且很容易读懂(在确立了基本框架以后,真正的证明实际上只有几行) 2.8. 图灵机的作用是严格遵循既定的步骤执行运算 2.8.1. 如果所有的判定问题都是可以解决的,就意味着任何判定问题都可以通过设计一个专用的图灵机来解决 2.8.2. 为了解答希尔伯特的问题,你所要做的是,证明存在某种判定问题是任何图灵机都无法解决的 3. 停机问题 3.1. 给定一台图灵机和相关输入集,它最终是会停止,还是永无止境地运行下去? 3.1.1. 这就是一个判定问题了 3.1.2. 图灵指出,这个假设会引起悖论 3.1.3. 没有办法检测出图灵机是否停止。那么,“图灵机是否停止”是一个不可判定问题 3.1.4. 存在某些判定问题不能简单地按照确定的步骤来解决 3.1.4.1. 数学并不能被简化为遵循方法解决问题 3.2. 如果存在图灵机A,对它输入任意图灵机,都能够判定其运行结果是“停机”或者“不停机” 3.3. 那么可以构造图灵机B,调用图灵机A但输出永远与之相反,即B的输入经A判定“停机”,则B“不停机” 3.4. 如果B的输入经A判定“不停机”,则B“停机” 3.5. 那么,图灵机B的输入为图灵机B本身时,则出现矛盾 3.5.1. B只有在“停机”的时候才能“不停机” 4. 冯·诺依曼架构 4.1. 匈牙利裔数学家约翰·冯·诺依曼(John von Neuman)对ENIAC进行了相关调整,使ENIAC具备现代计算机的基本架构 4.2. 世界上第一台商用计算机“费兰蒂一号”的出现 4.3. 随着时代的发展,计算机变得越来越小巧,越来越便宜 5. 电子大脑的实际功能 5.1. 用计算机处理海量的复杂算术问题,其速度和精确程度远远超乎人类想象 5.2. 电子大脑确实能承担许多对人类而言烦琐、复杂且困难的计算,但它们并没有智能可言 5.3. 图灵机,以及它的物理表现形式计算机,它们只是遵循各种指令的机器而已 5.4. 我们给予图灵机的指令,现在被称为算法或者程序 5.4.1. 高级语言的作用是向程序员隐藏机器语言中某些烦琐到可怕的细节,让编程变得容易一些 5.4.2. 所有的计算机程序都能归结为类似的指令列表 5.4.2.1. 不管是Microsoft Word还是PowerPoint,不管是《使命召唤》还是《我的世界》,不管是脸书、谷歌还是淘宝,不管是浏览器还是手机App,抑或是支付宝、微信、QQ 5.5. 如果我们要制造智能机器,它的智能最终必须缩减到遵从这些简单的、明确的指令上 5.6. 计算机的运算速度非常快,非常、非常、非常快 5.6.1. 一台普通的台式机以全速运行,每秒可以处理1000亿条指令 5.6.2. 1000亿大概是银河系所有恒星的数量 5.6.3. 你大概每10秒执行一条指令 5.6.3.1. 你得做到不吃不喝、不眠不休(全年365天,全天24小时,每小时60分钟,每分钟60秒),那么大概需要31710年,你才能完成计算机1秒钟就能搞定的工作 5.7. 相比人类,计算机的错误率极低 5.7.1. 程序崩溃是常见的,但那几乎全是程序员编写程序时出的错,而不是计算机本身的问题 5.7.2. 现代计算机的处理器可靠性非常高,它们的平均无故障运行时间高达50 000小时,每秒钟都能忠实地执行数百亿条指令 5.8. 计算机可以做决策,只是我们必须给出它做决策所需要的精准指令 5.8.1. 计算机随后可以自行调整这些指令,只要我们指导它在何种情况下应该如何做 5.8.2. 意味着,计算机可以随着时间推移改变其行为 5.8.2.1. 它能够学习 6. 人工智能的产生为何如此艰难 6.1. 需要了解一下到底哪些问题是容易用编程来解决的,而哪些问题则很难用编程解决,以及为什么 6.2. 计算 6.2.1. 让计算机做计算是最简单不过的,因为所有的基础运算(加、减、乘、除)都可以用非常简单的步骤来运行 6.3. 排序,是指把一系列随机的数字按照升序排列,或者一系列姓名按照字母顺序排列 6.3.1. 传统的笨办法慢得令人发指 6.3.2. 一直到1959年,快速排序法才被发明出来,排序这个老大难问题才算得到了一个有效率的解决方法 6.3.3. 快速排序法诞生后50年内,都没出现比它更优秀的排序算法 6.4. 下棋就是重大挑战之一,它也是人工智能故事中非常重要的一环 6.4.1. 事实上,有一种简单粗暴的方式可以玩好棋类游戏,基于一种名为搜索的技术 6.4.2. 问题在于,尽管基于搜索进行编程是最简单不过的事情,但它除了能适应一些简单的游戏以外毫无用处,因为它需要占用太多内存,消耗太多时间 6.4.3. 哪怕我们把整个宇宙的每一个原子都用来建造计算机,它也承担不起用“简单粗暴”的搜索方式来下一盘围棋或者象棋 6.4.3.1. 它们需要的计算资源太过庞大 6.4.4. 已经通过一种名为机器学习的方式得到了解决 6.5. 无人驾驶汽车 6.5.1. 驾驶对人类而言是一件很简单的事情,开车并不是一项需要高智商的技能 6.5.2. 事实证明,让电脑来控制汽车简直困难重重 6.5.3. 主要的问题在于,汽车需要知道它所处的位置以及周围环境 6.5.3.1. 要弄清你的周围发生了什么,即将发生什么 6.5.3.2. 确认你的位置,周围有哪些车辆,它们的位置,它们会朝哪个方向行驶,行人的位置,行人的移动轨迹 6.5.3.3. 如果充分掌握了所有信息,那么你决定接下来该怎么做就非常容易了 6.6. 任务难以完成的原因通常有两种 6.6.1. 第一种是我们虽然知道理论上有某种可以解决问题的方法,但实际上却行不通,因为它需要太过漫长的运算时间,占用太高的内存,像象棋和围棋这样的棋类游戏就属于这一类 6.6.2. 第二种是我们不知道解决问题的方法是什么(例如人脸识别),要解决这类问题,我们需要一些全新的东西(例如机器学习)