How Can We Know What Language Models Know?

在生成任务中,只用不同提示会带来不同的效果。

例如在 LAMA 任务上,LAMA数据集中包含的句子用于描述两个实体之间的关系,而其中一个实体被遮盖,需要语言模型来预测,如果预测正确则说明模型学会了这一关系。

然而,很多时候其实从这些query中是看不出这种关系的,或者说,即便模型没有回答正确,也不能说明模型不懂这个关系。有时候是 query 是有问题的。

所以评测模型能学习到包含多少信息的时候,是不太准确的,由于不同的表述使得的出的结果会受到影响。

相关的测试很多时候只是测出模型效果的下限,那有没有让下限提高的办法?

既然不同的 Prompt 会影响后面的结果,那通过构建更好的 Prompt,会使得结果更好。

构建 Prompt 的方法

  1. Mining-based

    通过对语料进行挖掘,生成 Prompt。通过观察在庞大的语料库里面,主语和宾语附近的词通常用于描述这两者的关系。

    1. Middle-word Prompts

      根据观察,主语宾语之间的部分通常用来形容两者之间的关系。例如:Barack Obama was born in Hawaii。主语宾语之间的关系就为可以抽取出来,使用占位符替代主语宾语变为 x was born in y。

    2. Dependency-based Prompts

      存在主语宾语之间没有形容两者关系的这种类型的句子。例如:The capital of France is Paris。基于句子句法分析的模板对关系抽取更有效。使用依赖关系解析器识别主语和宾语之间最短的依赖路径。然后使用依赖路径中最左边单词到最右边单词的短语作为 Prompt。

      上文的例子的依赖路径的例子如下:

      FrancepobjofprepcapitalnsubjisattrParisFrance\stackrel{pobj}{\leftarrow} of\stackrel{prep}{\leftarrow}capital\stackrel{nsubj}{\leftarrow}is\stackrel{attr}{\rightarrow}Paris

      箭头最左和最右的单词是 capital 和 Paris。通过这个生成的例子:capital of x is y

    用这种Mining-based的方式来生成 Prompt,可以涵盖可能的文本表达方式,但是也会比较容易产生噪声。因为这种方式获取的 Prompt,即使他们经常频繁地出现,可能也不是很好地能指示出主语和宾语之间的关系。

  2. Parap_hrasing-based

    目的是提高词汇的多样性,同时保持对原始 Prompt 的含义。具体做法就是将原始的 Prompt 换成相同意思的其他表述。

    例如:x shares a border with y 就可以换成 x has a common border with yx adjoins y。

    与信息检索中使用的查询扩展类似,以此来提高检索的性能。

    本文的具体实现是将 Prompt 翻译成其他语言,再翻译回来。将原始的翻译成成其他语言每种语言生成 BB 个候选,再将 BB 个候选翻译会原来的语言每个候选生成 BB 个。将这 B2B^2 个根据概率 Pforward(tˉt^)Pbackward(tt^)P_{forward}(\bar{t}|\hat{t})\cdot P_{backward}(t|\hat{t}) 进行排序,然后保留 top T 个 Prompts。

Prompt 的筛选 和 汇合

Top-1 Prompt 的筛选

A(tr,i)=x,yRδ(y=argmaxyPLM(yx,tr,i))RA\left(t_{r, i}\right)=\frac{\sum_{\langle x, y\rangle \in \mathcal{R}} \delta\left(y=\arg \max _{y^{\prime}} P_{\operatorname{LM}}\left(y^{\prime} \mid x, t_{r, i}\right)\right)}{|\mathcal{R}|}

\mathcal{R} 是一组带有 r(relation)r(relation) 的主语宾语 pair。

δ()={0ifij1ifi=j\delta(\cdot) = \begin{cases} 0\quad if \quad i\neq j \\1\quad if\quad i=j \end{cases}

通过上面这种方式选出 accuracy 最高的 在这个 query 上只使用这个 Prompt

Rank-based Ensemble

不仅仅只是用 top-1,将多个 Prompts 组合起来使用。这样的优点是模型可以观察到训练集中不同的实体 Pair 在不同的上下文中的情况,各种各样的 Prompt 可以在不同的语境中使模型学到知识。

第一种 汇合的方法是 将 top-k 个 取平均。

s(yx,r)=i=1K1KlogPLM(yx,tr,i),P(yx,r)=softmax(s(x,r))y,\begin{aligned}s(y \mid x, r) &=\sum_{i=1}^{K} \frac{1}{K} \log P_{\mathrm{LM}}\left(y \mid x, t_{r, i}\right), \\P(y \mid x, r) &=\operatorname{softmax}(s(\cdot \mid x, r))_{y},\end{aligned}

Optimized Ensemble

上面的方法是认为每个 Prompt 是平等的,但是 Prompt 之间是有优劣的,所以可以进行一个加权。

s(yx,r)=i=1TPθr(tr,ir)logPLM(yx,tr,i)s(y \mid x, r)=\sum_{i=1}^{T} P_{\theta_{r}}\left(t_{r, i} \mid r\right) \log P_{\mathrm{LM}}\left(y \mid x, t_{r, i}\right)

其中 Pθr(tr,ir)=softmax(θr)P_{\boldsymbol{\theta}_{r}}\left(t_{r, i} \mid r\right)=\operatorname{softmax}\left(\boldsymbol{\theta}_{r}\right)

试验结果


最后

总的来说,是一种数据增强的方法,不需要调整模型参数,并且效果也不错。可以提高在该任务上的模型的下限。