网站建设电话销售技巧,网站控制,新创企业如何进行品牌文化建设,wordpress内链设置自然语言处理#xff1a;大语言模型入门介绍 语言模型的历史演进大语言模型基础知识预训练Pre-traning微调Fine-Tuning指令微调Instruction Tuning对齐微调Alignment Tuning 提示Prompt上下文学习In-context Learning思维链Chain-of-thought提示开发#xff08;调用ChatGPT的… 自然语言处理大语言模型入门介绍 语言模型的历史演进大语言模型基础知识预训练Pre-traning微调Fine-Tuning指令微调Instruction Tuning对齐微调Alignment Tuning 提示Prompt上下文学习In-context Learning思维链Chain-of-thought提示开发调用ChatGPT的API 大语言模型未来展望参考文献 随着自然语言处理Natural Language Processing, NLP的发展此技术现已广泛应用于文本分类、识别和总结、机器翻译、信息提取、问答系统、情感分析、语音识别、文本生成等任务。 研究人员发现扩展模型规模可以提高模型能力由此创造了术语——大语言模型Large Language Model, LLM它代指大型的预训练语言模型Pre-training Language Model, PLM其通常包含数千亿甚至更多个参数。大语言模型的一个最显著的进展是OpenAI基于LLM开发的聊天机器人ChatGPT在此篇博客中我将介绍大语言模型的历史演进、基础知识、核心技术以及未来展望等并通过调用API介绍ChatGPT是如何搭建的。
语言模型的历史演进
语言模型LM是为了对词序列的生成概率进行建模从而预测未来或缺失的词的概率其发展主要有以下三个阶段
统计语言模型SLM基于统计学习方法如马尔可夫假设建立词预测模型根据最近的上下文预测下一个词。神经语言模型NLM通过神经网络如循环神经网络RNN来描述预测单词序列的概率。大语言模型LLM研究人员发现扩展模型规模可以提高模型能力通过使用Transformer架构构建大规模语言模型并确立了“预训练和微调”的范式即在大规模语料库上进行预训练对预训练语言模型进行微调以适配不同的下游任务并提高LLM的各项性能。
大语言模型基础知识
预训练Pre-traning
模型的预训练首先需要高质量的训练数据这些数据往往来自于网页、书籍、对话、科学文献、代码等收集到这些数据后需要对数据进行预处理特别是消除噪声、冗余、无关和潜在有害的数据。一个典型的预处理数据流程如下
质量过滤删除低质量数据去重删除重复数据去除隐私删除涉及隐私的数据Token化将原始文本分割成词序列Token随后作为大语言模型的输入。
目前大语言模型的主流架构可分为三大类型编码器-解码器、因果解码器和前缀解码器还有一种利用上述三种架构搭建的混合架构
编码器-解码器架构利用传统的Transformer架构编码器利用堆叠的多头自注意力层Self-attention对输入序列进行编码以学习其潜在表示而解码器对这些表示进行交叉注意力Cross-attention计算并自回归地生成目标序列。目前只有少数LLM是利用此架构搭建例如T5、BART。因果解码器架构它采用单向注意力掩码以确保每个输入token只能关注过去的token和它本身。输入和输出token通过解码器以相同的方式处理。GPT系列、OPT、BLOOM和Gopher等模型便是基于因果解码器架构开发的目前使用较为广泛。前缀解码器架构前缀解码器架构又称非因果解码器架构它修正了因果解码器的掩码机制以使其能够对前缀token执行双向注意力并仅对生成的token执行单向注意力这样与编码器-解码器架构类似前缀解码器可以双向编码前缀序列并自回归地逐个预测输出token其中在编码和解码的过程中共享相同的参数。使用此架构的代表GLM-130B和U-PaLM等。混合架构利用混合专家MoE策略对上述三种架构进行扩展例如Switch Transformer和GLaM等。
微调Fine-Tuning
为了使大语言模型适配特定的任务可使用指令微调Instruction Tuning和对齐微调Alignment Tuning等技术方法由于大语言模型包含了大量的任务如果进行全参数微调将会有较大开销对参数进行高效微调的方法有适配器微调Adapter Tuning、前缀微调Prefix Tuning、提示微调Prompt Tuning和低秩适配LoRA等高效微调的方法在此暂不展开介绍有兴趣的小伙伴可以自行查阅相关资料。
指令微调Instruction Tuning
指令微调通过使用自然语言描述的混合多任务数据集进行有监督地微调从而使得大语言模型能够更好地完成下游任务具备更好的泛化能力。在此过程中伴随着参数的更新。
对齐微调Alignment Tuning
对齐微调旨在将LLM的行为与人类价值观或偏好对齐。它需要从人类标注员需要具备合格的教育水平甚至满足一定学历要求中收集高质量的人类反馈数据然后利用这些数据对模型进行微调。典型的微调技术包括基于人类反馈的强化学习RLHF。
为了使大语言模型与人类价值观保持一致学者提出了基于人类反馈的强化学习RLHF即使用收集到的人类反馈数据结合强化学习对LLM进行微调有助于改善模型的有用性、诚实性和无害性。RLHF采用强化学习RL算法例如近端策略优化Proximal Policy Optimization, PPO通过学习奖励模型使LLM适配人类反馈。
提示Prompt
为了使语言模型完成一些特定任务利用在模型的输入中加入提示的机制使得模型得到预想的结果或引导模型得到更好的结果注意与微调不同在提示这一过程中无需额外的训练和参数更新。
上下文学习In-context Learning
上下文学习In-context Learning, ICL是由GPT-3正式引入它的关键思想是从类比中学习它将查询的问题和一个上下文提示一些相关的样例连接在一起形成带有提示的输入并将其输入到语言模型中进行预测。
思维链Chain-of-thought
思维链Chain-of-thought, CoT是一种改进的提示策略旨在提高LLM在复杂推理任务中的性能例如算术推理、常识推理和符号推理。具体做法是将中间推理步骤纳入到提示中引导模型预测出正确结果。据相关论文这种能力可能是在代码上训练而获得。
提示开发调用ChatGPT的API
ChatGPT是使用OpenAI开发的大语言模型进行聊天的web网站其本质是调用ChatGPT的API完成各项任务下面演示了使用ChatGPT的API完成总结的任务除此之外它还可以完成推理、翻译、问答、校对、扩展等多项任务有时需要借助ICL或CoT获得更好的结果前提是你需要从OpenAI官网获得API的密钥key
import openai
import os
fron dotenv import load_dotenv, find_dotenv_ load_dotenv(find_dotenv())
openai.api_key os.getenv(OPENAI_API_KEY)def get_completion(prompt, temperature0, modelgpt-3.5-turbo):messages [{role: user, content: prompt)]response openai.ChatCompletion.create(modelmodel,messagesmessages,temperaturetemperature, # temperature为模型的探索程度或随机性其值是范围在01的浮点数值越高则随机性越大说明更有创造力。)return response.choices[0].message[content]text f
XXXXXXXXprompt f
Summarize the text delimited by triple backticks into a single sentence.
{text}response get_completion(prompt)
print(response)ChatGPT的web网站或者聊天机器人通常包含三个角色role的消息messages包括用户user的消息ChatGPT/聊天机器人assistant的消息和系统system的消息。下面以搭建一个“订餐机器人”为例
system messages用于设置机器人的行为和人设作为高层指令指导机器人的对话用户一般对此不可见user messages是用户的输入assistant messages是机器人的回复。
代码示例如下
import openai
import os
fron dotenv import load_dotenv, find_dotenv_ load_dotenv(find_dotenv())
openai.api_key os.getenv(OPENAI_API_KEY)def get_completion_from_messages(messages, temperature0, modelgpt-3.5-turbo):response openai.ChatCompletion.create(modelmodel,messagesmessages,temperaturetemperature, # temperature为模型的探索程度或随机性其值是范围在01的浮点数值越高则随机性越大说明更有创造力。)return response.choices[0].message[content]messages [role: system,content: 你现在一个订餐机器人你需要根据菜单收集用户的订餐需求。菜单汉堡、薯条、炸鸡、可乐、雪碧。,role: user,content: 你好我想要一个汉堡。,role: assistant,content: 请问还有其他需要的吗,role: user,content: 再要一份可乐。,
]responseget_completion_from_messages(messages)
print(response)
# 输出示例
# 好的一份汉堡和可乐已为您下单。
借助上述代码示例设计一个GUI或Web界面就可以实现人机交互修改system messages即可更改聊天机器人的行为并让其扮演不同的角色。
大语言模型未来展望
更大规模 模型的规模可能会继续增大从而提高模型的表现力和语言理解能力。更好的预训练 改进预训练策略使模型更好地理解语义和上下文提高模型在各种任务上的迁移能力。更好的微调 开发更有效的微调方法以在特定任务上获得更好的性能。多模态 将语言模型与视觉、声音等其他模态相结合实现跨领域的多模态智能应用。工具利用搜索引擎、计算器和编译器等外部工具提高语言模型在特定领域的性能。
参考文献
大语言模型综述