目前有哪些方式训练一个领域的大语言模型? 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

  1. Beyond One-Model-Fits-All: A Survey of Domain Specialization for Large Language Models
  2. The Power of Scale for Parameter-Efficient Prompt Tuning
  3. Prefix-Tuning: Optimizing Continuous Prompts for Generation

提示学习Prompt Tuning:面向研究综述293 赞同 · 2 评论文章正在上传…重新上传取消

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值