MatrixYao commited on
Commit
d23c90b
1 Parent(s): 50644e5

Signed-off-by: Yao, Matrix <matrix.yao@intel.com>

Files changed (3) hide show
  1. naacl_demo/main.py +2 -3
  2. naacl_demo/text.md +9 -9
  3. naacl_demo/text.py +14 -12
naacl_demo/main.py CHANGED
@@ -286,9 +286,8 @@ textbox5.align = "center"
286
  # Set up layouts and add to document
287
  ########################################################################################################################
288
 
289
- main_body = column(textbox1, patternification, textbox2, advantage_column, textbox3, null_all_figures, textbox4, pattern_all_figures,
290
- textbox5, sizing_mode="scale_width")
291
  main_body.align = "center"
292
 
293
  curdoc().add_root(main_body)
294
- curdoc().title = "提示抵得上多少样本数据?"
 
286
  # Set up layouts and add to document
287
  ########################################################################################################################
288
 
289
+ main_body = column(textbox1, patternification, textbox2, advantage_column, textbox3, null_all_figures, textbox4, pattern_all_figures, textbox5, sizing_mode="scale_width")
 
290
  main_body.align = "center"
291
 
292
  curdoc().add_root(main_body)
293
+ curdoc().title = "一条提示抵得上多少样本数据?"
naacl_demo/text.md CHANGED
@@ -1,6 +1,8 @@
1
- 当前 NLP 应用的主流方法是针对各式各样的特定任务,分别对预训练语言模型的分类头进行微调。随着语言模型变得越来越大,各种替代方法相继涌现,开始叫板在 BERT、UniLM 以及 GPT 中广泛使用的分类头法。特别地,GPT-3 向大家普及了提示法,该方法通过自然语言输入来引导预训练语言模型依靠自身解决任务,而不再需要额外的分类头。
2
 
3
- 提示很有意思,用户可以通过它向模型提供信息,这与传统的 ML 监督学习有很大不同。在我们的 NAACL 2021 论文中,我们研究了基于提示的微调,该方法可用于替代当前标准的有监督微调法,我们的实验表明提示通常比标准方法更有优势,因此该方法很有前途。在分析这种优势时,我们认为提示为模型带来了额外的信息,这促使我们想用数据点这个指标来量化这种优势,也就是说:**提示可以抵多少个数据点?**
 
 
4
 
5
  ## 提示法
6
 
@@ -10,7 +12,7 @@
10
 
11
  这听起来可能很抽象,但这其实恰恰就是人类在实际生活中进行文本推理时所使用的非常自然的方法:例如,学校练习往往以一个文本输入(例如,一篇关于火星的文章)加上一个问题(“火星上有生命吗?”)的形式呈现,并期望你提供一个自然语言的答案(“否”<sup>1</sup>),该答案其实就可以映射到分类任务的某个类别(这里,“否”对应假,“是”对应真,本例就是个二分类问题)。在这种范式中,就像做语法练习一样,我们把特定于任务的数据输入给模型,而模型就像学生一样,需要以固定的方式进行填空。提示法希望能显式利用语言模型中包含的预训练信息,而不是仅以将其隐含表征馈送给线性分类头的方式隐式利用这些信息。
12
 
13
- 以下是 SuperGLUE 任务 BoolQ 的示例,其题型为判断题,每条数据包括文本 <span style="color: #0c593d">passage</span> 和问题 <span style="color: #031154">question</span> ,其答案为布尔值,要么为真,要么为假。每条数据可以和 <span style="color: #910713">**模板(pattern)**</span> 一起组装成一个文本序列,该序列只有一个需预测的 <span style="color: #ba9004">**掩码词**</span>。对该掩码作出预测后,预测词会被一个预设的 *言语器(verbalizer)* 转换为类,也就是说*言语器*负责输出词与类别之间的映射:比较该词被映射为*真*和*假*的概率,如果*真*的概率高,则最终预测为真,反之则为假。
14
 
15
  ![image](mockups/boolqpatterns.png)
16
 
@@ -18,11 +20,11 @@
18
 
19
  这样,我们就把通用语言模型转变成了针对特定任务的分类器。这种基于提示的语言模型分类器的用法很多:
20
 
21
- - 预训练模型中保留的语言建模功能允许它们在没有额外数据的情况下执行,这与**以随机初始化开始因此初始性能也随机**的*线性分类头*模型相反。因此,许多论文将其用于零样本分类。
22
 
23
- - 为了将有监督的任务数据引入模型,我们可以使用反向传播及语言建模中的交叉熵损失目标来微调:将与正确类别相关联的言语器词作为正确预测。 PET 使用了这个方法,T5 也使用了这个目标函数 - 尽管 T5 使用任务前缀来指示任务,而未使用自然语言提示来描述它。
24
 
25
- - 还有一种方法是使用*潜觉(priming)*,此时,我们需要为当前问题找到若干正确的示例,将其作为原输入文本的前缀一起输入给模型。它没有反向传播,所以永远不会修改语言模型的权重永远;相反,它主要靠在推理时使用注意力机制去利用正确的示例。GPT3 使用了该方法。
26
 
27
  - 最后,PET 的方法是使用提示模型预测未标注数据的软标签(或称为伪标签),然后将其作为标签去训练线性分类头。
28
 
@@ -32,7 +34,7 @@
32
 
33
  正如我们所看到的,分类头法和提示法都可以用于针对下游任务进行有监督微调。二者的核心区别在于,除了带标注的原始样本外,提示法还给了模型一个用于对特定任务进行粗略描述的句子。从某种意义上说,这句话也是一种监督数据,因为它告诉模型任务的信息,但它在本质上与机器学习中标准的监督数据又截然不同。我们应该如何看待这种新的监督数据?又该如何量化这种方法的“零样本”程度?
34
 
35
- 我们通过在 SuperGLUE 任务和 MNLI 上比较*分类头法*和*提示法*来尝试回答上面的问题。我们使用的具体方法是:对每个任务,我们通过从数据集中选取样本数不断增加的子集,然后在每个子集上使用这两种方法对 `RoBERTa-large` 进行微调,同时其他所有配置保持不变,最后对评估各自的微调模型的性能。为了公平起见,我们先调整基线分类头模型的超参,并使它们的性能达到 SuperGLUE 排行榜中 BERT++ 的性能水平,然后在对应的*提示法*模型中采用相同的超参。
36
 
37
  下图绘制了每个任务 <sup>2</sup> 的最终性能(指标随任务而不同)随数据集大小的变化曲线。有了这个图,我们就能够对两种方法在给定任务上达到一定性能水平所需的数据量进行对比。我们将这种差异称为在该性能水平上其中一个方法相对于其他方法的“数据优势”。我们将两种方法都能达到的性能的范围称为*比较窗口*。通过在该范围内进行积分,我们可以获得在某任务上一种方法相对于另一种方法的“平均数据优势”。从图上看,这即是两条曲线所夹区域的的面积除以比较窗口的高度。<sup>3</sup>
38
 
@@ -77,8 +79,6 @@
77
 
78
  <sup>2</sup>:眼尖的读者会注意到所有这些曲线都是单调的。我们为每个实验执行了 4 次运行(即对每个任务的每个数据规模,分别各运行分类头法和提示法 4 次,并用得到的模型测试)。为了清楚起见,并且由于两种方法的微调有时都会失败,从而导致负异常值,因此针对每个数据规模我们报告在此数据规模或更小的数据规模下获得的最大性能,我们将其称为*累积最大*聚合。除了减少方差之外,这不会对���告的数据优势产生太大影响,且即使对于非单调曲线,对图形的解读仍然成立。
79
 
80
- <sup>3</sup>: We treat each metric linearly to calculate advantage; alternatively, we could re-parameterize the y axis for each task. This choice does not have a consistent effect for or against prompting. For example, emphasizing gains close to convergence increases prompting advantage on CB and MNLI but decreases it on COPA or BoolQ.
81
-
82
  <sup>3</sup>:在计算每个指标的数据优势时,我们为每个数据赋予相同的权重;我们还可以针对每个任务重新参数化 y 轴。这种做法到底是会对提示法相对于分类头法的数据优势起促进作用还是阻碍作用不好说,与数据集相关。举个例子,强调接近收敛时的增益会增加 CB 和 MNLI 上的提示法的数据优势,但会降低 COPA 或 BoolQ 上的优势。
83
 
84
  <sup>4</sup>:有趣的是,PET 已经发现提示对该数据集无效
 
1
+ # 一条提示抵得上多少条数据?
2
 
3
+ 当前 NLP 应用的主流方法是针对各式各样的特定任务,分别对预训练语言模型的分类头进行微调。随着语言模型变得越来越大,各种替代方法相继涌现,开始叫板在 [BERT](https://arxiv.org/abs/1810.04805)、[UniLM](https://arxiv.org/abs/1905.03197) 以及 [GPT](https://openai.com/research/language-unsupervised) 中广泛使用的分类头法。特别地,GPT-3 向大家普及了提示法,该方法通过自然语言输入来引导预训练语言模型依靠自身解决任务,而不再需要额外的分类头。
4
+
5
+ 提示很有意思,用户可以通过它向模型提供信息,这与传统的 ML 监督学习有很大不同。在与 [Alexader Rush](http://rush-nlp.com/) 合作的 [NAACL 2021 论文](https://arxiv.org/abs/2103.08493)中,我们研究了基于提示的微调,该方法可用于替代当前标准的有监督微调法,我们的实验表明提示通常比标准方法更有优势,因此该方法很有前途。在分析这种优势时,我们认为提示为模型带来了额外的信息,这促使我们想用数据点这个指标来量化这种优势,也就是说:**提示可以抵多少个数据点?**
6
 
7
  ## 提示法
8
 
 
12
 
13
  这听起来可能很抽象,但这其实恰恰就是人类在实际生活中进行文本推理时所使用的非常自然的方法:例如,学校练习往往以一个文本输入(例如,一篇关于火星的文章)加上一个问题(“火星上有生命吗?”)的形式呈现,并期望你提供一个自然语言的答案(“否”<sup>1</sup>),该答案其实就可以映射到分类任务的某个类别(这里,“否”对应假,“是”对应真,本例就是个二分类问题)。在这种范式中,就像做语法练习一样,我们把特定于任务的数据输入给模型,而模型就像学生一样,需要以固定的方式进行填空。提示法希望能显式利用语言模型中包含的预训练信息,而不是仅以将其隐含表征馈送给线性分类头的方式隐式利用这些信息。
14
 
15
+ 以下是 [SuperGLUE](https://arxiv.org/abs/1905.00537) 中的 [BoolQ](https://arxiv.org/abs/1905.10044) 任务的示例,其题型为判断题,每条数据包括一个文本 <span style="color: #0c593d">passage</span> 及其对应的问题 <span style="color: #031154">question</span> ,其答案为布尔值,要么为真,要么为假。每条数据可以和 <span style="color: #910713">**模板(pattern)**</span> 一起组装成一个文本序列,该序列只有一个需预测的 <span style="color: #ba9004">**掩码词**</span>。预测出该掩码词后,预测词会被一个预设的 *言语器(verbalizer)* 转换为类,也就是说*言语器*负责输出词与类别之间的映射:比较该词被映射为*真*和*假*的概率,如果*真*的概率高,则最终预测为真,反之则为假。
16
 
17
  ![image](mockups/boolqpatterns.png)
18
 
 
20
 
21
  这样,我们就把通用语言模型转变成了针对特定任务的分类器。这种基于提示的语言模型分类器的用法很多:
22
 
23
+ - 预训练模型中保留的语言建模功能允许它们在没有额外数据的情况下执行,这与**以随机初始化开始因此初始性能也随机**的*线性分类头*模型相反。因此,许多论文将其用于[零样本分类](https://arxiv.org/abs/1912.10165)。
24
 
25
+ - 为了将有监督的任务数据引入模型,我们可以使用反向传播及语言建模中的交叉熵损失目标来微调:将与正确类别相关联的言语器词作为正确预测。 [PET](https://arxiv.org/abs/2001.07676) 使用了这个方法,[T5](https://arxiv.org/abs/1910.10683) 也使用了这个目标函数 - 尽管 T5 使用任务前缀来指示任务,而未使用自然语言提示来描述它。
26
 
27
+ - 还有一种方法是使用*潜觉(priming)*,此时,我们需要为当前问题找到若干正确的示例,将其作为原输入文本的前缀一起输入给模型。它没有反向传播,所以永远不会修改语言模型的权重永远;相反,它主要靠在推理时使用注意力机制去利用正确的示例。[GPT3](https://arxiv.org/abs/2005.14165) 使用了该方法。
28
 
29
  - 最后,PET 的方法是使用提示模型预测未标注数据的软标签(或称为伪标签),然后将其作为标签去训练线性分类头。
30
 
 
34
 
35
  正如我们所看到的,分类头法和提示法都可以用于针对下游任务进行有监督微调。二者的核心区别在于,除了带标注的原始样本外,提示法还给了模型一个用于对特定任务进行粗略描述的句子。从某种意义上说,这句话也是一种监督数据,因为它告诉模型任务的信息,但它在本质上与机器学习中标准的监督数据又截然不同。我们应该如何看待这种新的监督数据?又该如何量化这种方法的“零样本”程度?
36
 
37
+ 我们通过在 SuperGLUE 任务和 MNLI 上比较*分类头法*和*提示法*来尝试回答上面的问题。我们使用的具体方法是:对每个任务,我们通过从数据集中选取样本数不断增加的子集,然后在每个子集上使用这两种方法对 [`RoBERTa-large`](https://arxiv.org/abs/1907.11692) 进行微调,同时其他所有配置保持不变,最后对评估各自的微调模型的性能。为了公平起见,我们先调整基线分类头模型的超参,并使它们的性能达到 SuperGLUE 排行榜中 BERT++ 的性能水平,然后在对应的*提示法*模型中采用相同的超参。
38
 
39
  下图绘制了每个任务 <sup>2</sup> 的最终性能(指标随任务而不同)随数据集大小的变化曲线。有了这个图,我们就能够对两种方法在给定任务上达到一定性能水平所需的数据量进行对比。我们将这种差异称为在该性能水平上其中一个方法相对于其他方法的“数据优势”。我们将两种方法都能达到的性能的范围称为*比较窗口*。通过在该范围内进行积分,我们可以获得在某任务上一种方法相对于另一种方法的“平均数据优势”。从图上看,这即是两条曲线所夹区域的的面积除以比较窗口的高度。<sup>3</sup>
40
 
 
79
 
80
  <sup>2</sup>:眼尖的读者会注意到所有这些曲线都是单调的。我们为每个实验执行了 4 次运行(即对每个任务的每个数据规模,分别各运行分类头法和提示法 4 次,并用得到的模型测试)。为了清楚起见,并且由于两种方法的微调有时都会失败,从而导致负异常值,因此针对每个数据规模我们报告在此数据规模或更小的数据规模下获得的最大性能,我们将其称为*累积最大*聚合。除了减少方差之外,这不会对���告的数据优势产生太大影响,且即使对于非单调曲线,对图形的解读仍然成立。
81
 
 
 
82
  <sup>3</sup>:在计算每个指标的数据优势时,我们为每个数据赋予相同的权重;我们还可以针对每个任务重新参数化 y 轴。这种做法到底是会对提示法相对于分类头法的数据优势起促进作用还是阻碍作用不好说,与数据集相关。举个例子,强调接近收敛时的增益会增加 CB 和 MNLI 上的提示法的数据优势,但会降低 COPA 或 BoolQ 上的优势。
83
 
84
  <sup>4</sup>:有趣的是,PET 已经发现提示对该数据集无效
naacl_demo/text.py CHANGED
@@ -1,18 +1,20 @@
1
- text1 = """<h1 id="how-big-should-my-language-model-be">How many data points is a prompt worth?</h1>
2
  <img class='center' style='height: 5em; float: right;' src='https://raw.githubusercontent.com/TevenLeScao/transformer-xl/master/pytorch/assets/avatar_logo_joint.png' alt='avatar'>
3
- <h4>Published on April 6, 2021.</h4>
4
- <h4>Teven Le Scao, researcher at Hugging Face • <a href="https://twitter.com/Fluke_Ellington">@Fluke_Ellington</a> </h4>
5
- <p>Pre-trained language models, fine-tuned with task-specific heads, are the backbone of applied NLP, and bigger and bigger language models are coming. With this in mind, alternative methods are emerging to compete with the classifier heads used in <a href="https://arxiv.org/abs/1810.04805">BERT</a>, <a href="https://arxiv.org/abs/1905.03197">UniLM</a> and <a href="https://openai.com/blog/language-unsupervised/">GPT</a>. In particular, GPT-3 has popularized prompts, natural language inputs designed to steer the pre-trained language model itself into solving the task, rather than a classifier built on top of it. </p>
6
- <p>Prompts are interesting because they allow a practitioner to give information to the model, although in a very different fashion from standard ML supervision. In our NAACL 2021 <a href="https://arxiv.org/abs/2103.08493">paper</a> with <a href="http://rush-nlp.com/">Sasha Rush</a>, we investigate prompt-based fine-tuning, a promising alternative fine-tuning approach, and find that prompts often yield an edge over the standard approach. As we interpret a prompt as additional human-crafted information for the model, we measure that edge in terms of data points and quantify: <strong>how many data points is a prompt worth?</strong> </p>
7
- <h2 id="prompting">Prompting</h2>
8
- <p>In order to adapt pre-trained language models to a task, the main method is to replace the final token prediction layer of the original model with a randomly initialized linear classifier head. Supervised task data is then used to train the modified model via backpropagation, learning weights for this new head but also modifying weights deeper in the model. In this work, we call this a <em>head</em> model. </p>
9
- <p>A competing approach is <em>prompting</em>: a broad class of methods that attempt to use the initial language model to answer the task by predicting words correlated with the classes instead of a class label. This allows them to perform classification while preserving the language model functionality. For this, <em>prompts</em> are used: input sequences designed to produce the desired answer as textual output. </p>
10
- <p id="footnote1back">Although this may sound abstract, this is a very natural way to reason about text for humans in practice: school exercises, for example, tend to be presented as a text input (for example, an article about Mars) and a question (&quot;Is there life on Mars?&quot;) with an expected answer in natural text (&quot;No&quot;<a href="#footnote1"><sup>1</sup></a>) that maps to one of the classes of the task (presumably here, &quot;No&quot; to <code>False</code> and &quot;Yes&quot; to <code>True</code>). In this paradigm, task-specific data is presented to the model much like a grammar exercise where a student would need to fill in blanks in a fixed way over a list of sequences. Prompting attempts to use the pre-training information contained in the language model explicitly, rather than implicitly through hidden representations that get fed into the linear classifier head. </p>
11
- <p>Here&#39;s an example for <a href="https://arxiv.org/abs/1905.00537">SuperGLUE</a> task <a href="https://arxiv.org/abs/1905.10044">BoolQ</a>, which provides a text <span style="color: #0c593d">passage</span> and a <span style="color: #031154">question</span> and expects a boolean yes-or-no answer. This data is combined with a <span style="color: #910713"><strong>pattern</strong></span> into a sequence with a single <span style="color: #ba9004"><strong>masked token</strong></span> that the model must predict. This prediction is turned into a classification prediction with a pre-set <em>verbalizer</em>, a mapping between tokens and classes: the model probabilities on this token for <em>yes</em> and <em>no</em> are compared, with the final prediction being <code>True</code> if <em>yes</em> dominates and <code>False</code> if <em>no</em> does.</p>
 
 
12
  """
13
 
14
- text2 = """<h2 id="fine-tuning">Fine-tuning</h2>
15
- <p>With this, we have turned our general language model into a task-specific classifier. These language model classifiers based on prompts have been used in very diverse ways: </p>
16
  <ul>
17
  <li>The preserved language modeling functionality from the pre-trained model allows them to perform without additional data, as opposed to linear classifier <em>heads</em> that are initialized from scratch and always start at random performance. A variety of papers have used this for <a href="https://arxiv.org/abs/1912.10165">zero-shot classification.</a> </li>
18
  <li>In order to incorporate supervised task data, they can use backpropagation with the usual language modeling cross-entropy loss objective: the verbalizer token associated with the correct class then serves as the correct token prediction. This is a component of <a href="https://arxiv.org/abs/2001.07676">PET</a>, and is the objective used by <a href="https://arxiv.org/abs/1910.10683">T5</a> - although T5 uses prefixes to indicate the task rather than describing it with a natural-language prompt. </li>
 
1
+ text1 = """<h1 id="how-many-data-points-is-a-prompt-worth">一条提示抵得上多少条数据?</h1>
2
  <img class='center' style='height: 5em; float: right;' src='https://raw.githubusercontent.com/TevenLeScao/transformer-xl/master/pytorch/assets/avatar_logo_joint.png' alt='avatar'>
3
+ <h4>发表于 2021 4 月 6 日</h4>
4
+ <h4>Teven Le Scao, Hugging Face 研究员 • <a href="https://twitter.com/Fluke_Ellington">@Fluke_Ellington</a> </h4>
5
+ <p>当前 NLP 应用的主流方法是针对各式各样的特定任务,分别对预训练语言模型的分类头进行微调。随着语言模型变得越来越大,各种替代方法相继涌现,开始叫板在 <a href="https://arxiv.org/abs/1810.04805">BERT</a>、<a href="https://arxiv.org/abs/1905.03197">UniLM</a> 以及 <a href="https://openai.com/research/language-unsupervised">GPT</a> 中广泛使用的分类头法。特别地,GPT-3 向大家普及了提��法,该方法通过自然语言输入来引导预训练语言模型依靠自身解决任务,而不再需要额外的分类头。</p>
6
+ <p>提示很有意思,用户可以通过它向模型提供信息,这与传统的 ML 监督学习有很大不同。在与 <a href="http://rush-nlp.com/">Sasha Rush</a> 合作的 NAACL 2021 <a href="https://arxiv.org/abs/2103.08493">论文</a>中,我们研究了基于提示的微调,该方法可用于替代当前标准的有监督微调法,我们的实验表明提示通常比标准方法更有优势,因此该方法很有前途。在分析这种优势时,我们认为提示为模型带来了额外的信息,这促使我们想用数据点这个指标来量化这种优势,也就是说:<strong>一个提示可以抵多少条数据?</strong> </p>
7
+
8
+ <h2 id="prompting">提示法</h2>
9
+ <p>为了使预训练语言模型能够完成特定任务,当前的主流方法是用随机初始化的线性分类头替换原模型的最后一层:词预测层。然后使用有监督的任务数据通过反向传播来训练修改后的模型,主要学习这个新分类头的权重,同时也可以更新模型其他层的权重。我们将这种方法称为<em>分类头</em>法。</p>
10
+ <p>一种与之相竞争的方法是*提示法*:这类方法主要尝试使用原语言模型来预测目标类相应的单词来“回答”分类问题,而不是像传统方法那样“预测”类标签。这使得我们可以直接使用语言模型本身来执行分类任务。在这里,*提示*就是精心设计的、用于生成所需的答案文本的输入文本。</p>
11
+ <p id="footnote1back">这听起来可能很抽象,但这其实恰恰就是人类在实际生活中进行文本推理时所使用的非常自然的方法:例如,学校练习往往以一个文本输入(例如,一篇关于火星的文章)加上一个问题(&quot;火星上有生命吗?&quot;)的形式呈现,并期望你提供一个自然语言的答案(&quot;否&quot;<a href="#footnote1"><sup>1</sup></a>),该答案其实就可以映射到分类任务的某个类别(这里,&quot;否&quot;对应<code>假</code>,&quot;是&quot;对应<code>真</code>,本例就是个二分类问题)。在这种范式中,就像做语法练习一样,我们把特定于任务的数据输入给模型,而模型就像学生一样,需要以固定的方式进行填空。提示法希望能显式利用语言模型中包含的预训练信息,而不是仅以将其隐含表征馈送给线性分类头的方式隐式利用这些信息。</p>
12
+ <p>以下是 <a href="https://arxiv.org/abs/1905.00537">SuperGLUE</a> 中的 <a href="https://arxiv.org/abs/1905.10044">BoolQ</a> 任务的示例,其题型为判断题,每条数据包括一个文本 <span style="color: #0c593d">passage</span> 及其对应的问题 <span style="color: #031154">question</span> ,其答案为布尔值,要么为真,要么为假。每条数据可以和 <span style="color: #910713">**模板(pattern)**</span> 一起组装成一个文本序列,该序列只有一个需预测的 <span style="color: #ba9004"><strong>掩码词</strong></span>。预测出该掩码词后,预测词会被一个预设的 <em>言语器(verbalizer)</em> 转换为类,也就是说<em>言语器</em>负责输出词与类别之间的映射:比较该词被映射为<em>是</em>和<em>否</em>的概率,如果<em>是</em>的概率高,则最终预测为<code>真</code>,反之则为<code>假</code>。
13
+ </p>
14
  """
15
 
16
+ text2 = """<h2 id="fine-tuning">微调</h2>
17
+ <p>这样,我们就把通用语言模型转变成了针对特定任务的分类器。这种基于提示的语言模型分类器的用法很多: </p>
18
  <ul>
19
  <li>The preserved language modeling functionality from the pre-trained model allows them to perform without additional data, as opposed to linear classifier <em>heads</em> that are initialized from scratch and always start at random performance. A variety of papers have used this for <a href="https://arxiv.org/abs/1912.10165">zero-shot classification.</a> </li>
20
  <li>In order to incorporate supervised task data, they can use backpropagation with the usual language modeling cross-entropy loss objective: the verbalizer token associated with the correct class then serves as the correct token prediction. This is a component of <a href="https://arxiv.org/abs/2001.07676">PET</a>, and is the objective used by <a href="https://arxiv.org/abs/1910.10683">T5</a> - although T5 uses prefixes to indicate the task rather than describing it with a natural-language prompt. </li>