【启智社区】【大语言模型原理与实践】1.大语言模型的发展

news/2025/3/10 21:17:36/文章来源:https://www.cnblogs.com/isLinXu/p/18635375

大语言模型(Large Language Models,LLM)是一种由包含数百亿以上权重的深度神经网络构建的语言模型,使用自监督学习方法通过大量无标记文本进行训练。自2018年以来,包含Google、OpenAI、Meta、百度、华为等公司和研究机构都纷纷发布了包括BERT、GPT等在内多种模型,并在几乎所有自然语言处理任务中都表现出色。2019年开始大模型呈现爆发式的增长,一个比较重要的标志性事件是2021年Open AI发布了包含1750亿参数的生成式大规模预训练语言模型GPT3,正式开启了大语言模型的时代。

尤其是2022年11月ChatGPT发布后,更是引起了全世界的广泛关注,自此掀起了一股人工智能大语言模型的热潮。大语言模型在人机多轮对话、上下文理解、图像理解等各方面的能力表现非常突出,已经非常逼近通用人工智能。用户可以使用自然语言与系统交互,从而实现包括问答、分类、摘要、翻译、聊天等从理解到生成的各种任务,大型语言模型展现出了强大的对世界知识掌握和对语言的理解。

下面是大语言模型发展的一张时间路线图:

由于大语言模型的参数量巨大,在不同任务上进行微调需要消耗大量的计算资源,预训练微调范式不再适用于大语言模型,因此一些新的技术和方法出现,比如通过上下文语境学习(In-Context Learning)方法,大语言模型可以在很多任务的少样本场景下取得很好的效果,此外提示学习(Prompt Learnig)、模型即服务范式(Model as a Service,MaaS)、指令微调(Instruction Fine-tuning)等方法都在不同任务上都取得了很好的效果。

大语言模型一般需要经过预训练、SFT(Supervised Fine-Tuning)监督微调、奖励模型(Reword Model)训练、PPO强化学习模型训练四个阶段。在预训练阶段模型在大量无标注文本数据上进行训练,学习到语言的基本知识和潜在规律,使模型具有一定程度的通用语言理解能力;在SFT监督微调阶段是通过使用大量的人工标注数据,根据特定任务需求,进一步优化模型的性能;在奖励模型训练阶段是通过为强化学习任务设计奖励函数,引导智能体在学习过程中采取正确的行动,指导模型生成更好的回答;在强化学习阶段,是通过PPO强化学习算法优化模型的策略来提高模型性能。经过预训练、监督微调、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback) 等方式的训练,大语言模型具备了理解人类指令意图的能力,并且能够与人类价值观对齐,生成相当符合人类偏好的回答。

本课程从大语言模型的发展历程,到大语言模型使用的一些技术,再到大语言模型的训练和微调原理进行详细介绍,再结合开源的大语言模型进行综合实践,让大家能够既能学到原理性知识,又能进行大语言模型实践,达到学以致用的目的。

语言模型的发展经历了从传统经典的语言模型(如N-gram、TF-IDF),到基于神经网络的语言模型(如RNN、LSTM),再到预训练的语言模型(如ELMo、GPT、Bert),以及现在百亿级参数以上的大语言模型(如GPT3、GPT3.5、GPT4)几个发展阶段,本章节就这些语言模型的原理进行详细的介绍。

1.1.1 N-gram&TF-IDF

N-gram语言模型是一种常见的统计语言模型。
TF-IDF 算法是一种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。
本实训重点介绍N-gram和TF-IDF 算法相关知识、实现过程。通过本实训,掌握和运用N-gram和TF-IDF 算法。

N-gram模型

N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。

每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。

该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

当n=1时,一个一元模型为:

\[P(w_{1},w_{2}, \cdots, w_{m})= Ⅱ_{i=1}^{m} P(w_{i}) \]

当n=2时,一个二元模型为:

\[P(w_{1},w_{2}, \cdots, w_{m})= Ⅱ_{i=1}^{m} P(w_{i}|w_{i-1}) \]

当n=3时,一个三元模型为:

\[P(w_{1},w_{2}, \cdots, w_{m})= Ⅱ_{i=1}^{m} P(w_{i}|w_{i-2},w_{i-1}) \]

一个 n-gram 是 n 个词的序列:
一个 2-gram(bigram 或二元)是两个词的序列,例如 “I love”;
一个 3-gram(trigram 或三元)是三个词的序列,例如“I love you”。
需要注意的是,通常 n-gram 即表示词序列,也表示预测这个词序列概率的模型。假设给定一个词序列(w1,w2,···,wm),根据概率的链式法则,可得公式(1.1):

P( $ w_ {1} $ , $ w_ {2} $ , $ \cdots $ , $ w_ {m} $ )=P( $ w_ {1} $ )*P( $ w_ {2} $ $ |w_ {1} $ ) $ \cdots $ P( $ w_ {m} $ $ |w_ {1} $ , $ \cdots $ , $ w_ {m-1} $ )=
$ Ⅱ_ {i=1}^ {m} $ P( $ w_ {i} $ $ |w_ {i-2} $ , $ w_ {i-1} $ )

公式(1.1)右边的 \(P(w_i|w_1,w_2,..., w_{i-1})\)表示某个词\(w_i\)在已知句子\(w_1,w_2,..., w_{i-1}\)后面一个词出现的概率

马尔科夫假设

在实践中,如果文本的长度较长时,公式(1.1)右边的\(P(w_i|w_1,w_2,..., w_{i-1})\)的估算会非常困难,因此需要引入马尔科夫假设。

马尔科夫假设是指,每个词出现的概率只跟它前面的少数几个词有关。比如,二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元(trigram)模型。应用了这个假设表明当前这个词仅仅跟前面几个有限的词有关,因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度。
基于马尔科夫假设,可得公式(1.2):

P( $ w_ {i} $ $ |w_ {1} $ , $ \cdots $ , $ w_ {i-1} $ ) $ \approx $ P( $ w_ {i} $ $ |w_ {i-n+1} $ , $ \cdots $ ,wi-1

当 n = 1时称为一元模型(unigram model),公式(1.2)右边会演变成\(P(w_i)\),此时,整个句子的概率为:

P( $ w_ {1} $ , $ w_ {2} $ , $ \cdots $ , $ w_ {m} $ )=P( $ w_ {1} $ )*P( $ w_ {2} $ ) $ \cdots $ P( $ w_ {m} $ )= $ Ⅱ_ {i=1}^ {m} $ P( $ w_ {i} $ )

当 n = 2时称为二元模型(bigram model),公式(1.2)右边会演变成\(P(w_i|w_{i-1})\),此时,整个句子的概率为:

P( $ w_ {1} $ , $ w_ {2} $ , $ \cdots $ , $ w_ {m} $ )=P( $ w_ {1} $ )*P( $ w_ {2} $ $ |w_ {1} $ ) $ \cdots $ P( $ w_ {m} $ $ |w_ {m-1} $ )= $ Ⅱ_ {i=1}^ {m} $ P( $ w_ {i} $ $ |w_ {i-1} $ )

当 n = 3时称为三元模型(trigram model),公式(1.2)右边会演变成\(P(w_i|w_{i-2}, w_{i-1})\),此时,整个句子的概率为:

P( $ w_ {1} $ , $ w_ {2} $ , $ \cdots $ , $ w_ {m} $ )=P( $ w_ {1} $ )*P( $ w_ {2} $ $ |w_ {1} $ ) $ \cdots $ P( $ w_ {m} $ $ |w_ {m-2} $ , $ \cdots $ , $ w_ {m-1} $ )= $ T_ {i=1}^ {m} $ P( $ w_ {i} $ $ |w_ {i-2} $ , $ w_ {i-1} $ )

估计n-gram模型概率采用极大似然估计(maximum likelihood estimation,MLE)。即通过从语料库中获取计数,并将计数归一化到(0,1),从而得到n-gram模型参数的极大似然估计。即:

P( $ w_ {i} $ $ |w_ {i-n+1} $ , $ \cdots $ , $ w_ {i-1} $ )= $ \frac {count(w_ {i-n+1},\cdots ,w_ {i})}{\sum _ {wiount(wi-n+1},\cdots ,w_ {i-1},w_ {i})} $ = $ \frac {count(w_ {i-n+1},\cdots ,wi)}{count(wi-n+1,\cdots ,wi-1)} $
其中\(count(w_{i-n+1},..., w_i)\)表示文本序列\((w_{i-n+1}, ..., w_i)\),在语料库中出现的次数。

n-gram模型优缺点

总结下基于统计的 n-gram 语言模型的优缺点:
优点:

  1. 采用极大似然估计,参数易训练;
  2. 完全包含了前n-1个词的全部信息;
  3. 可解释性强,直观易理解;

缺点:

  1. 缺乏长期依赖,只能建模到前n-1个词;
  2. 随着n的增大,参数空间呈指数增长;
  3. 数据稀疏,难免会出现OOV词(out of vocabulary)的问题;
  4. 单纯的基于统计频次,泛化能力差

TF-IDF

TF-IDF(term frequency-inverse document frequency,词频-逆向文件频率) 是一种用于信息检索(information retrieval))与文本挖掘(text mining)的常用加权技术。它是一种统计方法,用以评估一个字或词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
在信息检索(Information Retrieval)、文本挖掘(Text Mining)以及自然语言处理(Natural Language Processing)领域,TF-IDF算法都可以说是鼎鼎有名。虽然在这些领域中,目前也出现了不少以深度学习为基础的新的文本表达和算分(Weighting)方法,但是TF-IDF作为一个最基础的方法,依然在很多应用中发挥着不可替代的作用。
TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF(全称TermFrequency),中文含义词频,即关键词出现在网页当中的频次。
IDF(全称InverseDocumentFrequency),中文含义逆文档频率,即该关键词出现在所有文档里面的一种数据集合。

TF-IDF的计算过程为:

第一步,计算词频。
词频(TF)=文章的总词数某个词在文章中的出现次数​
或者
词频(TF)=该文出现次数最多的词出现的次数某个词在文章中的出现次数​

第二步,计算逆文档频率。
逆文档频率(IDF)=log(包含该词的文档数+1语料库的文档总数​)
如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值取对数。

第三步,计算TF-IDF。
TF−IDF=词频(TF)×逆文档频率(IDF)

可以看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。

TF-IDF算法总结

TF-IDF算法是一种常用的文本特征表示方法,用于评估一个词对于一个文档集或语料库中某个文档的重要程度,常用于以下领域:
(1)搜索引擎;
(2)关键词提取;
(3)文本相似性;
(4)文本摘要。

TF-IDF算法优点:

  1. 简单有效:TF-IDF算法简单易实现,计算速度快,并且在很多文本相关任务中表现良好。

  2. 考虑词频和文档频率:TF-IDF综合考虑了词频和文档频率两个因素,可以准确表示词语在文档中的重要性。

  3. 强调关键词:TF-IDF算法倾向于给予在文档中频繁出现但在整个语料库中较少见的词更高的权重,从而能够突出关键词。

  4. 适用性广泛:TF-IDF算法可以应用于各种文本相关任务,如信息检索、文本分类、关键词提取等。

TF-IDF算法缺点:

  1. 无法捕捉语义信息:TF-IDF算法仅根据词频和文档频率进行计算,无法捕捉到词语之间的语义关系,因此在处理一些复杂的语义任务时可能效果有限。

  2. 忽略词序信息:TF-IDF算法将文本表示为词语的集合,并忽略了词语之间的顺序信息,因此无法捕捉到词语顺序对于文本含义的影响。

  3. 对文档长度敏感:TF-IDF算法受文档长度的影响较大,较长的文档可能会有较高的词频,从而影响到特征权重的计算结果。

  4. 词汇表限制:TF-IDF算法需要构建词汇表来对文本进行表示,词汇表的大小会对算法的性能和计算开销产生影响,同时也可能存在未登录词的问题。

  5. 主题混杂问题:在包含多个主题的文档中,TF-IDF算法可能会给予一些频繁出现的词较高的权重,导致提取的关键词并不完全与文档主题相关。

词频(TF)指的是某个词在一篇文档中出现的次数,但是从计算来看却不符合,计算中除以总数成为比例,再次数而不是次数比例来定义不妥。

在N-gram模型中,N表示每次取出的单词数量。
N-gram模型可以用于文本分类、语音识别和机器翻译等自然语言处理任务。
N-gram模型的主要优点是可以捕捉上下文信息,但缺点是无法处理未知的单词。
在TF-IDF模型中,IDF值越大代表该词对文本内容的区分度越高。
在TF-IDF模型中,词频(TF)指的是某个词在一篇文档中出现的次数。

1.1.2 基于神经网络的语言模型

1.2.1 ELMo预训练语言模型

1.2.2 Transformer网络架构

1.2.3 Bert预训练语言模型

1.2.4 GPT预训练语言模型

1.2.5 GPT2预训练语言模型

1.3.1 GPT3大语言模型

1.3.2 GPT3.5大语言模型

1.3.3 GPT4大语言模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859784.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单实用的jQuery表单输入框浮动标签动画特效插件

phAnimate是一款简单实用的jquery表单输入框浮动标签动画特效插件。通过该插件,你可以非常轻松的为表单input元素添加浮动标签动画效果。在线预览 下载使用方法 在页面中引入jquery和phanimate.jquery.js文件。<script type="text/javascript" src="js/jqu…

FluentAssertions:C#单元测试断言库,让测试代码更加直观、易读!

推荐一个C#开源库,用于单元测试中的断言,它提供了一系列的扩展方法,使得单元测试的断言看起来更加自然流畅。 01 项目简介 FluentAssertions 是一个基于 .NET 的断言库,它提供了一种链式调用的方式来编写断言语句。支持框架.NET Framework 4.7、.NET Core 2.1、.NET Core 3…

记一次 .NET某工业视觉软件 崩溃分析

一:背景 1. 讲故事 前两天给训练营里的一位学员分析了一个dump,学员因为弄了一整天也没找到祸根,被我一下子弄出来了,极度想看看我是怎么分析的?由于在微信上不能一言两语表尽,干脆写一篇文章出来详细的讲讲吧,哈哈,训练营里的学员得有求必应哈。。。话不多说,我们一起…

ToDesk虚拟屏调整屏幕分辨率,显卡欺骗器、锁屏宝

ToDesk虚拟屏功能相信很多使用这款软件的小伙伴们或多或少都有听说或尝试过,它的作用可多了,既能充当多任务框扩充器、同时又能充当显卡欺骗器,并且还能作为高级隐私屏、锁屏宝,可谓是一款相当实用的神器! 当然,好用有用固然重要,但是用的更加舒服顺手也关键,以下小编就…

React Setup

useState是React的一个函数,返回一个数组。 useEffect(function(), []),别忘记第二个参数是空数组。 1. A first look at REACT以前网页由服务端渲染-> SPA Web Applications数据的同步更新很重要!React是什么?JavaScript ReviewArray Methods arr = [3,1,6,2,9], arr.so…

EV付费怎么办?ToDesk无线扩展屏免费使用

随着数字化办公、远程教育、多屏互动等需求的日益加增,扩展屏逐渐成为了提升工作效率及丰富学习、娱乐体验的重要工具。然而,市场上的扩展屏工具五花八门,并非每款都适用性强且好用无门槛。例如传统的EV扩展屏软件,就存在着一些明显的不足之处,其中的部分高级功能在实测中…

权限对象:B_BUP_PCPT

权限对象:B_BUP_PCPT 事务代码: BUPA_PRE_EOP CVP_PRE_EOP(需要SFW5激活SAP Information Lifecycle Management,事务码IRMPOL) 权限字段:ACTVT 05: 锁定供应商/客户 95:解锁供应商/客户本文来自博客园,作者:观兴,转载请注明原文链接:https://www.cnblogs.com/guanxi…

java8--方法--String--格式化--format

1.程序: package InputTest;import java.util.Scanner;public class InputTest021227 {public static void main(String[] args) { // English();Chiness();}public static void English(){Scanner in = new Scanner(System.in);System.out.print("What is your n…

GaussDB数据库中逻辑对象关系简析

初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深理解。 1、GaussDB数据库逻辑对象 1.1 表空…

GaussDB数据库的备份与恢复

​ 1.逻辑备份-gs_dump gs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。 备份sql语句gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的…

UAC简介及对比

什么是UAC/UAD UAC是USB Audio Class的缩写,有时也叫UAD,UAD是USB Audio Device的缩写。 UAC/UAD定义了在USB规范下实现音频的设备的实现和控制功能,这些功能包括不仅音频数字部分的,也包括模拟部分。这些音频数据(模拟和数字)和用于直接控制音频环境的功能,如音量和音调…

k8s 1.23 安装kubesphere 3.4

参考 : https://blog.csdn.net/weixin_43810267/article/details/1333477361、下载kubesphere的yamlwget https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml wget https://github.com/kubesphere/ks-installer/releases/downlo…