前言 2022年11月,OpenAI公司发布了ChatGPT。该产品在极短的时间内迅速受到了人们的空前关注,被认为是人工智能史上继AlphaGo战胜了李世石以来的又一个里程碑事件。这些事件掀起了一轮又一轮的人工智能研究风暴,使得“深度学习”“神经网络”“人工智能”等术语像流行歌词一样为世人所知晓。实际上,在此之前LannYeCun等于1998年提出了最早的卷积神经网络——LeNet,Hinton和他的学生Salakhutdinov于2006年提出深度学习的概念,Hinton的学生Krizhevsky Alex于2012年提出了LeNet的加宽版——AlexNet,这些标志着深度学习时代的来临。2014年GoogLeNet和VGG同时诞生,2015年残差神经网络ResNet诞生。围棋事件只不过是新一轮人工智能研究风暴的导火索,此后还出现了AlphaGo的升级版——AlphaGo Zero、预训练模型EfficientNet、刷新人们对深度神经网络认知的Transformer框架及基于此框架大型预训练模型BERT和GPT等,而ChatGPT的出现更是令人对人工智能拍案叫绝、赞不绝口。 与往次不同的是,本次人工智能革命不但有扎实的理论和技术为基础,在图像识别、语音处理、自然语言处理等领域中均获得了突破性进展,而且有强力的资本注入,有市场的需求,形成了科技、产业协同发展的新模式,更是国家战略(工业4.0——智能化)发展的需要,推动着人类进入了“AI+”时代。因此,我们有理由相信,在可预见的未来,人工智能一直都是带动各行各业发展的重要引擎,是新一轮经济腾飞的发动机。人工智能及相关产业的从业者已是不计其数,将来也会创造更多的就业岗位。 在“AI+”时代,作为当代的大学生,人工智能和计算机类专业等工科类学生,甚至文科类学生,都在学习人工智能和应用人工智能,都希望运用人工智能理论和技术解决各自领域中的科学问题、技术难题等。虽然现在学生学习深度学习的热情很高,但是编者注意到,要掌握能够学以致用的深度学习技术和方法并非易事。其原因主要在于: ①虽然现在网络资料、文献书籍非常多,但其呈现的知识碎片化严重,学生往往容易迷失在这些浩如烟海知识海洋中,需要花费大量的时间才能整理出知识脉络,形成自己的知识结构,导致学习效率十分低下。②市场上关于深度学习的书籍虽然已经非常多了,但有的过于偏重理论,主要阐述深度学习的理论知识,只适合于有较好深度学习基础的读者,像学生这样的初学者,看了以后也不知道如何入手。有的书籍又过于偏重所谓的实践技能,它们往往罗列出一大堆代码,却不分析代码背后的基本原理和相关理论知识,使得学生为了学习深度学习而学习代码,不能举一反三,更不能学以致用,以至于最后还是“盲人摸象”,收获甚微。③有很多学生是带着热情来学习深度学习的,但学习热情是相对的,需要有学习成功的喜悦来加持。而实际情况往往是,学生做了很多努力,却由于知识碎片化、缺少合适的书籍等因素不知从何入手,多次尝试也难以达到预期的目标,进而难以坚持学习,热情自然也就消退了,即使能够坚持下来,也难以达到学习深度学习的既定目标。 深度学习理论与应用前言笔者长期从事人工智能和深度学习方面的教学和科研工作,也一直指导本科生和研究生从事这方面的课题研究,主要有两点体会比较深刻: ①每次面对新一届的学生时,都需要从头给他们培训深度学习方法的理论知识和实践知识,以使得他们尽快进入研究课题的门槛,很耗费时间和精力。如果有一本兼顾理论与应用、综合原理与方法、适合初学者的深度学习书籍,那么这种培训工作就容易得多了,甚至让学生自己学习就可以了,从而省去了这个培训环节。②由于缺乏系统的学习资料,学生需要整理大量的笔记和资料,以形成自己的知识体系,结果导致学习效率低下,严重影响课题的研究进度。对研究生而言,由于上述原因,他们往往要利用一年左右的时间来系统地学习深度学习,这导致他们真正花在课题上的研究时间非常有限。对本科生而言,他们大多在大三或大四时开始接触和学习深度学习。也由于上述原因,加上考研、找工作等多种因素,他们根本没有较长时间来学习深度学习,因此在做课题研究时往往从网上下载一段代码来改一改,能够运行就可以,结果往往是“只知其然,而不知其所以然”,而且学的内容很片面,其效果也就是“盲人摸象”。实际上,如果有一本合适的深度学习入门教材,本科生和研究生都可以用2~3个月的时间即可系统地学习深度学习的有关理论和应用知识,那么老师的指导和学生的学习都会变得相对容易,而且指导和学习的操作性和针对性都更强。 本书正是在考虑到上述三个原因和两点体会的基础上编写的。从案例收集、教学经验积累开始,到最后的撰写,大约经历了三年时间,本书终于和读者见面。本书的撰写不仅是深度学习知识的书面文字化,更是笔者多年从事人工智能和深度学习教研的心得体会与经验总结。本书共分为10章,第1章介绍深度学习的概念和发展过程,重点介绍张量的基本操作;第2章介绍神经网络的基本计算单元——感知器;第3章介绍全连接神经网络及梯度计算和参数优化的理论基础;第4章介绍卷积神经网络,涉及网络的主要操作和设计方法等;第5章介绍若干经典CNN预训练模型及其迁移方法;第6章介绍深度卷积神经网络的应用案例;第7章结合文本处理介绍循环神经网络;第8章介绍基于预训练模型的自然语言处理技术和方法;第9章介绍面向深度神经网络可解释性的可视化方法;第10章介绍多模态学习与多模态数据分类,这是人工智能比较前沿的领域。 本书的特点体现在四个方面: ①坚持“一个中心,两个基本点”的基本原则。一个中心是指理论中心,即本书结合损失函数的设计,针对基本网络结构,详细介绍了基于梯度反向传播的参数训练理论和方法,而且内容由浅入深,通俗易懂,使读者不但知其然,而且知其所以然。一个基本点是针对图像处理,系统介绍卷积神经网络的理论和方法,包括优化和设计理论,基于PyTorch的开发方法,然后介绍卷积神经网络的若干经典预训练模型。另一个基本点是针对序列数据,尤其是文本数据,系统地介绍了循环神经网络的基本原理和使用方法,进而介绍了Transformer以及基于Transformer的预训练模型。②系统性和实用性。本书不但从“零”开始介绍了深度神经网络的设计方法,而且介绍了相应预训练模型的使用方法,内容全面,涉及深度学习各方面的知识。读者不但可以深入、系统地理解深度模型的基本原理,而且可以“站在巨人的肩膀上”,通过使用已有的预训练模型并通过微调来解决面临的复杂问题,达到学以致用的目的。③易于入门。本书虽然包含了许多理论知识,但主要是高等数学中的知识,这些知识在大一和大二一般都学习过,而且本书尽量用通俗的语言加以阐述,用小例子帮助具体化,所以相关理论非常容易入门。与此同时,在许多章节的开头,尽量用一个简单的例子来“开胃”,让读者对复杂的设计方法有一个初步的感知,然后据此扩展,介绍相关的理论和知识。所以,本书内容整体上由浅入深,通俗易懂,非常容易入门。不管是工科类还是非工科类学生,都可以利用本书快速入门,跨越各自专业课题研究所需的深度学习技术门槛,为专业课题的实质性研究提供支持。④便捷性。为了方便读者阅览和学习,本书中每个程序代码一般都尽可能地在一个Python文件中编写完成(即“一个程序一个Python文件”),不涉及复杂的文档结构,以保证读者能够聚焦关键信息和掌握核心知识。同时,本书尽可能删除无关和不必要的代码,只保留与知识点密切相关的代码和维持程序运行的必要代码,保证每个程序代码都可以独立运行,同时提供相应的数据集。 总之,本书由浅入深、通俗易懂,具有较好的操作性,所有代码全部通过调试运行。本书兼顾理论与应用、原理与方法,内容涵盖深度学习的基础理论和主流方法,实例翔实,逻辑性强,结构清晰,条理清楚,重点突出。此外,每一章后面都配有适量的习题,供教学和学习参考使用。 本书可作为各类高等学校人工智能和计算机相近专业的深度学习、神经网络、机器学习、自然语言处理、图像处理、模式识别等人工智能课程及相关课程的教材,也可以作为人工智能、深度学习爱好者和初学者的自学教材,以及从事人工智能和深度学习应用开发的人员参考。本书提供的所有的源代码和本书案例中使用到的数据集,以及教学大纲和PPT课件等资源,都可以从清华大学出版社网站(http://www.tup.com.cn/)免费下载。读者如有问题或需要技术支持,联系longqm@163.com。 全书由广西大学蒙祖强教授执笔,欧元汉副教授审阅了本书全稿,研究生潘秋宇、莫书渊、徐洋、梁羿、郑毅等为程序调试做了大量工作,研究生王新育、付闻达、陈舒静、陀海铭、张道胜、施子豪等为稿件的纠错提供了大量帮助。此外,参与本书编写、资料整理和调试程序的还有白琳、杨丽娜等老师。在此,对他们的贡献表示由衷的感谢! 感谢所有关心和支持本书编写和出版的人员,包括广西大学武新章教授、陈宁江教授,以及一些老师、研究生和技术人员,同时感谢清华大学出版社的领导和编辑,他们为本书的编写和出版提供了大量的指导。本书参考了相关文献和网络资源,在此,对这些资料的著作者表示衷心感谢。 编者2023年3月