前言

2018年3月,出版社编辑在知乎上私信我,邀请我撰写一部技术开发方面的书籍。我本人确实是一个喜欢分享的人,也曾在网上写过不少博客和文章,但还从来没有想到过有一天我会出书。关于我所研究的领域——自然语言处理和机器学习——市面上已经有了无数经典教材,我实在想不到有什么必要再写一本相同题材的书籍。

然而,自然语言处理技术的发展一日千里,BERT和GPT等模型相继出世,自然语言处理的范式也从设计专一任务的模型逐渐转变为使用单一的大模型解决各种下游任务。再想到自己以前初学自然语言处理时翻遍Stack Overflow和GitHub才最终找到答案的那些困惑,我终于找到了编写本书的理由:

· 这是一本偏重实践细节的书。循环神经网络的输入到底是什么格式?状态和输出的区别是什么?各条样本长度不一时怎么处理?双向循环神经网络里,前向和后向的信息是怎么流通和融合的?这些我在初学时花了很久才搞明白、后来也在网络上给无数人解答过的问题,本书中都会讲到。本书既会讲解使用TensorFlow 2实现经典模型的技巧和最佳实践,也会谈论TensorFlow库代码的设计。在读完本书后,相信读者能够得心应手地实现绝大部分自然语言处理领域的深度学习模型。

· 这是一本展现领域全貌的书。深度学习这个领域发展得太快,想在一本书里包罗万象几乎是不可能的。尽管如此,本书仍然试图囊括绝大多数知识点,尽量拓展读者的视野。循环神经网络和Transformer这样的主流模型自然是重中之重,然而生成对抗网络这样尚不成熟的模型,或是递归神经网络这样已经有些过气的模型本书也有涉猎。本书内容以自然语言处理领域的模型为主,但也包含少量其他领域或交叉领域(如语音识别等)的模型。

本书的目录是按照模型结构进行组织的。第1章简要介绍自然语言处理和深度学习的历史;第2章主要介绍Word2vec词向量学习算法;第3~5章详细讲解循环神经网络的方方面面;从第6章开始本书进入一些高级专题,其中第6章介绍序列到序列问题的三种解决方案,第7章引入常用的注意力机制,第8章则介绍递归神经网络乃至图神经网络的相关拓展,第9章介绍卷积神经网络和WaveNet,这一章相对独立,第10章铺垫介绍Transformer模型的基础知识,第11章涉及当下最流行的预训练语言模型BERT和GPT,第12章介绍一些不算特别主流但有益于拓宽读者视野的知识,例如生成对抗网络、强化学习和流模型等。需要提醒的是,本书不是一本让初学者了解机器学习或者自然语言处理的书籍。本书假定读者已经对神经网络和自然语言处理有了一定的了解,只不过想要进一步学习代码实践细节或是拓宽自己的知识面。

本书的目标读者为自然语言处理相关专业的学生或者算法研究人员。读者既可以按顺序从前到后阅读,也可以挑选自己感兴趣的部分重点阅读。每一章都给出了大量参考文献,为读者进一步学习相关知识提供了方向。

本书提供的PPT与源代码可通过扫描下面二维码获取:

PPT

源代码

如果下载有问题,请发送电子邮件至booksaga@126.com,邮件主题为“深度序列模型与自然语言处理:基于TensorFlow 2实践”。

感谢我的妻子和其他家人一直以来对我的包容、理解和支持。感谢所有在本书写作和出版过程中给予帮助的人们。

由于笔者水平有限,书中难免存在疏漏之处,欢迎各位读者和同仁批评指正。笔者愿积极与读者交流、共同探讨,让真理越辩越明。

笔 者

2023年2月