欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

目前有哪些方式训练一个领域的大语言模型? Beyond One-Model-Fits-All A Survey of Domain Specialization LLM

发布时间:2024/1/18 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 目前有哪些方式训练一个领域的大语言模型? Beyond One-Model-Fits-All A Survey of Domain Specialization LLM 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目前有哪些方式训练一个领域大语言模型?方法分类与调研

Origin Paper:Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models

目前有许多工作都在训练各个领域的大语言模型(LLM),那么训练领域的LLM有什么方法呢?

这篇文章基于此篇Paper做了一个汇总整理,做了一些简化与解释方便理解,中间第三节主要参考引用两篇知乎文章。

通用LLM微调也可以参考部分内容。

不过LLM发展非常迅速,可能过一会来看这篇文章也没有概括全,或者出现了新的formulation取代了目前方法,就像是深圳的海景房,多看一会大海(SOTA)是一会吧。

1. 大纲Outline

2. 外部知识 External augmentation (black box)


使用外部知识增强,不需要修改LLM内部参数权重,可视为LLM为黑盒


2.1 领域知识增强 Domain Knowledge Augmentation

第一种方法是领域知识增强,知识可分为显式或者隐式:

  • 显式:将领域文本知识直接作为上下文输入至LLM;
  • 隐式:被向量化的知识,需要通过计算向量查询距离获得;

获取知识后可以使用类似Langchain向量匹配方式讲长文本分块后根据query输入至LLM,如下图


2.2 领域工具增强 Domian Tool Augmentation


调用工具,如Python、SQL、API、SDK,或者访问互联网
最近的工作有以下:
WebGPT :利用互联网信息,结合查询结构,召回


HuggintGPT:利用HuggingFace里面的各个LLM


AutoGPT:引入Memory,对当前问题分解为子问题并搜索常识解决

3. Prompt设计 prompt crafting (grey box)

通过设计与控制Prompt,更好地控制LLM,可视为灰盒模型


3.1 离散Prompt Discrete Prompt


即硬提示 hard prompt
zero-shot / few-shot


如上图,好的Prompt在指标上会领先很多,但是问题是我们不可能人工自己尝试这么多可能的Prompt吧?就引入了连续Prompt。


3.2 连续Prompt Continuous Prompt


即软提示 soft prompt,软提示与硬提示恰好相反,把Prompt的生成本身作为一个任务进行学习,相当于把Prompt的生成从人类一个一个尝试(离散)变换成机器自己进行学习、尝试(连续)。
通过可学习的向量prompt来控制LLM,通常会把LLM参数freeze


比较经典的工作是Prefix-Tuning、P-Tuning、Prompt-Tuning (按发表时间从早到晚)
Prefix-Tuning

针对NLG任务


P-Tuning
针对NLU任务


Prompt-Tuning
Prompt-tuning给每个任务定义了自己的Prompt,拼接到数据上作为输入,同时freeze预训练模型进行训练。

在没有加额外层的情况下,随着模型体积增大效果越来越好,最终追上了精调的效果。


Prompt Tuning要求输入输出在模板里面,就不可避免地需要对原来的任务进行格式重构(Reformat),从而能够达到最佳性能。
其实Prompt Tuning的本质是改变任务格式,从而迎合大模型的性能。
换句话说,Prompt Tuning的前提是预训练模型的性能已经非常好了,我们只需要在推断的时候进行任务格式转换即可获得很好的性能。

4. 模型微调 model fine-tuning (white box)

需要更新模型具体参数

上图中a为基于Adapter的微调,可理解为加了额外的神经网络,其余LLM部分参数不变;

b为面向任务的微调,可理解为只改变LLM中部分参数;

4.1 基于Adapter的微调 Adapter-based FT

只finetune部分参数,代表的工作有LoRA QLoRA Adapter等方式;

Adapter

将 adapter 加入到 transformer 中,在针对某个下游任务微调时,改变的仅仅是 adapter 的参数

LoRA

LoRA的实现原理在于,冻结预训练模型权重,并将可训练的秩分解矩阵注入到Transformer层的每个权重中,大大减少了下游任务的可训练参数数量。

直白的来说,实际上是增加了右侧的“旁支”,也就是先用一个Linear层A,将数据从 d维降到r,再用第二个Linear层B,将数据从r变回d维。最后再将左右两部分的结果相加融合,得到输出的hidden_state。

QLoRA

实现了量化的LoRA

4.2 面向任务微调 Task-oriented FT

Instruction-based Knowledge Update

Instruction Tuning

RLHF

部分知识更新Partial Knowledge Update

知识编辑 Knowledge editing

梯度遮掩 Gradient Masking

知识蒸馏 Knowledge Distillation

总结

本文讲微调模型的方法进行了分类讲解。

Paper原文中还讲解了目前各个领域的大模型,如医疗、地球科学、金融、法律、教育、软件工程,感兴趣可以阅读原文,或者以后随缘更新- -

Ref

  • Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models
  • The Power of Scale for Parameter-Efficient Prompt Tuning
  • Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • 提示学习Prompt Tuning:面向研究综述293 赞同 · 2 评论文章正在上传…重新上传取消

    Prompt范式第二阶段|Prefix-tuning、P-tuning、Prompt-tuning248 赞同 · 9 评论文章

    总结

    以上是生活随笔为你收集整理的目前有哪些方式训练一个领域的大语言模型? Beyond One-Model-Fits-All A Survey of Domain Specialization LLM的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。