算法 - 自然语言 NLP,LLM
2025-01-15 15:14:44 8 举报
AI智能生成
图谱算法主要涵盖:自然语言处理,语言模型,大模型 也聊聊语言发音技巧,词汇规律,工程调优。
作者其他创作
大纲/内容
背景
乔姆斯基 形式语言(Chomsky Formal languages)的编译器
基于乔姆斯基形式语言(Chomsky Formal languages)的编译器取得了很大进展,更加鼓舞了研究者通过概括语法规则来处理自然语言的信心。
但是与规范严谨的程序语言不同,自然语言复杂又灵活,是一种上下文有关文法(Context-Sensitive Grammars,CSGs),因此仅靠人工编写文法规则根本无法覆盖,而且随着编写的规则数量越来越多、形式越来越复杂,规则与规则之间还可能会存在矛盾。
辛顿(Hinton)证明深度信念网络(Deep Belief Networks,DBN)
Networks可以通过逐层预训练策略有效地进行训练,基于神经网络和反向传播算法(Back Propagation)的深度学习方法开始兴起。
许多之前由于缺乏数据、计算能力以及有效优化方法而被忽视的神经网络模型得到了复兴。例如 1997 年就已提出的长短时记忆网络(Long Short Term Memory,LSTM)模型在重新被启用后在许多任务上大放异彩。
马尔可夫(Markov)假设
贾里尼克的想法是要判断一个文字序列是否合理,就计算这个句子出现的概率,出现概率越大句子就越合理:
出现的概率取决于在句子中出现在它之前的所有词(理论上也可以引入出现在它之后的词语)。
出现的概率取决于在句子中出现在它之前的所有词(理论上也可以引入出现在它之后的词语)。
但是,随着文本长度的增加,条件概率会变得越来越难以计算,因而在实际计算时会假设每个词语仅与它前面的个词语有关。即使是使用三元、四元甚至是更高阶的语言模型,依然无法覆盖所有的语言现象。在自然语言中,上下文之间的关联性可能跨度非常大,例如从一个段落跨到另一个段落,这是马尔可夫假设解决不了的。此时就需要使用 LSTM、Transformer 等模型来捕获词语之间的远距离依赖(Long Distance Dependency)了。
本吉奥(Bengio)提出神经网络语言模型(Neural Network Language Model,NNLM)
2003 年 NNLM 模型提出从词表查N-1个词向量,然后将这些词向量拼接后输入到带有激活函数的隐藏层中,通过SoftMax函数预测当前词语的概率。
NNLM 模型的思路与统计语言模型保持一致,它通过输入词语前面的 N-1 个词来预测当前词。
最开始该方法没有被大家所看好,所以没有推广开来。
随着越来越多的研究者使用深度学习模型来处理自然语言,NNLM 模型才被重新发掘,并成为使用神经网络建模语言的经典范例。
Word2Vec
ELOM
BERT
可以看到,从 2003 年 NNLM 模型提出时的无人问津,到 2018 年底 BERT 模型横扫自然语言处理领域,神经网络语言模型的发展也经历了一波三折。在此期间,研究者一直在不断地对前人的工作进行改进,这才取得了 BERT 模型的成功。BERT 模型的出现并非一蹴而就,它不仅借鉴了 ELMo、GPT 等模型的结构与框架,而且延续了 Word2Vec 模型提出的 CBOW 训练方式的思想,可以看作是这一阶段语言模型发展的集大成者。
Word2Vec
2013 年 Google 公司提出的 Word2Vec 模型真正将神经网络语言模型发扬光大。
Word2Vec 模型提供的词向量在很长一段时间里都是自然语言处理方法的标配,即使是后来出现的 Glove 模型也难掩它的光芒。
结构
Word2Vec 的模型结构和 NNLM 基本一致,只是训练方法有所不同,分为 CBOW (Continuous Bag-of-Words) 和 Skip-gram 两种
原理
CBOW 使用周围的词语来预测当前词。
Skip-gram 则正好相反,它使用当前词来预测它的周围词语。
Skip-gram 则正好相反,它使用当前词来预测它的周围词语。
与严格按照统计语言模型结构设计的 NNLM 模型不同,Word2Vec 模型在结构上更加自由,训练目标也更多地是为获得词向量服务。
特别是同时通过上文和下文来预测当前词语的 CBOW 训练方法打破了语言模型“只通过上文来预测当前词”的固定思维
特别是同时通过上文和下文来预测当前词语的 CBOW 训练方法打破了语言模型“只通过上文来预测当前词”的固定思维
问题
有一片乌云一直笼罩在 Word2Vec 模型的上空——多义词问题。一词多义是语言灵活性和高效性的体现,但是 Word2Vec 模型却无法处理多义词,一个词语无论表达何种语义,Word2Vec 模型都只能提供相同的词向量
ELOM
概念
使用了双层,且双向的LSTM作为编码器来预训练,然后对于输入提取动态的各层词向量拼接。
结构
ELMo 模型首先对语言模型进行预训练,使得模型掌握编码文本的能力;
然后在实际使用时,对于输入文本中的每一个词语,都提取模型各层中对应的词向量拼接起来作为新的词向量。
ELMo 模型采用双层双向 LSTM 作为编码器,如图从两个方向编码词语的上下文信息,相当于将编码层直接封装到了语言模型中。
原理
训练完成后 ELMo 模型不仅学习到了词向量,还训练好了一个双层双向的 LSTM 编码器。
对于输入文本中的词语,可以从第一层 LSTM 中得到包含句法信息的词向量,
从第二层 LSTM 中得到包含语义信息的词向量,最终通过加权求和得到每一个词语最终的词向量。
问题
但是 ELMo 模型存在两个缺陷:首先它使用 LSTM 模型作为编码器,而不是当时已经提出的编码能力更强的 Transformer 模型;
其次 ELMo 模型直接通过拼接来融合双向抽取特征的做法也略显粗糙。
BERT
特点
双向性:BERT是一种双向的语言模型,能够同时考虑上下文信息,从而更好地理解句子的语义和上下语境。
预训练:BERT是通过大规模的无监督预训练来学习语言表示,可以在各种自然语言处理任务上进行微调,从而提高模型的性能。
多任务学习:BERT可以同时处理多个自然语言处理任务,如文本分类、命名实体识别、问答等,具有很强的泛化能力。
可解释性:由于BERT是基于Transformer模型的,可以通过注意力机制来解释模型的预测结果,帮助理解模型的决策过程。
概念
BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer架构 双向encoder的预训练 语言模型
架构
BERT的原理主要包括两个关键点:Transformer架构下预训练-微调策略。Transformer是一种基于自注意力机制的深度学习模型,能够捕捉输入序列中的全局依赖关系,同时避免了传统的循环神经网络和卷积神经网络中存在的长距离依赖问题。
在预训练阶段,BERT使用大规模的未标记文本数据进行自监督学习,通过遮蔽语言模型(Masked Language Model,MLM)和下一句预测(Next Sentence Prediction,NSP)任务来学习文本表示。
在微调阶段,BERT将预训练好的模型参数Fine-tuning到特定的下游任务上,通过少量标记数据进行有监督学习,从而适应不同的NLP任务。
模型
bert-base
https://www.processon.com/view/67569efd55a1f566b673c22e
bert-large
bert-base-multilingual-uncased
bert-base-multilingual-cased
...
BART
概念
BART(Bidirectional and Auto-Regressive Transformers)模型的设计核心包括双向编码器和自回归解码器的结合。
架构特点
双向编码器和自回归解码器结合:编码器类似BERT,捕获上下文信息;
解码器类似GPT,擅长生成连贯的文本。
通过噪声添加(如文本删除或遮蔽)进行预训练,使其对复杂输入具有鲁棒性。
模型详情
BART-BASE
https://www.processon.com/view/6752ddc0df934042284723de
BART-LARGE
...
Transformer
概念
Transformer 是一种基于自注意力机制的深度学习模型,最初由Google提出用于自然语言处理任务。
Transformer 模型的结构主要包括编码器(Encoder)和解码器(Decoder)两部分。
在编码器和解码器中,都包含多层的 注意力机制 和 前馈神经网络。
结构
编码器(Encoder):处理输入序列,生成上下文相关的表征(向量表示)。
解码器(Decoder):基于编码器的输出(或自身输入)生成目标序列。
解码器(Decoder):基于编码器的输出(或自身输入)生成目标序列。
编码器(Encoder)
编码器由多个相同的层堆叠而成,每个层包括两个子层:
编码器用于将输入序列映射到隐藏表示空间
多头自注意力机制(Multi-Head Self-Attention):通过计算输入序列中每个位置的注意力权重,使模型能够关注输入序列中不同位置之间的依赖关系。
前馈神经网络(Feed-Forward Neural Network):对每个位置的隐藏表示进行线性变换和激活函数处理,从而学习位置之间的非线性关系。
解码器(Decoder)
解码器则根据编码器的输出和目标序列生成最终的预测结果。
多头自注意力机制(Multi-Head Self-Attention):与编码器中的自注意力机制类似,但在解码器中需要避免未来信息泄露
编码器-解码器注意力机制(Encoder-Decoder Attention):将编码器的输出作为查询向量,解码器的自注意力输出作为键值对,计算解码器每个位置对编码器输出的注意力权重。
前馈神经网络(Feed-Forward Neural Network):与编码器中的前馈神经网络相同。
原理
Transformer的核心思想是将输入序列中的每个词向量进行自注意力计算,得到每个词向量对于整个序列的重要性权重。
然后将这些权重与对应的词向量相乘并相加,得到每个词向量的上下文表示。
这种自注意力机制使得模型能够同时考虑到输入序列中的所有词,而不像RNN模型一样需要按顺序逐个处理。
然后将这些权重与对应的词向量相乘并相加,得到每个词向量的上下文表示。
这种自注意力机制使得模型能够同时考虑到输入序列中的所有词,而不像RNN模型一样需要按顺序逐个处理。
在Transformer模型中,自注意力机制是实现序列建模的关键组件。它能够根据输入序列中不同位置的信息来计算每个位置的表示。具体来说,给定一个输入序列X={x1, x2, ..., xn},自注意力机制会计算每个位置xi与其他位置的关联程度,并将这些关联程度作为权重来加权求和,从而得到每个位置的表示。
自注意力机制的计算过程可以分为三个步骤:计算注意力权重、加权求和和线性变换。首先,通过计算查询(query)、键(key)和数值(value)的内积,得到每个位置与其他位置的注意力权重。然后,将注意力权重与数值相乘并加权求和,得到每个位置的加权表示。最后,通过线性变换将加权表示映射到更高维的空间,以便后续的神经网络层进行处理。
Transformer模型还包括前馈神经网络层。前馈神经网络层由两个全连接层和一个激活函数组成,用于对每个位置的表示进行非线性变换。通过堆叠多层自注意力机制和前馈神经网络层,Transformer模型能够学习到更复杂的序列特征表示,从而提高模型的性能。
在Transformer中,除了自注意力层和前馈神经网络层,还包括了Layer Normalization和残差连接。Layer Normalization用于对每层的输入进行归一化处理,有助于加快训练速度和提高模型性能。残差连接则是将输入与输出相加,使得模型更容易学习残差信息,有助于避免梯度消失和加速训练过程。
Transformer模型通常采用基于注意力机制的损失函数进行优化,如交叉熵损失函数。通过最小化损失函数,模型可以学习到输入序列与目标序列之间的对应关系,从而实现序列到序列的映射。总的来说,Transformer模型通过引入自注意力机制和并行计算的方式,实现了对序列数据的高效建模和学习。
应用
Transformer框架可以用于生成下一个单词或字符的概率分布。通过将前面的单词或字符作为输入,模型可以预测下一个单词或字符的概率。
并根据概率进行采样。这种方法可以用于生成文本、机器翻译、语音识别等任务。
参考文献: "Attention is All You Need",https://arxiv.org/abs/1706.03762
分析介绍
OPENAI GPT
特点
主要API
文本生成API
GPT-3文本生成
设置API密钥与环境变量
在OpenAI官网注册并获取API密钥
将API密钥保存在环境变量中提高安全性
使用GPT-3生成文本
通过Python代码调用GPT-3 API
配置API参数如max_tokens、temperature等
优化输出质量
调整temperature参数控制文本创造性
使用stop sequences提前结束生成
GPT-4文本生成
GPT-4模型选择与配置
选择GPT-4或GPT-3.5-turbo等模型
配置系统消息与用户消息
处理API调用结果
解析JSON对象获取生成文本
处理可能的API调用错误
对话API
创建对话完成请求
初始化OpenAI客户端
导入OpenAI库并设置API密钥
创建OpenAI客户端实例
配置对话消息
设置系统消息与用户消息角色与内容
选择对话模型如GPT-3.5或GPT-4
处理对话回应
提取并打印对话回应消息
访问response.choices列表获取回应
处理回应中的文本内容
优化对话体验
调整模型参数提升对话质量
使用插件增强对话功能
GPT 优化改进方案
模型架构的改进
稀疏性优化:通过引入稀疏激活机制(如Mixture of Experts, MoE),模型可以在保持较大参数量的同时减少计算资源的消耗。稀疏性优化使得模型在某些任务中只激活部分参数,从而提高效率。
注意力机制的改进:传统的自注意力机制在处理长文本时存在计算复杂度较高的问题。GPT-3.5可能采用了更高效的注意力机制变体(如局部注意力、稀疏注意力等),以提高模型在长文本上的表现。
多模态能力的增强:虽然GPT-3主要是一个纯文本模型,但GPT-3.5可能在架构上增加了对图像、音频等其他模态的支持,使其具备更强的跨模态理解能力。
训练方法的改进
更好的预训练策略:GPT-3.5可能采用了更先进的预训练策略,例如通过使用对比学习、强化学习或其他无监督学习技术来提高模型的泛化能力。此外,模型可能还引入了更多的上下文信息,以更好地理解语境。
混合精度训练:通过使用混合精度训练(如FP16或BF16),GPT-3.5可以在不牺牲精度的情况下显著加快训练速度,并减少显存占用。
强化学习与人类反馈结合:通过RLHF(Reinforcement Learning from Human Feedback),让模型学会根据人类偏好调整输出,使得生成的内容更加符合用户期望。
微调和适应性训练:除了大规模的预训练,GPT-3.5可能在微调阶段采用了更高效的方法,如少样本学习、元学习等,使得模型能够在特定任务上快速适应并取得更好的效果。
数据来源的优化
更多样化的数据源:GPT-3.5可能扩展了数据来源,不仅限于网页文本,还涵盖了更多的专业领域、学术文献、对话记录等高质量数据。这使得模型在不同领域的理解和生成能力得到了提升。
数据清洗与过滤:为了提高数据质量,GPT-3.5可能在数据收集过程中加入了更严格的数据清洗和过滤步骤,去除低质量或有害的内容,确保模型学习到更加可靠的信息。
多样化语言支持:除了英语,GPT-3.5可能增加了对更多语言的支持,尤其是在非英语语种上的表现有了显著提升。这得益于引入了更多小语种的数据源,并且可能采用了多语言建模的技术。
实时数据更新:GPT-3.5可能引入了实时数据更新机制,使得模型能够及时获取最新的事件、新闻。从而在回答问题时提供更准确、与时具进的信息。
AZURE GPT
特点
同OPENAI
参考上面
主要api的变化
LangChain
概念
特点
多种llm库桥梁
发音,词汇
弱读
介词
to
I want to go to swimming today.
We need to give our love and time to our lover.
in
on
代词
it
I remenber you like it very much.
item
...
连接词
and
we need to cut our hair and take a shower tonight.
or
强读
重读
Amazon
400,000 square kilometres of the Amazon basin have already been deforested.
amazing
That is a amazing job we done.
prevent
They took active steps to prevent the spread of the disease.
possibility, opportunity, congratulation
Using this opportunity, we congratulation to you.
爆破音
[p]
project
Sometimes i find i have interest in building project.
[b]
background
a person's family/social/cultural/educational/class background
[t]
taking
the amount of money that a shop, theatre, etc. receives from selling goods or tickets over a particular period of time
[d]
[j]
[k]
active, blackbord
Please write your activity in front blackbord.
摩擦音
[θ]
thinking
What is the current thinking on this question?
[θ][ ð]
[θ][ ð][s]
[ ʃ]
[ ʒ ]
浊化
清辅音
浊辅音
连续
辅音元音
元音元音
n. adj.
end
tivity
activity
A situation in which sth is happening or a lot of things are being done
...
able
usable
bility
possibility
ment
middle
ity
ther
pre
annc
regu
v.
pre
前缀pro-向前
proceed v.前往;进行
progress v.进步 n.进步
前缀pre-悠闲
end
ceed, cess, gress - 走
exceed v.超越,超过
access v.到达,进入; n.通道
progress v.进步 n.进步
able
st
Prompt Engineering
让模型扮演一个角色,有一个方向
使用准确描述,步骤,换行,格式。
使用提示,注意,tips
使用正确案例,错误案例,甚至给出理由和分数(如有必要)
Fine Tuning
训练方案
在已经训练好的模型基础上,通过进一步训练来调整模型的参数,以适应特定的任务或数据集。
训练参数
常见数据集上的参数,准备
训练类别
Supervised Fine Tuning,有监督微调
使用已经标注的数据
普通案例
{"messages": [{"role": "user", "content": "孤灯照不寐,风雨满西林。下一句是?"}, {"role": "assistant", "content": "多少关心事,书灰到夜深。"}]}
问题回答
金融问答
日常问答
文案生成
电商文案
标题撰写
文案分类
{"messages": [{"role": "user", "content": "你是舆情分析师,请判断如下的内容,对公众产生的影响是正面、负面还是中性的。\n 新闻内容:2022 年 8 月 5 日,四川省乐山市发生了一起突发事件,一位年仅 21 岁的消防员为了救援一名被困在洪水中的老人,不幸牺牲。这起事件引起了社会的广泛关注和热议,许多人对这位消防员的英勇事迹表示敬意和赞扬。请回答:"}, {"role": "assistant", "content": "正面"}]}
{"messages": [{"role": "user", "content": "请你判断你是否需要借助搜索引擎回答用户问题,如果你可以直接回答,则不需要借助搜索引擎,否则需要借助搜索引擎。回答只能包含是或者否。\n 用户问题:今天的天气怎么样?\n 是否要借助搜索引擎:"}, {"role": "assistant", "content": "是"}]}
Continue Pretrain,继续训练
可以使用未标注数据
{"text":"支持运行超大规模的分布式任务,包含多种预置算法框架和自定义算法框架。提供稳定、灵活、高性能的机器学习训练环境。"}
{"text":"支持多种框架的模型在异构硬件上的一键部署,具有高吞吐、低延时、实时扩缩容等特点,使推理服务更具弹性和容错性。"}
{"text":"火山引擎机器学习平台是面向机器学习应用开发者,提供【开发机】和【自定义训练】等丰富建模工具、多框架高性能模型推理服务的企业级开发平台,支持从数据托管、代码开发、模型训练、模型部署的全生命周期工作流。"}
训练数量级
文案生成,剧本创作,小说续写等生成类任务:1~3k。
文本分类:1~5k,和类别数量以及任务难易度强相关。
参考问答:2k~10k。任务较难的场景可能需要 1w 条以上。
参数管理
epoch:模型训练轮数,通常选择 2~5,可以根据验证集 loss 曲线来判断:如果训练集 loss 曲线下降,验证集 loss 曲线上升,则说明模型已经过拟合,此刻应该停止训练;如果训练集和验证集 loss 曲线均在缓慢下降,则说明模型还未收敛,可以继续训练。此外,对于文案生成,小说创作等生成类任务,由于某些上下文逻辑及风格不能通过 loss 体现,所以不应仅看 loss 来决定模型何时停止训练,按经验来说,通常生成类任务 epoch 数可以略微设置大一点,如 5~10 范围内。
learning rate:学习率,设置较大时会加速模型迭代,但是模型可能无法收敛到最优点;设置过小时会使得模型迭代较慢,可能陷入局部最优。按照经验来讲,LORA 训练选择 learning rate在 1e-4 ~ 2e-4,全量 SFT 选择learning rate 在 1e-5 ~ 2e-5 即可。
lora alpha 和 lora rank:alpha 参数将模型权重进行放缩,rank 决定了 lora 训练参数量的大小,我们推荐二者参数设置为同一值。通常来讲,对于较简单的任务,推荐设置 lora alpha 和 lora rank 64;对于较复杂的任务,推荐设置 lora alpha 和 lora rank 为 128。
gradient_accumulation_steps:梯度累积是一种增大训练时batch size的技术,在本地使用 micro-batch 多次进行正向和反向传播积累梯度后,再进行梯度规约和优化器更新。当需要调大batch size时,可以调整该参数。
warmup step rate:通常不需要调整。当遇到模型在 SFT 训练开始时,loss 始终不降的问题时,可尝试调大 warmup step rate。
训练管理
模型基座,加载预训练模型
损失变化
关注(训练集,测试集)
迭代日志,
0 条评论
下一页