前言
让人又爱又恨的模型
对从事算法研究与算法开发的人来说,模型的学习与使用必不可少。尤其是在目前备受关注的人工智能领域里,人人谈模型,新模型也是层出不穷,让人眼花缭乱。
模型让人又爱又恨:可爱的地方在于它确实能够解决我们的实际问题,而且其有效性一般都经过了检验;可恨的地方在于学习它是一件非常痛苦的事情,尤其是对人工智能领域的初学者来说。
笔者自2001年开始从事光学字符识别的研究,2004年以后从事自然语言处理的研究,算是国内人工智能行业中的“老鸟”了。在多年的学术研究和产业落地推进的过程中,笔者认为模型的学习是最让人头疼的事情。在攻读博士学位的过程中,笔者经常发现:自己花了很大工夫,终于对某个模型有了初步的理解,忽然有同学说他又看到另一个更好的模型……笔者觉得学习模型就像玩打地鼠游戏,这个洞里冒出来一只地鼠,你刚打下去,另一个洞里又冒出新的地鼠。打地鼠的速度总是跟不上地鼠冒出来的速度。笔者在学习累了的时候,就会产生一堆奇怪的疑问:到底什么是模型?为什么那些“大牛”提出的任何想法都能成为模型?到底多厉害的人提出的想法才能成为模型?如果没有这些“大牛”,那么我们的学习是不是就不会这么累了?有没有一本书可以把所有模型都介绍清楚?如果没有,那么有没有一本书可以把人工智能领域中常见的模型都介绍清楚?
久病成医,降低模型的学习难度
2018年,笔者创业失败,重新回到职场,此时面临的第一个问题就是向团队中相对年轻的同事介绍自然语言处理技术。于是笔者萌生了整理各类人工智能模型的念头。笔者并不是什么模型领域中的“大牛”,也没有提出过什么靠谱的模型。笔者只是想把在近20年的模型学习过程中的痛苦进行沉淀和总结,也算是痛定思痛吧。笔者的许多朋友在看了本书的样稿后,都以为笔者对模型颇有研究,而笔者都会自我调侃:笔者不是职业的医生,只是久病成医而已。
笔者在阅读大量前辈的作品及大量的网络技术文档后发现,前辈们都博览群书,理论功底深厚,数学基础扎实,因此他们的作品中都有大量的公式推导和理论证明。这些都是笔者的弱项。于是,笔者又产生了“久病成医”的联想:既然笔者的理论水平欠缺,数学基础不牢,那么或许还有许多人工智能的初学者跟笔者一样。于是,笔者在写作本书时,尽量更多地结合模型的使用场景,更多地介绍实际业务需求之间的关系,更多地采用生活中浅显易懂的例子。这样一方面可以弥补笔者在理论功底方面的欠缺,另一方面可以方便人工智能领域的初学者学习模型。
网络中的许多技术文档经常会出现公式显示异常、图片丢失、格式混乱的情况,这也增加了初学者学习模型的难度。笔者认为:大篇幅的文字描述,在很多情况下不如一张示意图生动;高深的专业术语和技术原理,在很多情况下不如与生活中的场景做类比浅显;复杂的公式计算与理论推导,在很多情况下不如举一个实际例子计算一遍更直观。因此,笔者在本书中列举大量的人工智能场景中的真实案例,将许多现实生活中的场景与高深的模型进行类比,希望可以降低读者的理解难度。
笔者试图将人工智能在现实生活场景中解决的问题分类,并根据这个分类来介绍各种模型。本书将人工智能问题分为权重问题、状态问题、序列问题、表示问题、相似问题和分类问题六大类,方便读者了解各个模型之间的关系,也方便读者理解各个模型的适用场景。当然,这个分类体系只是笔者的一家之言,并不一定是最科学的方法。笔者权且以本书抛砖引玉,期待人工智能行业的专家的批评与指正。
模型日新月异,许多模型在本书中还未来得及介绍,如深度学习中的许多优秀模型、自然语言处理中的许多模型等。虽然笔者非常认真地写作本书,但由于水平有限,经验欠缺,对许多模型的理解还不够到位,书中一定还有许多错误或纰漏之处。恳请同行多多给予批评与指导,恳请读者多提宝贵意见与建议。
致谢
感谢白硕老师、刘群老师、王斌老师对本书的指导,感谢电子工业出版社的编辑王静、吴宏伟、石倩、白涛的辛勤工作。
说明
为方便读者学习,书中所涉及的参考文献请扫描本书读者服务二维码获取(见本书封底)。
作者