Prompt Engineering

https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/

Few-shot: 有例子,效果好;增大了context长度,执行变慢;

可能的问题:1. Label不均衡造成生成label的bias;2.最后一个shot的label容易被输出;3. 常见词比生僻词更容易被输出;

few-shot example选择:

  1. 当前question,去example库里搜索语义相似的examples,作为few-shot;

  2. 用算法找出彼此最diversity的作为few-shot;

few-shot example顺序:

  1. 足够随机;(也可每次推理用不同的order)

Instruct LM:

Instructed LM (e.g. InstructGPT, natural instruction) finetunes a pretrained model with high-quality tuples of (task instruction, input, ground truth output) to make LM better understand user intention and follow instruction .
RLHF (Reinforcement Learning from Human Feedback) is a common method to do so.
trying to be specific and precise and avoiding say "not do something" but rather specify what to do.

写上受众人群:给6岁小孩....;工作中用的...;

Sampling:

用大一些的temperature,多采样几次;用majority vote来决定用谁(分类任务的类别使用;生成句子,两次不太可能重合,不太适用);(输出代码,且有现成的test case,那种,可以多retry几次看哪次判对了)

CoT(Chain of Thought)("新想"、"Thought"也是这类):

适合复杂任务;适合50B以上的大模型;

Few-shot COT:

Question: Tom and Elizabeth have a competition to climb a hill. Elizabeth takes 30 minutes to climb the hill. Tom takes four times as long as Elizabeth does to climb the hill. How many hours does it take Tom to climb up the hill?

Answer: It takes Tom 30*4 = <<30*4=120>>120 minutes to climb the hill. It takes Tom 120/60 = <<120/60=2>>2 hours to climb the hill. So the answer is 2.

===

Question: Jack is a soccer player. He needs to buy two pairs of socks and a pair of soccer shoes. Each pair of socks cost $9.50, and the shoes cost $92. Jack has $40. How much more money does Jack need?

Answer: The total cost of two pairs of socks is $9.50 x 2 = $<<9.5*2=19>>19. The total cost of the socks and the shoes is $19 + $92 = $<<19+92=111>>111. Jack need $111 - $40 = $<<111-40=71>>71 more. So the answer is 71.

===

Question: Marty has 100 centimeters of ribbon that he must cut into 4 equal parts. Each of the cut parts must be divided into 5 equal parts. How long will each final cut be?

Answer:

0-shot COT:

Question: Marty has 100 centimeters of ribbon that he must cut into 4 equal parts. Each of the cut parts must be divided into 5 equal parts. How long will each final cut be?

Answer: Let's think step by step.

结论:

  1. 多采样几次,majority vote,能提升效果;

  2. 改变few-shot example的顺序,或改变example选择,增加了随机性,多次采样,能提升效果;

  3. 只有answer没有推理过程的训练数据,如果用LLM自动生成一些推理过程,并保留那些同时生成了正确answer的,将这些<question, 推理过程, answer>做训练,能提升效果;(如果训练数据不带answer,权宜之计是用多次采样+majority vote来生成近似answer)

  4. 推理链每步之间的分隔符也有trick:

When separating reasoning steps, newline \n symbol works better than step i, period . or semicolon ;

  1. 只在top-k个最复杂(步数最多)的sampling输出上,majority-vote得出答案,效果好;

  2. 复杂的推理样例few-shot,在复杂question上能提升效果,在简单question上反而伤害效果;

  3. "Question:"比"Q:"更有效

  4. 自问自答:Prompt-->生成问题1-->生成Answer1-->生成问题2-->...-->生成FinalAnswer而不是问题;(这些生成的问题,可以用大模型回答,也可以搜索知识库、搜索引擎等Tools)

  1. Tree of Throught

该层的所有节点,放到input-prompt里面,让大模型给出CoT和答案(选谁)。多采样几次,选中最多的那个节点,优先展开。

Automatic Prompt Engineer:

  1. 把少量example放到prompt里,让大模型输出instruction:

{{Given desired input-output pairs}}\n\nThe instruction is

  1. 对这些种子instruction,进行迭代更新:

Generate a variation of the following instruction while keeping the semantic meaning.\n\nInput: ...\n\nOutput:...

  1. 评价每个自动生成的instruction的好坏,用其在validation-set上的生成结果分数之和,来打分;

生成带CoT推理过程的Few-shot: (我觉得,人工挑选最有代表性的Cot-Examples,最好)

  1. 将可用的example聚类,每个聚类选择1个离中心最近的(最优代表性的);

  2. 每个sample用0-shot CoT来生成推理过程;

开卷QA:

借助搜索引擎;(每个doc按6个句子来split;匹配算法用的TF-IDF)

即使搜到了近年新东西加入prompt里,但效果,还是不如关于老东西的question答的好;原因:新东西和模型的记忆有冲突;

闭卷QA:

回答Question之前,先自己问自己回答该Question需要什么知识,然后再把知识加入prompt;据说效果能变好;

LLM生成程序-->执行程序-->执行结果当作答案;

相关推荐
学术头条37 分钟前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客42 分钟前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn
Ven%1 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip
IT猿手1 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法
强哥之神2 小时前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai
18号房客2 小时前
一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
人工智能·深度学习·机器学习·生成对抗网络·语言模型·自然语言处理·tensorflow
神秘的土鸡2 小时前
神经网络图像隐写术:用AI隐藏信息的艺术
人工智能·深度学习·神经网络
数据分析能量站2 小时前
神经网络-LeNet
人工智能·深度学习·神经网络·机器学习
Jaly_W2 小时前
用于航空发动机故障诊断的深度分层排序网络
人工智能·深度学习·故障诊断·航空发动机
FL16238631293 小时前
钢材缺陷识别分割数据集labelme格式693张4类别
深度学习