AUTOPROMPT算法详解

1,024 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情

AUTOPROMPT详解

目录

AUTOPROMPT算法

概念定义

  • x_inpx\_{inp}:任务的原始输入

    例如情感分析中输入的为一句话

    为了构建提示,要区别输入到 MLM 的 x_promptx\_{prompt} 和原始输入 x_inpx\_{inp}

  • x_tripx\_{trip}:触发词

    触发词构成触发集,所有输入都共享同一个触发集。通过预先的梯度搜索来确定,是 AUTOPROMPT 中的核心元素

    🤔AUTOPROMPT 方法的自动也主要就体现在这里了,通过预先梯度搜索训练从原输入中确定好触发词集,通过[MASK]标签构建一个人无法理解但是机器可以理解的模板来做后续的 MLM。其作用是方便后续计算概率,确定最终的预测结果。

  • x_promptx\_{prompt} :最终输入到 MLM 模型中的 Prompt

    使用模板 λ\lambdax_inpx\_{inp}x_tripx\_{trip}构成 x_promptx\_{prompt}

    ⚠️注意:AUTOPROMPT 提供的模板并非人正常阅读理解的语义。

  • 模板 λ\lambda

    模板 λ\lambda 定义了每个输入序列在提示中位置,以及任何附加标记的位置。

    此外,模板 λ\lambda 还必须定义一个特殊的 [MASK] token 的位置,用来让 MLM 填写(在模板中用 [P] 去标记,以区别于可能出现的其他 [MASK] 标记)。

    将提示输入到 MLM 中会产生一个概率分布p(\[MASK]x_prompt)p(\[MASK]|x\_{prompt}),用来描述哪些标记最有可能是填空的答案。

AUTOPROMPT的一个应用示例:探测掩蔽语言模型(MLM)执行情感分析的能力

  • 每个输入 x_inpx\_{inp} 都被放入一个自然语言提示 x_promptx\_{prompt}中,x_promptx\_{prompt}其中包含一个 [MSAK] 标记。

  • 该提示(prompt)是用模板 λλ 创建的,该模板将原始输入与一组触发标记 x_trigx\_{trig} 结合

  • 触发标记 x_trigx\_{trig}所有输入中共享,并使用基于梯度的搜素来确定

  • 最后,通过边缘化 MLM 的预测 p(\[MASK]x_prompt)p(\[MASK]|x\_{prompt}),在自动检测到的token集上获得每个类标签yy的概率 ❓

基于梯度搜索触发标记

原始提出论文:Universal adversarial triggers for attacking and analyzing NLP

添加一个全部 prompt 共享的触发标记集,这些触发词 toekn 初始化为[MASK] token,然后不断根据下面的公式迭代求标签的最大可能性

  • 在每一步,我们计算对数可能性变化的一阶近似值,该变化是通过将第jj个触发标记x(j)_trigx^{(j)}\_{trig}与另一个标记w∈V交换而产生的。

  • 然后,我们确定一个候选集V_candV\_{cand},即最有可能会导致最大增长的前k个标记

公式如下:

\mathcal{V}*{\text {cand }}=\underset{w \in \mathcal{V}}{\operatorname{top}-k}\left\[\boldsymbol{w}*{\text {in }}^{T} \nabla \log p\left(y \mid \boldsymbol{x}\_{\mathrm{prompt}}\right)\right]