书名:Happy-LLM:从零开始构建大模型
ISBN:978-7-115-68503-2
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
编 著 朱信忠 宋志学 邹雨衡
责任编辑 武少波
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
2022 年底,ChatGPT的诞生引发变革,以GPT系列模型为代表的大语言模型(Large Language Model,LLM)成为人工智能领域的研究热点,LLM在此背景下基于预训练语言模型取得突破性进展。本书分为基础知识与实战应用两大部分,基础知识部分包含第1~4章,首先介绍NLP的基本任务及文本表示的发展历程,接着阐述LLM基本架构Transformer和经典PLM架构,最后详述LLM的特点、能力和训练过程;实战应用部分包含第5~7章,依次讲解基于PyTorch搭建LLM的全流程,借助主流框架实现LLM训练,以及LLM的各类应用,帮助读者构建完整的LLM知识体系。
本书适合具备一定编程经验(尤其对Python编程语言有所了解)、掌握深度学习相关知识且了解NLP领域相关概念和术语的大学生、研究人员以及LLM爱好者阅读。
2022年底,ChatGPT的横空出世改变了人们对人工智能的认知,也给自然语言处理(Natural Language Processing,NLP)领域带来了阶段性的变革,以生成式预训练Transformer(Generative Pre-trained Transformer,GPT)系列模型为代表的大语言模型(Large Language Model,LLM)成为NLP乃至整个人工智能领域的研究主流。自2023年至今,LLM始终是人工智能领域的核心话题,持续引发一轮又一轮的科技浪潮。
LLM本质上是NLP经典研究方法——预训练语言模型(Pre-trained Language Model,PLM)的一种突破性发展形态。NLP领域专注于对人类自然语言文本的处理、理解和生成,其发展历程经历了符号主义阶段、统计学习阶段、深度学习阶段、预训练模型阶段,直至当前的大模型阶段。以GPT和BERT(Bidirectional Encoder Represantations from Transformers,基于Transformer的双向编码器表征)为代表的PLM是上一阶段的核心研究成果,它们以注意力机制为核心架构,通过“预训练+微调”范式在海量无监督文本上进行自监督预训练,实现了强大的自然语言理解能力。但是,传统的PLM大多依赖一定量的有监督数据进行下游任务微调,且在自然语言生成任务上性能不尽如人意,NLP系统的性能离人们所期待的通用人工智能仍有不小的差距。
LLM是在PLM的基础上,通过扩大模型参数、预训练数据规模,并引入指令微调、人类反馈强化学习(Reinforcement Learning from Human Feedback,RLHF)等手段实现的突破性成果。相较于传统PLM,LLM不仅具备涌现能力,而且具有强大的上下文学习、指令理解和文本生成能力。在大模型阶段,NLP研究者可以一定程度上放弃大量的监督数据标注工作,通过提供少量监督样本,LLM即可在指定的下游任务上达到媲美全量微调PLM的性能。同时,强大的指令理解能力与文本生成能力使LLM能够直接、高效、准确地响应用户指令,从而向通用人工智能的目标迈出了坚实一步。
LLM的突破性进展激发了NLP领域乃至整个人工智能领域的研究热情。海内外高校、研究机构、互联网大厂乃至众多传统行业的企业都投入到了LLM研究的浪潮中。自2023年至今,LLM阶段性成果层出不穷,模型性能不断突破上限,从最初的ChatGPT到GPT-4,再到以Qwen-VL为代表的多模态大模型,以及以DeepSeek-R1为代表的推理大模型,各类更强大、更定制化的基座模型与专用模型不断涌现,催生了众多能够提升生产力、赋能实际生活的创新LLM应用。从“百模大战”到“智能体元年”,LLM基座研究或许已趋向稳定的格局,但LLM的研究方兴未艾。可以预见,在不久的将来,LLM以及以LLM为基础的应用一定会成为人们生活中的基础设施,深度融入每个人的生活、学习和工作。
在这样的背景下,深入理解和掌握LLM原理,以及能够动手应用和训练任意一个LLM的能力,对每一位NLP研究者乃至其他领域的AI研究者都至关重要。我们在2023年底先后推出了Self-LLM、LLM-Universe两个开源大模型教程,前者旨在为开发者提供一站式开源LLM部署、推理与微调指南,后者旨在指导开发者从零开始搭建自己的LLM应用。这两个教程获得了国内外开发者的广泛认可。根据学习者的反馈,我们发现目前还缺少一个从零开始讲解LLM原理,并引导学习者亲手搭建和训练LLM的完整教程。
鉴于此,我们编写了这本讲解LLM原理及实战的教程。本书从NLP的基本研究方法出发,根据LLM的思路及原理逐层深入,依次为读者剖析LLM的架构基础和训练过程。同时,我们会结合目前LLM领域主流的代码框架,演练如何动手搭建和训练一个LLM,力求做到“授人以渔”。希望读者能从本书开始走进LLM的浩瀚世界,探索LLM的无限可能。
本书书名中的“Happy”一词寄托了我们对于学习大模型技术的核心愿景:我们坚信,掌握一套系统性的方法,能够化繁为简,拨开庞杂信息的迷雾,让探索大语言模型的过程变得高效而充满乐趣。这种“Happy”,是攻克难题后的豁然开朗,是构建应用时的得心应手,更是一种在AI浪潮中建立起自身确定性的从容与愉悦。我们希望本书能成为读者的向导,使读者抵达“学得明白、用得顺畅”的“Happy”之境。
本书涵盖LLM的理论基础、原理介绍和项目实战,以及LLM及NLP的核心思路剖析、公式解析与代码实战,旨在帮助读者深入理解并掌握LLM的基本原理与应用,适合大学生、研究人员、LLM爱好者阅读。读者需要具备一定的编程经验,尤其是要对Python编程语言有一定的了解。同时,读者最好具备深度学习的相关知识,并了解NLP领域的相关概念和术语,以便更轻松地阅读本书。
本书分为基础知识与实战应用两大部分。
第1~4章是基础知识部分,将由浅入深地介绍LLM的基本原理。其中,第1章简单介绍NLP的基本任务及文本表示的发展历程,为非NLP领域研究者提供参考;第2章介绍LLM的基本架构——Transformer,包括原理介绍及代码实现,是LLM最重要的理论基础;第3章整体介绍经典的PLM架构,包括仅编码器(encoder-only)、编码器-解码器(encoder-decoder)和仅解码器(decoder-only)三种架构,同时也介绍了当前一些主流LLM的架构和思想;第4章则详细介绍LLM的特点、能力和整体训练过程。
第5~7章是实战应用部分,将逐步带领读者深入LLM的底层细节。其中,第5章带领读者基于PyTorch亲手搭建一个LLM,并实现预训练、有监督微调(Supervised Fine-Tuning,SFT)的全流程;第6章引入目前业界主流的LLM训练框架Transformers,带领读者基于该框架快速、高效地实现LLM训练过程;第7章介绍基于LLM的各种应用,包括LLM的评测、检索增强生成(Retrieval-Augmented Generation,RAG)、智能体的思想和简单实现等。读者可以根据个人兴趣和需求,选读相关章节。
在阅读本书的过程中,建议将理论和实际相结合。LLM是一个快速发展、注重实践的领域,建议读者多进行实战,复现本书提供的各种代码,同时积极参加LLM相关项目与比赛,真正投入LLM开发的浪潮。
本书是开源学习社区Datawhale集体智慧的结晶。Datawhale多年来在AI领域持续践行 “和学习者一起成长”的理念,凭借长期的实践积累,逐步催生了本书的雏形。因此,本书不仅承载了专业的技术知识,更生动诠释了Datawhale协作、开源、共享的精神内核。我们谨以此书回馈社区,亦献给所有热爱技术、渴望与LLM共同成长的学习者。
我们鼓励读者关注Datawhale及其他LLM相关开源社区,遇到问题时在社区提问交流。Datawhale将持续追踪LLM及AI技术前沿,欢迎关注并参与社区共建。
最后,欢迎每一位读者在阅读完本书后加入LLM开发者的行列。作为国内领先的AI开源社区,Datawhale愿汇聚全球共创者,共同丰富开源LLM生态,打造更多、更具特色的LLM教程。萤火微光,汇聚成星河。我们期待成为连接LLM与大众的阶梯,以开放、共享的开源精神,共同迈向更广阔的LLM未来。
感谢您选择本书,祝您阅读愉快!
本书提供如下资源:
• 配套代码文件及教学课件;
• 本书思维导图;
• 异步社区7天VIP会员。
要获得以上资源,您可以扫描右上方二维码,根据指引领取。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区(www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作译者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域四十余年的发展与积淀。异步图书面向各行业的信息技术用户。
NLP(自然语言处理)作为人工智能领域的一个重要分支,旨在使计算机能够理解和处理人类语言,实现人机之间的自然交流。随着信息技术的飞速发展,文本数据已成为我们日常生活中不可或缺的一部分,NLP技术的进步为我们从海量文本中提取有用信息、理解语言的深层含义提供了强有力的支撑。从早期的基于规则的方法,到后来的统计学习方法,再到当前深度学习技术的广泛应用,NLP领域经历了多次技术革新,文本表示作为NLP的核心技术之一,其研究和进步对于提升NLP系统的性能起着决定性作用。
本章将介绍NLP的基础概念,帮助大家更好地理解和回顾NLP的相关知识。
NLP是一种让计算机理解、解释和生成人类语言的技术。它是人工智能领域一个极为活跃和重要的研究方向,其核心任务是通过计算机程序来模拟人类对语言的认知和使用过程。NLP结合了计算机科学、人工智能、语言学和心理学等多个学科的知识和技术,旨在打破人类语言和计算机语言之间的障碍,实现无缝交流与互动。
NLP技术使计算机能够执行各种复杂的语言处理任务,这些任务不仅要求计算机能够识别和处理语言的表层结构,更重要的是理解语言背后的深层含义,包括语义、语境、情感和文化等方面的复杂因素。
随着深度学习等现代技术的发展,NLP已经取得显著进步。通过训练大量的数据,深度学习模型能够学习到语言的复杂模式和结构,从而在多个NLP任务上取得接近甚至超越人类水平的性能。然而,尽管如此,NLP仍然面临着诸多挑战,如处理歧义、理解抽象概念、处理隐喻和讽刺等。研究人员正致力于通过更加先进的算法、更大规模的数据集和更精细的语言模型来解决这些问题,以推动NLP技术不断发展。
NLP的发展历程经历了若干阶段,每一次技术变革都极大地推动了NLP技术的发展,使其在机器翻译、情感分析、实体识别和文本摘要等任务上取得了显著成就。随着计算能力的不断增强和算法的不断优化,NLP的未来将更加光明,能够在更多领域发挥更加重要的作用。
NLP的早期探索始于第二次世界大战结束后,当时人们已经认识到将一种语言自动翻译为另一种语言的重要性。1950年,艾伦·图灵提出了图灵测试。图灵测试可以判断机器是否能够展现出与人类不可区分的智能行为。这一时期,诺姆·乔姆斯基提出了生成语法理论,这对理解机器翻译的工作方式产生了重要影响。然而,这一时期的机器翻译系统非常简单,主要依赖字典查找和基本的词序规则来进行翻译,效果并不理想。
20世纪70年代以后,NLP研究者开始探索新的领域,包括逻辑基础的范式和自然语言理解(Natural Language Understanding,NLU)。这一时期,研究者分为符号主义(或规则基础)和统计方法两大阵营。符号主义研究者关注形式语言和生成语法,而统计方法的研究者更加关注统计和概率方法。20世纪80年代,随着计算能力的提升和机器学习算法的引入,NLP领域出现了革命性的变化,统计模型开始取代复杂的“手写”规则。
21世纪初,随着深度学习技术的发展,NLP领域取得了显著的进步。深度学习模型[如循环神经网络(Recurrent Neural Network,RNN)、长短期记忆(Long Short-Term Memory,LSTM)网络]和注意力机制等技术被广泛应用于NLP任务,取得了令人瞩目的成果。2013年,Word2Vec模型的提出开创了词向量表示的新时代,为NLP任务提供了更加有效的文本表示方法。2018年,BERT模型的问世引领了PLM(预训练语言模型)的新浪潮,为NLP技术的发展带来了新的机遇和挑战。近年来,基于Transformer的模型(如GPT-3),通过训练参数规模庞大的模型,能够生成高质量的文本,甚至在某些情况下可以与人类的作品相媲美。
在NLP的广阔研究领域中,有几个核心任务构成了NLP领域的基础,它们涵盖了从文本的基本处理到复杂的语义理解和生成的各个方面。这些任务包括但不限于中文分词、子词切分、词性标注、文本分类、实体识别、关系抽取、文本摘要、机器翻译以及自动问答系统的开发。每一项任务都有其特定的挑战和应用场景,它们共同推动了NLP的发展,为处理和分析日益增长的文本数据提供了强大的工具。
中文分词是NLP领域的一个基础任务。在处理中文文本时,由于中文语言的特点,词与词之间没有像英文那样的明显分隔(如空格),因此无法直接通过空格来确定词的边界。中文分词成为中文文本处理的首要步骤,其目的是将连续的中文文本切分成有意义的词汇序列,具体如下。
输入:今天天气真好,适合出去游玩。 输出:[“今天”, “天气”, “真”, “好”, “,”, “适合”, “出去”, “游玩”, “。”]
正确的分词结果对于后续的词性标注、实体识别、句法分析等任务至关重要。如果分词不准确,将直接影响整个文本处理流程的效果。
子词切分旨在将词汇进一步分解为更小的单位,即子词。子词切分特别适用于处理词汇稀疏问题,即当遇到罕见词或未见过的新词时,其使得模型能够通过已知的子词单位来理解或生成这些词汇。子词切分在处理那些拼写复杂、合成词多的语言(如德语)时,或者在PLM(如BERT、GPT系列模型等)中尤为重要。
子词切分的方法有很多种,常见的有字节对编码(Byte Pair Encoding,BPE)、WordPiece、Unigram、SentencePiece等。这些方法的基本思想是将单词分解成更小的、频繁出现的片段,这些片段可以是单个字符、字符组合或者词根和词缀。
例如,通过子词切分,“unhappiness”这个词可以分解成三部分:前缀“un”表示否定;“happi”是“happy”的词根变体,表示幸福;“ness”是名词后缀,表示状态。即使模型从未见过“unhappiness”这个完整的单词,它也可以通过这些已知的子词来理解其大致意思为“不幸福的状态”。
词性标注的目标是为文本中的每个单词(此处的“单词”包含标点等特殊成分)分配一个词性标签,如名词、动词、形容词等。这个过程通常基于预先定义的词性标签集。词性标注对于理解句子结构、进行句法分析和语义角色标注等高级NLP任务至关重要。通过词性标注,计算机可以更好地理解文本的含义,进而进行信息提取、情感分析、机器翻译等更复杂的处理。
假设我们有一个英文句子:She is playing the guitar in the park.
词性标注的结果如下:
• She——代词;
• is——动词;
• playing——动词的现在分词;
• the——限定词;
• guitar——名词;
• in——介词;
• the——限定词;
• park——名词;
• .——标点。
词性标注通常依赖于机器学习模型,如隐马尔可夫模型、条件随机场或者基于深度学习的RNN和LSTM等。这些模型能够通过学习大量的标注数据来预测新句子中每个单词的词性。
文本分类涉及将给定的文本自动分配到一个或多个预定义的类别中。这项技术广泛应用于各种场景,包括但不限于情感分析、垃圾邮件检测、新闻分类、主题识别等。文本分类的关键在于理解文本的含义和上下文,并基于此将文本映射到特定的类别。
假设有一个文本分类任务,目的是将文本分类到“体育”“政治”“科技”三个类别之一,具体如下。
文本:“NBA季后赛将于下周开始,湖人队和勇士队将在首轮对决。” 类别:“体育” 文本:“美国总统宣布将提高关税,引发国际贸易争端。” 类别:“政治” 文本:“苹果公司发布了新款MacBook,配备了最新的M3芯片。” 类别:“科技”
文本分类成功的关键在于选择合适的特征表示和分类算法,同时也依赖高质量的训练数据。随着深度学习技术的发展,使用神经网络进行文本分类已经成为一种趋势,它们能够捕捉到文本数据中的复杂模式和语义信息,在许多任务中取得了显著的性能提升。
实体识别也称为命名实体识别,旨在自动识别文本中具有特定意义的实体,并将它们分类为预定义的类别,如人名、地名、组织名、日期等。实体识别任务对于信息提取、知识图谱构建、问答系统、内容推荐等应用很重要,它能够帮助系统理解文本中的关键元素及其属性。
假设有一个实体识别任务,目的是从文本中识别出人名、地名和组织名等实体,具体如下。
输入:李雷和韩梅梅是北京市海淀区的居民,他们计划在2024年4月7日去上海旅行。 输出:[(“李雷”, “人名”), (“韩梅梅”, “人名”), (“北京市海淀区”, “地名”),
(“2024年4月7日”,“日期”), (“上海”, “地名”)]
通过实体识别,我们不仅能识别出文本中的实体,还能了解它们的类别,这些识别结果为我们深入理解文本内容和上下文提供了重要信息。随着NLP技术的发展,实体识别的精度和效率不断提高,可以为各种NLP应用提供强大的支持。
关系抽取的目标是从文本中识别实体之间的语义关系。这些关系可以是因果关系、拥有关系、亲属关系、地理位置关系等。关系抽取对于理解文本内容、构建知识图谱、提升机器理解语言的能力等具有重要意义。
下面是一个例子。
输入:比尔·盖茨是微软公司的创始人。 输出:[(“比尔·盖茨”, “创始人”, “微软公司”)]
在这个例子中,关系抽取的目标是从文本中识别出“比尔·盖茨”和“微软公司”之间的“创始人”关系。通过关系抽取,我们可以从文本中提取出有用的信息,帮助计算机更好地理解文本内容,为后续的知识图谱构建、问答系统等任务提供支持。
文本摘要的目标是生成一段简洁准确的摘要,来概括原文的主要内容。根据生成方式的不同,文本摘要可以分为两大类,分别为抽取式摘要和生成式摘要。
• 抽取式摘要:抽取式摘要通过直接从原文中选取关键句子或短语来组成摘要。优点是摘要中的信息完全来自原文,因此准确性较高。然而,由于仅仅是原文中句子的拼接,有时候生成的摘要可能行文不够流畅。
• 生成式摘要:与抽取式摘要不同,生成式摘要不仅涉及选择文本片段,还需要对这些文本片段进行重新组织和改写,并生成新的内容。生成式摘要更具挑战性,因为其要求理解文本的深层含义,并能够以新的方式表达相同的信息。生成式摘要通常需要更复杂的模型,如基于注意力机制的序列到序列(Seq2Seq)模型。
假设我们有以下原文。
2021年5月15日,中国国家航天局宣布,我国自主研发的火星探测器“天问一号”成功在火星表面着陆。此次任务的成功,标志着我国在深空探测领域迈出了重要一步。“天问一号”搭载了多种科学仪器,将在火星表面进行为期90个火星日的科学探测工作,旨在研究火星地质结构、气候条件以及寻找生命存在的可能性。
抽取式摘要如下。
我国自主研发的火星探测器“天问一号”成功在火星表面着陆,标志着我国在深空探测领域迈出了重要一步。
生成式摘要如下。
“天问一号”探测器成功实现火星着陆,代表我国在宇宙探索中取得重大进展。
文本摘要在信息检索、新闻推送、报告生成等领域有着广泛的应用。通过自动摘要,用户可以快速获取文本的核心信息,节省阅读时间,提高信息处理效率。
机器翻译是指使用计算机程序将一种自然语言(源语言)自动翻译成另一种自然语言(目标语言)的过程。机器翻译不仅涉及词汇的直接转换,更重要的是要准确传达源语言文本的语义、风格和文化背景等,使翻译结果在目标语言中自然、准确、流畅,以便跨越语言障碍,促进不同语言使用者之间的交流与理解。
假设有一句中文:“今天天气很好。”我们想要将其翻译成英文,具体如下。
源语言句子:今天天气很好。 目标语言句子:The weather is very nice today.
在这个简单的例子中,机器翻译能够准确地将中文句子转换成英文,保持了原句的意义和结构。然而,在处理更长、更复杂的文本时,机器翻译面临的挑战也会相应增加。为了提高机器翻译的质量,研究者们已经探索了很多新的方法和技术,如基于神经网络的Seq2Seq模型、Transformer模型等,这些模型能够学习源语言和目标语言之间的复杂映射关系,从而实现更加准确和流畅的翻译。
自动问答是NLP领域的一个高级任务,旨在使计算机能够理解我们用自然语言提出的问题,并根据给定的数据源自动提供准确的答案。自动问答任务能够模拟人类理解和回答问题的能力,涵盖从简单的事实查询到复杂的推理和解释。自动问答系统的构建涉及多个NLP子任务,如信息检索、文本理解、知识表示和推理等。
自动问答大致可分为三类,分别为检索式问答、知识库问答和社区问答。检索式问答通过搜索引擎等方式从大量文本中检索答案,知识库问答通过结构化的知识库来回答问题,社区问答则依赖于用户生成的问答数据,如问答社区、论坛等。
自动问答系统的开发和优化是一个持续的过程,随着技术的进步和算法的改进,这些系统在准确性、理解能力和应用范围上都有显著提升。通过结合不同类型的数据源和技术方法,自动问答系统正变得越来越智能,其处理复杂和多样化问题的能力也越来越强。
文本表示的目的是将人类语言的自然形式转化为计算机可以处理的形式,也就是将文本数据数字化,使计算机能够对文本进行有效的分析和处理。文本表示是NLP领域的一项基础性和必要性工作,它直接影响甚至决定着NLP系统的质量和性能。
在NLP中,文本表示涉及将文本中的语言单位(如字、词、短语、句子等)以及它们之间的关系和结构信息转换为计算机能够理解和操作的形式,如向量、矩阵或其他数据结构。这样的表示不仅需要保留足够的语义信息,以便执行后续的NLP任务(如文本分类、情感分析、机器翻译等),还需要考虑计算效率和存储效率。
文本表示的发展历程经历了多个阶段,从早期的基于规则的方法到统计学习方法,再到当前的深度学习技术,文本表示技术不断演进,为NLP的发展提供了强大的支持。
向量空间模型是NLP领域的一个基础且强大的文本表示方法,最早由哈佛大学的杰拉德·索尔顿提出。向量空间模型通过将文本(包括单词、句子、段落或整个文档)转换为高维空间中的向量来实现文本的数学化表示。在这个模型中,每个维度代表一个特征项(如字、词、词组或短语),而向量中的每个元素值代表该特征项在文本中的权重,这种权重通过特定的计算公式来确定,如词频、逆文档频率指数,它们反映了特征项在文本中的重要程度。
向量空间模型的应用极其广泛,包括但不限于文本相似度计算、文本分类、信息检索等NLP任务。向量空间模型能够将复杂的文本数据转换为易于计算和分析的数学形式,使文本的相似度计算和模式识别成为可能。此外,通过矩阵运算,如特征值计算、奇异值分解等,可以优化文本向量表示,进一步提升处理效率和效果。
然而,向量空间模型也存在很多问题,如数据稀疏性和维度灾难问题。特征项数量庞大可能导致向量维度极高,同时大多数元素值为零。此外,因为模型基于特征项之间的独立性假设,忽略了文本中的结构信息,如词序和上下文信息,所以模型的表现力受到限制。特征项的选择和权重计算方法的不足也是向量空间模型需要解决的问题。
为了解决这些问题,研究者们对向量空间模型的研究主要集中在两个方面:一是改进特征表示方法,如借助图方法、主题方法等进行关键词抽取;二是改进和优化特征项权重的计算方法,要么在现有方法的基础上进行融合计算,要么提出新的计算方法。
语言模型有很多种,n-gram模型是NLP领域一种基于统计的语言模型,广泛应用于语音识别、手写识别、拼写纠错、机器翻译和搜索引擎等众多任务。n-gram模型的核心思想基于马尔可夫假设,即一个词的出现概率仅依赖于它前面的n-1个词。这里的n代表连续出现单词的数量,可以是任意正整数。
n-gram模型通过条件概率链式法则来估计整个句子成立的概率。具体而言,对于给定的一个句子,模型会基于n计算一组条件概率,并将这些条件概率相乘得到整个句子成立的概率。例如,对于句子“The quick brown fox”,若使用trigram(前缀tri-表示n=3)模型,那么需要计算
、
等概率,并将它们相乘。
n-gram模型的优点是实现简单、容易理解,在许多任务中效果不错。但当n较大时,会出现数据稀疏性问题,模型的参数空间会急剧增大,相同的n个单词组成的序列出现的概率会变得非常低,导致模型无法有效学习,泛化能力也会下降。此外,n-gram模型忽略了词之间的范围依赖关系,无法捕捉到句子中的复杂结构和语义信息。
尽管存在局限性,但n-gram模型凭借其简单和实用的特点,在许多NLP任务中仍然被广泛使用。在某些应用中,将n-gram模型和其他模型(如深度学习模型)结合可以获得更好的性能。
Word2Vec是一种流行的词嵌入(word embedding)技术,由Tomas Mikolov等人在2013年提出。Word2Vec基于神经网络语言模型,旨在通过学习词与词之间的上下文关系来生成词的密集向量表示。Word2Vec的核心思想是利用词在文本中的上下文信息来捕捉词之间的语义关系,从而使语义相似或相关的词在向量空间中距离较近。
Word2Vec模型主要有两种架构的模型,分别为连续词袋模型(Continuous Bag Of Words,CBOW)和Skip-Gram模型。CBOW模型根据目标词上下文中的词对应的词向量,计算并输出目标词的向量表示;Skip-Gram模型则与CBOW模型相反,其利用目标词的向量表示来计算上下文中的词向量。实践证明,CBOW模型适用于小型数据集,而Skip-Gram模型在大型数据集中表现更好。
相较于传统的高维稀疏表示(如独热编码),Word2Vec模型生成的是低维(通常几百维)的密集向量,有助于减少计算复杂度和存储需求。Word2Vec模型能够捕捉到词与词之间的语义关系。例如,“国王”和“王后”在向量空间中的位置会比较接近,因为在大量文本中,它们通常出现在相似的上下文中。Word2Vec模型也可以很好地泛化到未见过的词,因为它是基于上下文信息而不是词典进行学习的。但Word2Vec模型是基于局部上下文信息进行学习的,无法捕捉到长距离的依赖关系,缺乏整体的词与词之间的关系,因此在一些复杂的语义任务上表现不佳。
ELMo(全称为Embeddings from Language Models,语言模型嵌入)实现了一词多义和静态词向量到动态词向量的跨越式转变。我们首先需要在大型语料库上训练语言模型,得到词向量模型;然后在特定任务上对模型进行微调,得到更适合该任务的词向量。ELMo首次将预训练思想引入词向量的生成中,使用双向LSTM结构,能够捕捉到词的上下文信息,生成更加丰富和准确的词向量表示。
ELMo采用典型的两阶段过程:第一阶段旨在利用语言模型进行预训练;第二阶段旨在做特定任务时,从预训练网络中提取对应词汇的词向量作为新特征补充到下游任务中。基于RNN的LSTM模型训练时间长,而特征提取则是优化和提升ELMo的关键。
ELMo的主要优势在于能够捕捉到词汇的多义性和上下文信息,生成的词向量更加丰富和准确,适用于多种NLP任务。然而,ELMo模型也存在一些问题,如模型复杂度高、训练时间长、计算资源消耗大等。
本章首先介绍了NLP的核心目标,即让计算机理解、处理和生成人类语言;然后概述了其发展脉络,展现了从早期基于规则的方法到统计学习方法,再到当前主流的深度学习技术的演进历程。在此基础上,本章重点阐述了NLP涵盖的关键任务,不仅包括文本处理的基础环节(如中文分词、词性标注),也涉及高级应用(如文本分类、机器翻译、自动问答系统)。同时,本章梳理了支撑这些任务的文本表示的发展历程:从传统的向量空间模型和n-gram模型,到能够捕捉语义相似性的静态词嵌入(如Word2Vec),再到能够理解词汇在不同语境下含义的动态上下文表示(如ELMo)。这些技术共同构成了现代NLP系统的基石,在第2章中我们将学习Transformer架构。
[1] MIKOLOV T, SUTSKEVER I, CHEN K, et al. Distributed representations of words and phrases and their compositionality[EB/OL]. arXiv: 1310. 4546.
[2] DEVLIN J, CHANG M W, LEE K, et al. BERT: Pre-training of deep bidirectional transformers for language understanding[EB/OL]. arXiv: 1810. 04805.
[3] VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems, 2017:5998-6008.
[4] HAJEIM M, LATIRI C. Combining IR and LDA topic modeling for filtering microblogs[C]//International Conference on Knowledge-Based and Intelligent Information & Engineering Systems (KES). 2017: 761-770.
[5] PETERS M E, NEUMANN M, IYYER M, et al. Deep contextualized word representations[EB/OL]. arXiv: 1802. 05365.
[6] SALTON G. A vector space model for automatic indexing[J]. Communications of the ACM, 1975, 18(11): 613-620.
[7] 赵京胜, 宋梦雪, 高祥, 等. 自然语言处理中的文本表示研究[J]. 软件学报, 2022, 33(1): 102-128.