Prefix-Tuning: Optimizing Continuous Prompts for Generation

Motivation

微调实际上是利用大型预训练过的语言模型来执行下游任务的一种方法。但是,它会修改所有的语言模型参数,因此需要为每个任务存储一个完整的副本。

因此,要构建和部署依赖于大型预训练的LM的NLP系统,目前需要为每个任务存储一个修改后的LM参数副本。考虑到目前的lms的大规模,这可能会非常expensive。

Method

自回归模型写作下式:

\[h_i = \mathrm{LM}_{\phi} (z_i, h_{< i}) \]

\(h_i\)的最后一层输出用来对下一个token采样\(p_{\phi}(z_{i+1}|h_{\le i})=\mathrm{softmax}(W_{\phi} h_{i}^{(n)})\)

Intuition

基于提示的直觉,我们相信拥有一个适当的上下文可以在不改变LM参数的情况下引导LM。例如,如果我们希望LM生成一个单词(例如,Obama),我们可以将它的公共组合作为上下文(例如,Barack),然后LM将为所需的单词分配更高的概率。

直观地说,上下文可以通过指导从x中提取的内容来影响x的编码;并可以通过指导下一个令牌分布来影响y的生成。

然而,这种上下文是否存在并不明显,离散的优化在计算上具有挑战性。

本文使用在连续的嵌入空间优化前缀,这会影响后续的层和位置的预测输出,不需要更新所有的层,也不需要直接作用在整个网络上,less expensive。

Prefix tuning

通过添加prefix给自回归网络,得到\(z=[\mathrm{PREFIX}; x; y]\);或者给encoder-decoder结构生成\(z=[\mathrm{PREFIX};x;\mathrm{PREFIX}';y]\),用\(|P_{idx}|\)来表示前缀的长度。

首先初始化一个可调的矩阵\(P_{\theta} \in \mathbb{R}^{|P_{idx}| \times dim(h_i)}\)

\[h_i = \left\{\begin{matrix} &P_{\theta}[i, :] & \mathrm{if} \quad i \in P_{idx} \\ &\mathrm{LM}_{\phi}(z_i, h_{<i}) & \mathrm{otherwise}. \end{matrix}\right. \]

训练时,固定网络参数,只有前缀\(\theta\)可调。

另外,\(h_i\)可视为\(P_{\theta}\)的函数。

\(P_{\theta}\)

作者发现,直接优化参数\(\theta\)非常不稳定,对初始化和学习率都是很敏感的。所以作者用一个小一点的矩阵\(P_{\theta}'\)和一个较大的前馈网络\(\mathrm{MLP}_{\theta}\)来组成\(P_{\theta}\)

posted @ 2022-04-06 10:52  TABball  阅读(416)  评论(0编辑  收藏  举报