
前言
神经网络的发展已经有很长时间了。近些年,由于算力和数据的增长,深度神经网络的发展彻底改变了人们对机器学习和人工智能的看法。如今的神经网络已经成为强大的工具,被用于解决各种各样的问题,从图像识别到自然语言处理,甚至是游戏,都可以看见神经网络参与的痕迹。一些像GPT这样功能强大的网络,已经完成了从科研环境到工业环境的落地,它可以帮助人们完成各种各样的任务。神经网络之所以能有这样惊人的效果,是因为它们能够以类似于人类学习的方式从数据中学习和适应,从而解决难以通过显式编程解决的复杂问题。尽管神经网络已经是一个耳熟能详的词了,但是神经网络领域对初学者来说可能仍旧是一个庞大且复杂的知识体系。面对复杂的数学模型和难以理解的专业术语,初学者可能一时间难以消化。
本书旨在成为一本介绍性的教科书,它面向的是对微积分和线性代数有基本了解、希望从零开始学习神经网络的读者。当然,如果你缺乏相关数学知识,也可以在学习的过程中循序渐进地补齐。本书的重点是介绍基于全连接结构的前馈神经网络,这是一种在实践中常用的神经网络类型,也是各式各样神经网络架构的“基础款”。本书首先介绍神经网络的基本概念及其从生物学上获得的启示,然后介绍神经元的数学模型和单层感知机的结构。在掌握了这些基本知识后,读者将了解功能更加强大的多层感知机结构。
本书共六章。第1章对神经网络领域进行概述,包括其历史和应用。这一章将讨论神经网络的基本组成部分,阐述神经网络与生物神经系统的关系,对神经网络领域的主流发展方向和相关术语进行解释。
第2章深入探讨不同类型神经元的数学模型,着重分析不同神经元的作用机制,为后续复杂网络结构的学习奠定了基础。这一章还将讨论阈值的作用以及激活函数的选择。
第3章介绍感知机的概念,帮助读者理解如何通过神经元的组合来解决复杂任务。这一章将讨论感知机的结构,包括它的输入层、输出层和激活函数,并解释如何用它来解决简单的分类问题。
第4章介绍多层前馈神经网络模型,它是分类和回归任务中使用最广泛的神经网络类型之一。这一章将研究神经网络是如何训练的,特别是反向传播算法与梯度下降法的使用。
第5章涵盖训练神经网络时使用的各种参数和算子,包括学习率、损失函数、正则化、归一化以及网络初始化、预训练。这一章将讨论这些设置的重要性,并介绍如何选择合适的值或方法。
第6章介绍神经网络的分布式学习、压缩和解释,其中分布式学习将涵盖使用多台计算机或设备在大型数据集上训练神经网络的内容。分布式训练可以让训练单台机器难以学习的大型神经网络成为可能。神经网络压缩将讨论减少神经网络的规模而不明显降低其准确性的主题。神经网络可解释性将讨论解释神经网络内部运作机制的技术,探讨如何解读神经网络的决策流程。
对于想要初步了解神经网络的读者,建议重点阅读前四章;对于已经搭建好了神经网络,想进一步对模型效果进行优化的读者,建议直接阅读第5章;对于已经熟悉神经网络,想要了解更多研究方向的读者,可以直接阅读第6章。在每一章中都配有一些思考题,可以作为师生在课堂上互动交流的问题。在每一章的末尾配有课后练习,方便读者检验自己的学习成果,也可以当成作业和考试题,作为教师备课的参考。在练习之后,“稍事休息”部分是编者在科研过程中总结的心得体会,有相似科研需求或者感兴趣的读者,可以选择阅读。在整本书中,我们将使用各种示例和代码来帮助大家理解概念和实现应用。本书将使用Python作为主要的编程语言,除了亲手搭建神经网络以外,也会提供以常用的深度学习框架PyTorch为基础的神经网络搭建指导。为了照顾到所有读者,大部分模型都可以在没有GPU硬件辅助的条件下完成训练和部署。
在本书的编写工作中,我得到了许多团体和个人的支持和帮助,感谢南京大学研究生教育教学改革课题对本书资助,感谢机械工业出版社的编辑们,是他们的尽责工作使得本书可以尽快与读者见面。感谢RINC组同学对本书的支持,特别感谢徐百乐、窦慧、郭苏涵、易梦军四位博士在书稿的修改和校对方面付出的心血,感谢肖伟康、向浩然、许翔、管俣祺、陈昊、张耕、熊昕、李菲菲、卢俣金、宋斯涵、王翔宇、张凌茗、艾英豪、涂敦炜、俞诗航、杨洪朝、刘佩涵、李若彤、胡嘉骏同学在整理资料、收集数据和实验验证方面付出的辛勤劳动。有了大家的共同努力,才促成了本书的出版。
本书作为一本入门教材,尽力做到少用晦涩的数学公式,多用示例来完成知识的讲解。在不得不使用数学公式的部分,会尽量避免“跳步骤”,对每一步推导都进行了展示,方便读者理解。同时,为了尽可能地减少阅读压力,本书只介绍重要的内容,以求做到“少而精”。虽然笔者精益求精,但书中可能仍然存在需要修改的部分,甚至是错误,如果读者发现了,烦请告知,意见请发往info_rinc@163.com,笔者一定尽快修正。最后,希望这本书可以为各位读者提供一些帮助,祝大家阅读愉快!