● 本书为本丛书中的第四册。
● 人工智能作为引领未来的战略性技术,世界各国都高度重视。近年来,人工智能已经成为国家、研究机构、企业、高校关注的焦点。随着大数据时代的到来,以及计算能力的提升,人工智能在技术领域的突破日新月异。本书精心挑选了五个实践项目,将带领读者们一边理解原理,一边编写代码,以理论与实践相结合的方式认识人工智能。另外,为了能够满足不同层次读者的需要,设计了多条学习路径,使不同层次的读者都能体验人工智能的神奇。零基础的读者,仅通过阅读本书就能快速地了解用到的算法;对编程感兴趣的读者,可了解书中介绍的每一种算法,并根据给出的Python代码,配合注释与讲解,尝试一步一步编写AI算法;没有编程基础的读者,可以通过可视化拖拽式的方法体验AI系统;有编程经验的读者,可以通过DIY方式搭建自己的AI系统。
Talkischeap,showmethecode,大名鼎鼎的Linux系统创始人林纳斯·本纳第克特·托瓦兹(LinusBenedictTorvalds)在2000年给编写Linux系统核心的成员群发了一封邮件,里面提到了这句话,翻译成中文就是多说无益,给我看你的代码!这句名言在计算机科学届广为流传并奉为金句。计算机作为一门实践性很强的学科,理解理论后动手写出可运行的、能看到成果的代码才是硬道理。人工智能是计算机科学中应用场景多的子学科之一,这更需要学习者在理解原理后,动手实践、应用算法解决实际问题。正所谓纸上得来终觉浅,绝知此事要躬行。
所以在2018年的夏天,俞勇教授组建了我们这支编写团队,开始尝试编写针对青少年的项目实践教程。初的内容包括图像上色、英语语法单选题与角斗士桌游。在教程中,我们努力用浅显的语言将复杂的人工智能算法讲明白,并且提供了相应的代码和可在线交互的展示。一些中学生看了我们编写的这些教程之后给出了一致的好评,这也让我们产生了将其拓展为一套给青少年看的关于人工智能的丛书的想法。2019年初,我们给这套丛书加入了更多关于实践的内容,引导读者一边理解原理,一边编写代码,理论与实践相结合地认识人工智能。在本书中,我们精心安排了5个兼顾项目的有趣程度、使用技术的流行程度,以及尽可能涵盖更多知识的项目。编写本书的过程中,我们也努力精简知识,仅介绍与项目任务相关的必要知识,希望能够让零基础的读者,仅通过阅读本书也能快速地了解用到的算法。对每一种算法,我们都会给出python代码实现,配合注释与讲解,引领读者一步一步编写人工智能算法。
5个项目各由我们编写团队中的一到两位编者负责,每周俞勇教授与张伟楠教授都会与编者们开例会、审阅进度,并讨论可以改进的地方。在编写教材的同时,我们还与实验平台的开发人员合作,提供了线上可交互的展示,方便读者理解项目与算法。编写本套丛书前后历时近一年,俞勇教授、张伟楠教授与编者们投入了大量的心血,希望能帮助青少年理解并自己实现人工智能算法,培养对人工智能的兴趣,为将来更深入地探索人工智能打下基础。
从本书中可以读到
我们将通过5个有趣的项目,带领大家在理解原理的同时,动手编写代码,实现自己的人工智能应用。本书的每一部分对应一个项目,它们分别是:
图像识别:图像识别是近几年人工智能浪潮中,发展快、技术成熟、落地早的算法,如车牌识别、人脸识别的诸多基于图像识别的技术正在改变着我们的生活。在这个项目中,你将了解机器如何处理图像数据,学习并编写图像识别的两个经典算法:K近邻与卷积神经网络,并解决手写数字识别以及物体识别问题。
图像风格迁移:图像风格迁移是一个非常有趣的项目。利用该技术,人们可以将任意一张图片转换成其他的风格。一些热门的图像处理软件中就提供了类似功能,比如将照片转化成马赛克风格甚至是梵高的画作风格。在本项目中,你将尝试实现3种图像风格迁移算法。
文本生成:与文本相关的智能技术随着人工智能浪潮也得到了快速发展。在这个项目中,你将了解机器处理文本数据的方法,并学习和编写3个用于文本生成的算法。使用该算法,可以让机器生成古诗甚至是文章。
角斗士:角斗士是一个热门的桌面游戏。在这个项目中,你将学习并使用各类搜索算法,制作角斗士游戏的AI。与上面3个项目不同的是,本项目中你将次接触到教机器作出决策,让机器作出正确的决策是迈向真正智能的重要一步。
红绿灯调度:大城市中如何缓解交通拥堵是一个广受关注的问题。在这个项目中,就是使用强化学习算法来优化红绿灯的控制,以达到缓解拥堵的目的。强化学习是近几年非常热门的领域,大名鼎鼎的AlphaGo就是使用强化学习算法战胜了所有人类棋手。你将了解强化学习算法的基本概念,并尝试编写强化学习算法来控制路口的红绿灯。
如何使用这本书
本书没有严格的阅读顺序要求,你可以选择自己感兴趣的项目直接阅读,若提到了其他项目中的概念均会给出提示。
除了算法原理,本书还包含了大量示例代码。如果想要理解这些代码,你需要有一些python基础编程知识,包括变量、循环、函数、类、库的使用等。如果想要入门python,你可以访问伯禹学堂中的python基础课程(www.boyu.ai/pythonbasics)。本书的所有代码都基于Anaconda35.2.0版本用python3实现,Anaconda是一个免费的python发行版,包含了大量常用的库,非常易于安装,强烈建议你在学习过程中安装使用。项目中的代码示例可以在github.com/boyuai/textbook下载。另外,本书配有实验平台(www.boyu.ai/playground),为书中涉及的项目提供一个交互式的学习体验。对每个任务,我们提供了体验、调试、理解源码、源码填空、改进源码5个阶段。不同基础背景的读者可以选择不同的阶段入门:零基础的读者可以通过体验算法了解人工智能的魅力,基础较好的读者可以自己编写代码改进算法。我们希望你通过阅读本书,至少可以达到理解项目内容、掌握算法原理和能够进行基本的算法实现的程度。若你对学习人工智能的积极性非常强,希望你能在实验平台上多多地尝试改进代码,并创造属于自己的人工智能算法。
本书的内容仅包含5个项目的知识以及代码。如果希望系统地学习人工智能算法,建议阅读本套丛书的第三本《人工智能技术入门:让你也看懂的AI内幕》;如果对人工智能的发展历史与未来展望感兴趣,建议阅读本套丛书的本《从人脑到人工智能:带你探索AI的过去和未来》;如果对人工智能在生活中的具体应用感兴趣,建议阅读本套丛书的第二本《人工智能应用:酷炫的AI让你脑洞大开》。
致谢
本书的主要参与编写人员有16位,俞勇教授策划并确定本书架构、内容组织及审核,张伟楠博士对全书内容进行专业指导及审核,张惠楚与秋闻达编写部分,苏起冬与徐逸凡编写第二部分,侯博涵与蔡亚星编写第三部分,赵寒烨与任云玮编写第四部分,钱苏澄编写第五部分。书中的卡通插画的设计与绘制由陈子薇完成。感谢陈子薇绘制本书的卡通插图,实验平台由王思捷、冯思远开发,并感谢任侃、沈键及潘哲逸在编写时提供的帮助。
俞勇,上海交通大学电子信息与电气工程学院教授、博士生导师,中国计算机学会计算机教育专业委员会常务理事。 先后获和上海市教学成果奖9项、上海市优秀教材奖2项,并获国务院特殊津贴、全国模范教师、全国师德标兵、上海市五一劳动奖章、宝钢优秀教师特等奖、上海市教学名师、上海市模范教师、上海交通大学受学生欢迎教师等荣誉。入选首批国家高层次人才特殊支持计划教学名师。
教学方面,主编教材及著作6本、译著2本。先后主持*教育教学改革项目2项,主持国家精品课程数据结构及上海市程序设计类基础课程教学团队,主持*质量工程项目4项,发表教育教学研究论文6篇,率队夺得ACM国际大学生程序设计竞赛世界冠军3次。
科研方面,主要从事数据与知识管理研究。先后承担10多个国际会议、研讨会等程序委员和主席,国际期刊编辑。先后主持10多项国家自然科学基金和863项目、30多项企业合作项目,发表重要国际会议和期刊论文近300篇,被引用11000余次。指导的博士生获全国优秀博士学位论文提名奖1次、上海市优秀博士学位论文奖1次,指导的硕士生获上海市优秀硕士学位论文奖2次。
前言 1
第1部分图像识别
章图像识别的基础知识 10
第二章K近邻算法 22
第三章卷积神经网络 29
第2部分图像风格迁移
第四章图像风格迁移基础知识 52
第五章色彩的模仿 K近邻算法 53
第六章像素级别梯度优化 58
第七章生成对抗网络 72
第3部分文本生成
第八章文本生成基础知识 98
第九章n元语法模型 从数数开始 102
第十章循环神经网络 107
第十一章编码与解码 seq2seq
第4部分角斗士棋
第十二章角斗士棋基础知识 128
第十三章常用的搜索算法 133
第5部分红绿灯调度
第十四章红绿灯调度基础知识 152
第十五章马尔可夫决策过程 155
第十六章Q-learning 160
第十七章DeepQ-Network 165
第十八章智能红绿灯的代码实现 170
结语 187
附录一思考与实践解答参考 188
附录二参考文献 191