【prompt】什么是 Soft Prompt 和 Hard Prompt ?

读论文的过程中看到soft prompt的概念,不是很能理解,后来复习了一下prompt综述,原来在那篇论文中讲得很清楚,在这篇博客中做一下整理。
参考:https://arxiv.org/pdf/2107.13586.pdf

总结:

  • hard prompt 又称为 Discrete Prompt
  • soft prompt 又称为 Continuous Prompts

模板的制作分为手工创建模板和自动化生成模板,而自动化生成模板又分为离散提示(又叫做硬提示)和连续提示(又叫做软提示)

Discrete Prompt / Hard Prompt

离散prompt中,prompt是一个实际的文本字符串。下面简单介绍自动化生成离散prompt的集中方法。

1. Prompt Mining

该方法需要一个包含输入字符串x和输出字符串y的大型文本语料库(例如维基百科),并找到中间词或输入输出之间的依赖路径。高频中间词或者依赖路径将作为模板,如:“[X] middle words [Z]”

2. Prompt Paraphrasing

基于释义的方法采用现有的种子提示(例如手工构建或挖掘),并将其解释为一组其他候选提示,然后选择在目标任务中达到最高训练精度的提示。

这个解释可以以多种方式进行,包括将模板进行双向翻译(先翻译成另外一种自然语言然后再翻译回来),或使用替代的同义,或者使用专门优化的a neural prompt rewriter,以提高使用prompt的系统的准确性。

3. Gradient-based Search

这个方法在实际token上应用了基于梯度的搜索,以找到能够触发底层预训练LM生成所需目标预测的短序列。这种搜索是以迭代的方式完成的,在prompt中逐行执行标记。

4. Prompt Generation

这种方法将提示的生成视为文本生成任务,并使用标准的自然语言生成模型来执行该任务。例如,将seq2seq预训练的模型T5引入到模板搜索过程中。

由于T5已经进行了预训练,所以可以使用T5来生成prompt token,方法是(1)指定在templat中插入模板标记的位置 (2)提供训练样本供T5解码template tokens。

5. Prompt Scoring

首先手工制作一组模板作为潜在的候选者,然后填充input和answer slot以形成一个填充的提示。然后,他们使用单向LM来给那些填满的提示打分,选择LM概率最高的提示。这将为每个单独的输入生成自定义模板。

Continuous Prompts / Soft Prompt

连续prompt中,prompt直接在底层语言模型的嵌入空间中进行描述.

由于prompt构造的目的是找到一种方法,使LM能够有效地执行任务,而不是供人类使用,因此没有必要将prompt限制为人类可解释的自然语言。因此,还有一些方法叫连续prompt(也称为软提示),这些提示可以直接在模型的嵌入空间中执行提示。具体来说,连续提示消除了两个约束:

  1. 模板词不再是自然语言。
  2. 消除了模板是由预训练LM的参数化的限制。相反,prompt有自己的参数,这些参数可以根据下游任务的训练数据进行调优。

下面介绍几种具有代表性的方法:

1. Prefix Tuning

Prefix Tuning 将一系列连续的特定于任务的向量前置到输入,同时保持LM参数不变。

2. Tuning Initialized with Discrete Prompts

使用离散方法创建的prompt初始化连续prompt的搜索。先使用离散搜索方法定义模板,根据发现的prompt初始化virtual token,然后对嵌入进行微调,以提高任务的准确性.

3. Hard-Soft Prompt Hybrid Tuning

软硬prompt混合调优:这些方法没有使用纯可学习的提示模板,而是将一些可调的嵌入插入到硬提示模板中。如:“P-tuning”,通过在嵌入式输入中插入可训练变量来学习连续的提示。

你可能感兴趣的:(#,Prompt,深度学习,自然语言处理,机器学习)