当前位置: 首页 > news >正文

大语言模型LLM综述

一、LM主要发展阶段

1.1、统计语言模型SLM

基于统计学习方法,基本思想是基于马尔可夫假设HMM建立词概率预测模型。如n-gram语言模型

1.2、神经语言模型NLM

基于神经网络来做词的分布式表示。如word2vec模型

1.3、 预训练语言模型PLM

 预训练一个网络模型来做词表示,然后根据任务微调网络模型。即“预训练+微调”学习范式。如BERT、GPT-2

1.4、 大语言模型LLM

扩展预训练模型PLM,参数达到百亿级别及以上,模型出现涌现能力,如GPT-3,显著应用ChatGPT

二、 LLM基本概念和技术

2.1 LLM模型架构

- LLM主要采用基于Transformer模型架构和预训练目标构建。但它大幅扩展了模型大小、预训练数据和总计算量,可以更好地根据上下文理解自然语言并生成高质量的文本。

2.2 “涌现能力”

2.2.1上下文学习能力:

假设提供给语言模型自然语言指令或多个任务演示,它可以为测试实例生成期望的输出,无需额外的训练。

2.2.2 指令遵循能力:

通过指令微调 ,LLM可以在未见任务上遵循任务指令,具有更好的泛化能力。

2.2.3逐步推理:

通过采用“思维链”推理策略,LLM可以利用包含中间推理步骤的提示机制来解决任务。

2.3 LLM关键技术

- 扩展:将模型参数规模提升到百亿、千亿级别。在模型大小、数据大小、总运算量上的扩展。
- 训练:训练稳定性、混合精度训练的分布式训练框架。
- 能力引导:通过设计合适的任务指令或上下文学习策略激发LLM的任务求解能力。
- 对齐微调:使LLM与人类价值观保持一致,如有用性、诚实性、无害性。
- 工具操作:为解决不适合以文本形式表达的任务而设计和扩展的外部插件。

2.4 LLM模型资源

2.4.1公开的模型

    - 百亿参数级别的模型

        - LLaMA、NLLB、PanGu-a

    - 千亿参数级别的模型

        - OPT、OPT-IML、BLOOM、GPT-3、GLM

2.4.2 公共API

    - GPT-3系列模型的API接口: ada、babbage、curie、 davinci等
    - GPT -4模型API接口:gpt-4、gpt-4-0314、gpt-4-32k、gpt-4-32k-0314
    - chatGPT接口: gpt-3.5-turbo-o301

2.4.3 常用语料库

    - BOOKs 、Butenberg:有上万本文学作品、电子书的开源书籍集合。
CommonCrawl: 网络爬虫数据库
Reddit Links:社交媒体语料库
Wikipedia:在线百科全书
Code:网络上爬取的开源许可的代码。
    - GPT-3使用的预训练语料库: CommonCrawl、WebText2、Books1、Books2、Wikipedia

2.4.4 算法库资源

- Transformers:Hugging Face
- DeepSpeed: Microsoft
- Megatron-LM: NVIDIA
- JAX:Google
- FastMoE 

三、 如何预训练LLM

3.1 数据收集

3.1.1 语料库来源

    - 通用文本数据: 网页、对话文本、书籍
    - 专用文本数据:多语言文本、科学文本(如论文、教材等)、代码

3.1.2 数据预处理

    - 质量过滤: 删除低质量数据。

       (1) 基于分类器的方法
       (2)基于启发式的方法:  基于语言的过滤、基于度量的过滤、基于统计的过滤、基于关键词的过滤

    - 去重: 在句子级、文档级、数据集级等不同粒度上去重。

    - 隐私去除: 删除可识别的个人信息PII,一般采用基于规则的方法
    - 分词:将文本分割成词序列。SentencePiece、Byte Pair Encoding(BPE)算法

3.2 架构设计

3.2.1 主流架构

    (1) 编码器-解码器架构: Transformer架构是目前各LLM的事实标准骨干。
    (2) 因果解码器架构: 采用单向注意力掩码,每个输入标记只关注过去的标记和它本身。输入和输出通过解码器以相同的方式进行处理。GPT系列模型基于此架构。
    (3) 前缀解码器: 也称为非因果解码器架构,修正了因果解码器的掩码机制,使其能够对前缀标记执行双向注意力,并对生成的标记执行单向注意力。模型有GLM-130B、U-PaLM
    (4) 专家混合MoE

3.2.2 详细配置

    (1)标准化: 为了缓解LLM预训练的不稳定问题,设计了层标准化LN。前置LN、RMS Norm、DeepNorm
    (2)激活函数: 广泛使用GeLU激活函数,GLU激活函数变体,如SwiGLU 、GeGLU等。
    (3) 位置编码: a.绝对位置编码:正弦函数、学习的位置编码; 
               b.相对位置编码:RoPE算法
    (4) 注意力机制和偏差: 原始的Transformer是全自注意力机制,GPT-3采用了稀疏注意力机制,即分解注意力,计算复杂度更低。

3.2.3 预训练任务

    (1) 语言模型LM:基于序列前面的标记x,自回归地预测目标标记xi。

        训练目标为最大化似然函数L(x)=sum(logP(xi|x<i))
    (2) 去噪自编码DAE: 任务的输入是一些有随机替换区间的损坏文本。

         训练目标L(x) = logP(x~|x)

3.3 模型训练

3.3.1 优化设置

    1、批量训练: 将批量大小设置为较大的数字,或动态增加批量大小
    2、学习率:调整策略warm-up、decay
    3、优化器: Adam、AdamW优化器
    4、 稳定训练:使用权重衰减和梯度裁剪等,来解决预训练过程不稳定的问题

3.3.2 可扩展的训练技术

    解决计算资源和训练效率的技术问题,即提高训练吞吐量和将更大的模型加载到GPU内存中。
    1、3D并行
        (1) 数据并行: 将模型参数和优化器状态复制到多个GPU上,将训练语料库分配到GPU上
        (2) 流水线并行:将LLM的不同层分布到多个GPU上。 气泡开销问题 。Gpipe、PipeDream
        (3)张量并行:专注于分解LLM的张量(参数矩阵)。

2、ZeRO技术
3、 混合精度训练
     - FP16和FP32精度训练,BF16
4、整体训练建议(基于现大模型实例)
    - BLOOM:采用8路数据并行、4路张量并行、12路流水线并行
    - DeepSpeed:支持3D并行训练,ZeRO、FSDP和激活计算技术。

四、如何有效微调LLM模型

4.1 指令微调

在自然语言格式的实例集合上微调LLM的方法,目的是增强LLM的能力

4.1.1 格式化实例构造

    - 格式化已有数据集:PromptSource众包平台
    - 格式化人类需求:真实用户提交给OpenAI API的查询任务作为任务描述、真实生活中的任务指令编写。
    - 实例构建的关键因素

        - 扩展指令: 从任务数量、任务描述的多样性来增加任务实例样本,增加模型的泛化能力。
        - 格式设计: 指令的多样性比实例数量更重要。

4.1.2 指令微调策略

    - 平衡数据分布
    - 结合指令微调和预训练

4.1.3 指令微调的效果

    - 性能改进
    - 任务泛化性

4.2 对齐微调

将LLM的行为与人类的价值观或偏好对齐。

4.2.1 对齐标准

    - 有用性、诚实性、无害性

4.2.2 人类反馈收集

    - 标注人员选择
    - 人类反馈收集

        - 基于排序的方法:Elo评分系统、基于问题的方法、基于规则的方法

4.2.3 基于人类反馈的强化学习

    - RLHF系统

        - 关键组件:预训练LM、从人类反馈中学习的奖励模型、训练LM的RL算法。
        - 关键步骤:监督微调、训练奖励模型、RL微调

五、 使用利用LLM解决下游任务

 为解决各种任务设计适当的提示策略。

5.1上下文学习ICL

5.1.1 上下文学习的一般形式: ICL

ICL由任务描述和几个任务样例作为示范组成的自然语言提示。示范为<输入,输出>

5.1.2样例设计

    1、样例选择

        - 启发式的方法
        - 基于LLM的方法: 根据添加样例后LLM的性能提升来评估样例的信息量进行选择。
使用LLM作为样例生成器。

    2、样例格式

        - Auto-CoT生成中间推理步骤;
        - least-to-most首先查询LLM进行问题分解,然后按顺序依次解决。
    3、样例顺序

        - LLM有时会受到顺序偏差的影响,即倾向于重复样例结尾处的答案。因此,以合理顺利排列样例任务非常重要。
        - 启发式方法,如根据查询相似度排序,或根据全局和局部熵度量来打分排序等

5.1.3底层机制

    - 预训练如何影响ICL?

        ICL的性能主要取决于预训练语料的来源而非规模。
        当训练数据可以被聚类成许多不常见的类别,而不是均匀分布,模型就会出现ICL的能力。
    - LLM如何实现ICL? 

        从梯度下降的角度分析,ICL也被视为隐式微调。在这个框架下,ICL可以解释为注意力机制隐式的执行梯度下降。

5.2 思维链CoT提示

思维链Chain-of-Thought, CoT: 是一种改进的提示策略,旨在提高LLM在复杂推理任务中的性能,如算术推理、常识推理、符号推理。CoT不同于ICL,它会将导出最终输出的中间推理步骤纳入提示中。

5.2.1 用CoT进行上下文学习

    (1)少样本CoT

少样本CoT是ICL的一个特例,示范为<输入,CoT,输出>

        - CoT提示设计

使用多样的CoT推理路径,即每个问题设计多个推理路径,来增强LLM性能。设计具有复杂推理路径的提示来引出LLM的推理能力。这两个方法都需要人工标注CoT,实践有限制。

Auto-CoT提出利用Zero-shot-CoT让LLM生成推理路径。将问题分成不同的蔟,选择最接近每个蔟质心的问题来代表整个训练集。
        - 增强的CoT策略

提供更多推断答案的选项,关注如何生成多个推理路径,并尝试在对应的答案中寻找共识。

self-consistency策略:利用LLM生成多个推理路径,然后对所有答案进行集成。

    (2)零样本CoT

没有在提示中加入人工标注的样例,而是直接生成推理步骤,然后利用生成的CoT来得出答案。通过“let's think step by step”提示生成推理步骤,然后通过“Therefore, the answer is”提示得出最终答案。

5.2.2 关于CoT的问题

    - CoT何时适用于LLM?

CoT是一种涌现能力,只能有效增强有百亿或更多参数的大模型,对小模型无效。
CoT通过中间推理步骤增强了标准提示,它的效果主要体现在需要逐步推理的任务,如算术推理、常识推理、符号推理,而对于不依赖于复杂推理的任务,它可能会比标准提示表现更差。

  - LLM为什么能够进行CoT推理?

        - CoT能力的来源

因为在代码数据训练过的模型表现出强大的推理能力,普遍将CoT能力其归因为使用代码进行训练。但该假设没有公开的消融实验做证据。
根据实验表明,指令调整不是获得CoT 能力的关键原因。
        - 各个组件的作用

CoT提示的三个关键组成部分,即符号、模式、文本。模式和文本对模型的性能至关重要,符号和模式的正确性并不关键。文本和模式之间存在共生关系。

六、如何评估LLM的能力

为检验LLM模型的有效性和优越性,设计了大量的任务和基准数据来进行实证评估和分析。

6.1基础评测任务

6.1.1语言生成

  - 语言建模

        基于前面的词预测下一个词,关注基本的语言理解和生成能力。
        评估该能力的LM数据集有:Penn Treebank、 WikiText-103、Pile。
        指标:预测单词的准确性、困惑度指标来评估LLM的性能
- 条件文本生成
        基于给定的条件生成满足特定任务需求的文本,包括机器翻译、文本摘要、问答系统等。
        指标:为衡量文本生成的质量,使用自动指标(如准确性、BLEU、ROUGE)和人工评分来评估性能。
        由于现在GPT-4等LLM都有很优秀的文本生成能力,人们开始通过收集目前无法解决的任务或创建更具有挑战性的任务来制定新的评估基准。如BIG-bench Hard等新指标。

- 代码合成

        LLM生成形式化语言的能力,如满足特定条件的代码,这种能力被成为代码合成。
指标:代码测试用例通过率、功能正确性。

- 主要问题

        - 可控生成

            为解决LLM生成复杂结构约束文本的时候,全局关系(长距离相关性)和局部关系(相邻句子间交互)的文本结构问题。
          迭代提示:将一次性生成扩展到LLM的迭代提示,即将语言生成分解成多个步骤。
          安全控制:RLHF算法能一定程度上缓解LLM生成冒犯性表达、包含敏感信息的文本。
     - 专业化生成

        一般语言模型 Vs专业语言领域任务。如使用LLM生成医学报告。
        神经网络训练的灾难性遗忘:在整合新旧知识时产生的冲突现象。

6.1.2 知识利用

  - 闭卷问答

        测试LLM从预训练语料库中获取的事实知识。LLM只能基于给定的上下文回答问题,不能使用外部资源。
        测试数据集:Natural Questions、Web Questions、TriviaQA
        指标: 准确性
 - 开卷问答

        LLM可以从外部知识库中提取有用的证据,然后基于证据回答问题。
        数据集:OpendBookQA、SQuAD
        指标: 准确性、F1-score
 - 知识补全

        将LLM看作一个知识库,用于补全或预测知识单元缺失的部分。
        知识补全任务分为:知识图谱补全任务、事实补全任务。
        指令微调有助于LLM完成知识补全任务。
 - 主要问题

    - 幻觉

        内在幻觉:LLM生成的信息与现有来源相冲突
        外在幻觉:LLM生成的信息无法通过现有来源验证。
        幻觉检测任务:TruthfulQA


    - 知识实时性

        LLM更新知识的时效性问题。
        定期更新数据重新训练,耗费资源大;增量训练,可能会导致灾难性遗忘问题。
        利用外部知识源来补充,作为一种即插即用的模块。如ChatGPT利用检索插件访问最新的信息源。

6.1.3 复杂推理

复杂推理是指LLM理解和利用相关的证据、逻辑来推导结论、作出决策的能力。

    - 知识推理

        依赖于事实知识的逻辑关系和证据来回答给定的问题。
        测试数据集:CSQA/StrategyQA用于常识推理,ScienceQA用于科学知识推理。
    - 符号推理

        主要关注在形式化规则设置中操作符号以实现某些特定目标。
    - 数学推理

        需要综合利用数学知识、逻辑和计算来解决问题或生成证明过程。
        数学问题求解任务,评估数据集:SVAMP、GSM8k、MATH
        自动定理证明,评估数据集:PISA、miniF2F,证明成功率是评估指标。
    - 主要问题

        - 不一致性

             LLM可能会在错误的推理路径下生成正确答案或者在正确的推理过程后产生错误答案,导致答案和推理过程间的不一致性。
        - 数值计算

6.2 高级能力评估

- 人类对齐

        让LLM能很好地符合人类的价值和需求。
        评估标准: 有益性、诚实性、安全性。
        利用对抗性回答任务(TruthfulQA)来检测LLM在虚假性方面的能力。
        有害性可通过CrowS-Pairs、Winogender来评估。人工检验。不允许的规则提示。
- 与外部环境的互动

        LLM从外部环境接收反馈并根据行为指令执行操作的能力,如操作智能体。
        如VirtualHome Agent执行LLM生成的语言形成执行家务任务。BEHAVIOR在模拟环境中进行日常杂务,如更改对象内部状态等。
- 工具操作

        LLM可利用外部API工具,如搜索引擎、计算器、编译器、Web浏览器插件等,以增强LLM在特定任务上的性能,扩展LLM的能力范围。

6.3 公开基准和经验性分析

6.3.1评测基准

- MMMLU: 一个通用评测基准,用于大规模评测LLM的多任务知识理解能力。
- BIG-bench:一个由社区协作收集的评测基准,包含204个任务,主题包括语言学、儿童发展、数学、常识推理、生物学、物理学、社会偏见、软件开发等,旨在从各个方面探究LLM的能力。
- HELM: 包括16个核心场景和7类指标,旨在对LLM进行全面评估。

6.3.2 LLM的综合分析

    - 通才

        - 熟练度: 评估LLM在解决一般任务方面的熟练度。                
        - 稳定度: 评估LLM对噪声、扰动的稳定度。对抗攻击处理。

    - 专才

        - 医疗、教育、法律等

附:LLM综述脑图

这是简略版的脑图,全的那份有点大,上传不成功。但框架是全的,不影响整体结构。


http://www.mrgr.cn/news/75123.html

相关文章:

  • gitlab与jenkins
  • Word VBA如何间隔选中多个(非连续)段落
  • uniapp路由与页面跳转详解:API调用与Navigator组件实战
  • 为什么在Ubuntu下使用VScode开发C++程序时需要手动配置链接库
  • 【疑难杂症】电脑休眠后无法开机,进入 steamVR 时电脑突然黑屏关机
  • QT Unknown module(s) in QT 以及maintenance tool的更详细用法(qt6.6.0)
  • GRU(门控循环单元)详解
  • Siggraph Asia 2024 | Adobe发布MagicClay:可通过文字引导去对3D模型中的特定部分进行雕刻
  • 【今天的乐子】你真懂代码吗?挑战这10个笑话,程序员专属梗了解一下
  • C++《继承》
  • 企业运营的智能化升级:AI助理与SOP的融合之道
  • java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
  • 线程的状态有哪些?它是如何工作的?
  • SMA-BP基于黏菌算法优化BP神经网络时间序列预测
  • 解析安卓镜像包和提取DTB文件的操作日志
  • 探索AutoDL与CodeWithGPU:深度学习之旅的新起点
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • 【算法一周目】双指针(2)
  • JavaScript总结
  • Path.Combine容易被忽略的细节
  • DAPP迎启动契机,Scroll 生态全面启动为 Pencils Protocol 赋能
  • C++函数的返回值在内存中的传递过程
  • 第4章-计划 4.4 范围管理
  • Python基础学习-07不可重复的set集合
  • 常用的生物医药专利查询数据库及网站(很全!)
  • Jetpack 之 Ink API初探