2024-02-26 闲话

Plug-and-Play Knowledge Injection for Pre-trained Language Models

设计了 “plug - and - play” 的 paradigm。下文记作 pap 范式

主打 map-tuning。

有一个通用 LLM(我的理解是掌握了语义能力) P 微调得到的 LLM D(能独立应付一些 down-stream task 比如情感分析等等),B 是知识库,我们希望训练一个知识插件 M 实现 D 在inference 时能有效使用 B 中的知识。显然 M 的体量极其小,否则直接微调 D 即可。

这里当然有 constraints:对于通用的 pap,我们不希望 M 在训练中见过来自 D 的信息,也不希望 M 中的信息在训练过程中被 D 见过;对于 task-specific 的 pap,我们可以允许 M 见到过来自 D 的信息,但是训练 M 的过程中需要保证 D 的参数是 frozen 的。

叫 map-tuning 的原因其实是对 input sequence 做了一些手脚。在 inference 过程中,我们将 input sequence (token 序列 \(w_1,\dots w_n\))中找到若干区间 \([l_1,r_1]\dots [l_k,r_k]\),将它们和 B 中的“知识 \(e_1,\dots e_k\)” Match 起来,也就是说用 M 将知识映射为一个向量,然后 \(\forall p\in[1,k],w_{l_p},\dots w_{r_p}\) 换成 \(M(e_p) / w_{l_p} \dots w_{r_p}\),这里 \(/\) 是一个特殊字符,表示分割。对 input sequence 增强之后再喂给模型 D 来 complete down stream task.

M 选择的是 E-BERT。由于我对 BERT 确实是不太懂,所以在阅读的时候又遇到了很多障碍,相信学 BERT 之后能明白。

注意一下这个论文的标题,这个主要是“知识插入”,所以其实就是一个增强 input 的过程,或者说把其中的名词看看能不能在 Wikipedia 中找到知识,挂靠到 input 中。读 github code 的时候遇到了很多障碍,后来再回看这篇文章的目的就得到了解答


还是花了很多时间去完整理解这个文章,有点菜了/wul

posted @ 2024-02-26 16:17  yspm  阅读(66)  评论(1编辑  收藏  举报