预训练模型演化,提示词工程

ELMO

ELMO模型在bert之前就出现了,并且较早了提出了预训练思路

它建议的下游任务使用方式

先预训练好权重,然后在下游任务的时候,将预训练好的权重,和通过embedding转化成向量的输入拼接到一起送入RNN ----------> 将ELMO向量与词向量拼接输入下游模型

效果比不上bert,它用的是双向LSTM和现在transforme r比差距较大

GPT

早于BERT,启用了Transformer作为核心编码器,(比ELMO要好,因为把LSTM替换了)

开始使用特有token连接不同句子

语言模型采取单向

采取Transformer与采取LSTM的对比如下

BERT

BERT的模型结果与GPT差不多,激活函数变成了gelu

主要区别在于预训练目标的不同:

BERT是MASK LM任务 BERT是挖坑是双向的,而GPT是单向的

证明了MLM预训练强于单向,不过后来被推翻了

当时为了推进相关的工作,国内出了一个Ernie-baidu

Mask随机token -> Mask实体或词组

当时BERT倾向于遮住一个词,而百度提出了遮住一个词组

于此同时,清华大学也推出了Ernie-Tsinghua

将知识图谱变成张量加进去

强调了额外知识的重要性

再往后就是GPT2

继续使用单向语言模型(当时的主流为Bert,但是依然坚持单向)

继续使用transformer结构

Bigger model,more data

为什么坚持单项语言模型呢?

因为生成式任务就是前面预测后面

强调zero-shot 就是模型训好就能用,不需要进行微调

Transformer-XL & XLNet

希望解决Transformer的长度限制问题(Bert限制最大长度 512)

  1. 循环机制 (与RNN相结合)

RNN的原理

RNN效果不好,就是随着长度增加,前面的消息逐渐淡化

2.相对位置编码

同时指出了两个语言模型的问题

1.AR语言模型

单向预测下一个字

缺点: 缺少双向信息

  1. AE语言模型

双向信息输入,预测中间某个mask的字

缺点: 引入了[mask],但实际任务中不存在 就是在实际中输入和输出的都是一个句子,训练和使用的时候的不同

AR语言模型与AE语言模型融合

调整句子顺序,之后进行单向预测

Roberta (bert的变体)

模型结果不变,训练方式调整

1.更多的数据,更大的batch size,更久的训练

2.去掉next sentence prediction(NSP)

3.使用更长的样本 和bert一样的位置编码

4.动态改变mask位置 不同轮同一句话的mask位置可以改变

SpanBert

与BERT的主要区别有三个:

1.去掉了NSP任务

2.随机mask几个连续的token

3.新的预训练任务SBO

ALBERT

试图解决Bert模型过大的问题

1.想办法减少参数量

V = 词表大小 30000

H = 隐单元个数 1024

E = 指定Embedding大小 512

参数量

V*H = 30720000

V*E + E*H = 15884288

直接将V转变成1024太打了 ,先转成512 , 再乘以512*1024会很大

2.跨层参数共享

transformer里面有12层,每层都有attention个feed-forward部分

只共享attention部分

只共享feed-forward部分

全部共享

SOP任务代替NSP任务

SOP任务预测两句话的前后关系,同样式二分类任务

局限:

1.虽然目的在于缩减参数,但依然是越大越好

2.虽然缩减了参数,但是前向计算速度没有提升(训练速度有提升)

DistillBert模型蒸馏技术

解决推理速度的问题,希望有效果像完整的bert一样好,但是速度提升2-3倍

小模型从大模型输出的概率分布进行学习

DistilBERT 用 12 层的 BERT-base 做老师,6 层做学生。训练时三个 loss 叠加:蒸馏

loss(让学生模仿老师的软标签输出,就是一个好的大模型,可能有多个正确答案)+ MLM loss(让学生直接预测正确的 token)+ 余弦loss(让学生和老师的隐层表示尽量一致)

KL散度

KL三度是一种衡量两个概率分布(也可简单理解为向量)之间差异的算法,经常作为神经网络的loss函数使用

与交叉熵计算过程非常接近,但交叉熵通常要求target是one-hot形式

T5(Text - to - Text Transfer Transformer)

Seq2seq理论上可以解决一切NLP问题

分类问题: 文本->标签

命名实体识别: 文本->实体

摘要,翻译: 文本 -> 文本

回归问题: 文本 -> 0.1(字符串)

从续写到回答

在预训练的时候,不断预测下一个问题

问答就是,在问题和答案间加一个特殊符号,由分隔符输出答案的第一个字,再由答案的第一个字输出答案的第二个字 (SFT训练)

为什么ICL离谱(ICL in context learning)

因为权重的不断更新展现出来不断的学习

但是在我们问大模型,我们输入加些东西,输出就随机调整,我们把这个能力称为ICL

ICL的优势

传统做法:

任务定义 - > 建立标注规范 -> 标注人员学习规范 -> 标注人员进行标注 ->对标注结果审核->

使用标注数据训练模型 -> 模型验证效果 -> 模型实际预测

ICL:

任务定义 -> 模型实际预测 ICL方法如果完全成熟,意味着fine-tune范式的终结

z-s,o-s,f-s 属于ICL

z-s 是不给大模型例子,直接让大模型根据要求作答

o-s 给一个例子,再让大模型作答

f-s 给几个例子,再让大模型

COT(chain-of-thought)属于ICL

左边那个 给你问题,一个具体答案,再问一个问题 属于one-shot

COT就是给你个解题思路,右边那个就是,模型在回答的时候,也会发生变化,也会跟着输出思维链,正确率也会提高

在输入中加入至少一个样本,能大幅提高ICL效果

豆包 deepseek 的深度思考就是思维链,在实际操作中输出的思考包裹在特殊标签<think></think>

fine-tune 会伤害ICL

微调会失去模型的通用性,顶级模型恰恰是通用模型

精巧prompt设计有可能超过os,fs

ICL时输入错误样本,不一定影响准确率

ICL要点

1.语言模型规模

2.prompt中提供的examples数量和顺序

3.prompt的形式

fine-tune VS ICL

|-----|----------------------------------|-----------------------------------------|
| | fine-tune | in contexxt leanring |
| 优点 | 1.有一定可能从一个相对小的模型中,获得还可以的结果 | 1.出来基础模型之外,不需要其他资源 2.快速落地,快速调整 3.适应各种任务 |
| 缺点 | 1.需要训练数据 2.能力变得局限 | 1.必须是个大模型 2.有context长度限制 |
| 共同点 | 1.以预训练模型为基座 2.生成结果不完全可控 3.没有可解释性 | |

提示工程

语言模型,根据上文,计算下一个字的概率分布

不断依照概率选取下一个字,迭代生成文本

直到预测出下一个为<eos>的特殊token算结束

语言模型生成文本的基本特点:

1.黑盒

2.相似的表达,不一定有相似的回复

3.完全相同的输入,也可以有不同的结果

输入的文本,也称为prompt

应用场景

适合使用提示工程来完成的场景,原则建议:

1、自己完全能够完成,但是很花时间

2、自己没有完整思路,但完全能够判断结果的正确性

3、纯创意型场景(没有正确性要求)

不建议的场景:

1、获取自己不熟悉的领域的信息,但同时对正确性要求很高

2、复杂的计算型任务

3、处理分析很大量的数据

写文案

解释/写一段代码

简历生成,JD生成

Excel应用

模拟面试

文章相关性打分

构造训练数据

prompt相关技巧

模型相关参数的设置

采样策略相关参数,在相同模型下,调整这些参数会使得模型的表现有差异

一些值得了解的参数:

Temperature 参数越大,生成结果随机性越强,越小越固定

Top P 参数越大,生成结果随机性越强,越小越固定

Frequency Penalty 参数越大,文本中出现过的字再次出现的概率会便小,减少复读机问题的出现

不明确的prompt会引发猜测

设定自己的角色

设定chatgpt的角色

详细,明确的描述

提供背景信息

prompt结构示例

指令词,输入,背景可选,输出要求可选

基础结构示例

其他模板示例

Role-Task-Format(角色-任务-格式)

Task-Action-Goal (任务-动作-目标)

Before-After-Bridge (之前-之后-桥梁)

Context-Action-Result-Example (环境-行动-结果-例子)

Role-Input-Steps-Expectation (角色-输入-步骤-期望)

合理使用分隔符

文本摘要Prompt: Summarize the text delimited by triple backticks into a single sentence. ```{text}```

给模型拒识出口

如果模型无法完成分配的任务,有时为模型提供一个"出口"会有所帮助。例如,当对一段文本提出问题时,可能加入诸如"如果答案不存在,则用'未找到'回答"之类的内容。这可以帮助模型避免生成错误响应。

让AI自己提问

插件/工具

插件可以理解为其他应用或者产品,为AI模型准备的接口(function call),插件成为模型的"眼睛"和"耳朵","手"和"脚" 帮助模型获取信息,并完成具体事务

相关推荐
BU摆烂会噶2 小时前
【LangGraph】House_Agent 实战(一):架构与环境配置
人工智能·vscode·python·架构·langchain·人机交互
小小测试开发2 小时前
OpenAI 模型攻克离散几何 80 年难题:Erdős 单位距离猜想被 AI 证明
人工智能·算法·机器学习
moonsims2 小时前
从“传感器融合”升级为“多机器人约束融合系统”-Factor Graph 多约束融合
人工智能·算法
tedcloud1232 小时前
agent-skills部署教程:打造工程化AI Agent系统
服务器·人工智能·系统架构·powerpoint·dreamweaver
测试员周周2 小时前
【Appium 系列】第15节-视觉测试 — 截图、对比、视觉回归
人工智能·python·数据挖掘·回归·appium·测试用例·测试覆盖率
Dfreedom.2 小时前
模型剪枝完全指南:从理论到实践,打造高效深度学习模型
人工智能·算法·机器学习·剪枝·模型加速
开始脱发的自然卷2 小时前
用 Excel 手算 LSTM:从四个门到梯度下降的完整过程
人工智能
BU摆烂会噶2 小时前
【LangGraph】House_Agent 实战(五):持久化、流式输出与部署
人工智能·python·架构·langchain·人机交互
txg6662 小时前
机器人领域简报(2026年5月15日—5月21日)
人工智能·机器人