试谈语言模型中无监督非结构化知识融入

🔫 Reading Group 的 pdf 版本 blog 版本

  1. 结构化/纯文本

之前的一系列将知识融入 BERT 的工作大多基于 entity 三元组这种结构化数据.

这就要求有大量且高质量的人工标注(当然我们有 HowNet, WordNet, WikiData), 人工标注必然出现大量噪声, 结构化数据更新周期普遍更长.

MLM 的无监督是否是无监督的极限(当然 ERNIE 2.0 那种偏语法的任务也可以算), 能否有一种无监督或者弱监督的任务/模式 增强原先的预训练语言模型中的知识信息.

  1. LMs are KBs?

EMNLP 2019 的这篇文章 Language Models as Knowledge Bases? 设计了 cloze style 的 Probing 实验(大多是 Commensense 的问答任务)来证明语言模型的知识性.

虽然现在看起来语言模型学到的更多还是共现关系, 对于低频词效果没有那么好, 但所蕴含的知识信息几乎和 KBs 类的方法相近.

除去 RoBERTa 这个异类, 之前的工作显示不 fine-tune 时远低于其他 LMs, fine-tune 了又远高于其他.

想办法增加 LMs 的知识能力还是很有道理的.

  1. 脚注/引用

在日常书写中, 其实我们会大量使用脚注/引用来解释真实的含义, 辅助读者理解.

对于语言模型来说, 这部分信息是缺失的.

基于以上几点, 这篇文章浅显的介绍一下目前预训练语言模型中无监督知识融入的一些解决方案.

主要介绍以下两篇工作:

  1. Generalization through Memorization: Nearest Neighbor Language Models. ICLR 2020
  2. REALM: Retrieval-Augmented Language Model Pre-Training.

k NN-LM

Generalization through Memorization: Nearest Neighbor Language Models. ICLR 2020

这篇工作是 ICLR2020 的工作, 出发点是利用 k NN 增强长程依赖(这已经不是长程了, 叫跨篇章依赖更合适一点).

image

做法很简单. 拿 BERT-base 对数据中的每一个 token 生成一个(上下文表征 k-(其他 LMs 可能是只有上文), 当前词 v) Pair 对, 合成一个很大的集合 N.

当预测时需要获取表征的时候, 计算 N 中每一个 k 与当前词计算得到的表征之间的距离, 此处使用 L2 距离进行计算.

最后预测词关于 x 的条件概率. 由两部分组成, 原先的 LM 概率和 kNN 的概率, 两者插值之后获得最后结果.

模型在训练过程中不 fine-tune 预训练模型参数, 利用 FAISS 来优化检索空间(一种优化版的 LSH).

image

主要在 WikiText 103 和 BookCorpus 上做了测试, 其中 WikiText 103 的 baseline 是 Adaptive Input Representations for Neural Language Modeling.

其主要思想是按照词频分成 N 个桶, 桶之间的 embedding size 随着指数减小, 借鉴了 Adaptive Softmax 的想法, 之前是 WikiText103 的 SOTA.

对比 Transformer-XL 的结果, 可以看出 kNN-LM 带来的 ppl 的提升还是很明显的.

直观上来看 ppl 表征的是语言模型概率等可能输出个数, 或者是平均概率下选取到正确输出需要的次数.

kNN 的想法显著的提升 ppl 就可以理解为在语义相近的情况下, 增强了显著的共现模式, 从而减小了等概率个数.

image

对比拿数据 Fine-tune 和拿数据做 dataStore, 在用 WikiText 103 Fine-tune 模型的基础上用 WikiText 3B 做 dataStore 的效果显著比拿数据 Fine-tune 效果好.

跨领域/zero-shot 的实验中也能发现即使没有在 BookCorpus 上学习过, 只用 BookCorpus 制作 DataStore 蕴含的信息能提升 ppl 14 个点, 虽然和 fine-tune 的结果还有差距.

image

还测试了 Transformer 结构中不同位置的输出对于最后提升的影响(看起来这个作者有点闲

得到的结果是 FFN 之前 LN 之后这个位置效果最好, 笔者的理解是 MHSA 更关注与当前 sentence 本身, FFN 更关注与上下文的 memory, 不经过 FFN 可以更突出当前句子的信息.

image

当然有人会怀疑 kNN 这种模式是否和 n-gram 类似, 作者对比了 n-gram 和 kNN 的结果, 使用 n-gram 之后 performance 变化不大.

最后讨论了一下显示存储 memory 和隐式存储 memory 两种情况, 这边作者用去掉 Dropout 来模拟隐式存储 memory。 他的论点是 loss 已经降到 0 了说明模型已经蕴含所有必要的知识了. 对比使用 Dropout, 效果差很多.

当然这个问题更多的是一个如何利用 memory, 上面的实验最起码可以证明 Transformer 理论上是具有很强的 memory 能力的.

几点讨论:

  1. kNN-LM 的方式本质上来讲还是一种利用检索增强共现模式的知识融入.
  2. 需要构建 dataStore 的数据集和测试集之间存在较强的关联度.
  3. 对于时间复杂度部分, 作者在 openview 的时候说明大概花费和 fine-tune 差不多的时间, 在 interface 阶段会比纯 Transformer 要慢一点, 大概从 500 tokens per second 降到 60 tokens per second.
  4. 目前尚不清楚这种模式是否能在其他下游任务 work, 虽然直观上来感受应该是能增强表征的, 还是需要更多的实验进行验证.
  5. 这篇文章中 k 取得是 1024, 是一个比较大的数, 画出来的曲线可以看出随着 k 的增大, ppl 能不断的下降.

REALM

REALM: Retrieval-Augmented Language Model Pre-Training.

image

这篇的工作是在几位 dalao ACL2019 那篇 ORQA 的基础上做的工作. 共一和通讯作者是 BERT 四分之二作者.

这篇文章主要是在 Open domain task 上做的工作(毕竟是谷果的核心业务 👍)

大概思路是利用一个隐式的 Retriever 来扩展语料增强语义. p ( y ∣ x ) = ∑ z ∈ Z p ( y ∣ z , x ) p ( z ∣ x ) p(y | x)=\sum_{z \in \mathcal{Z}} p(y | z, x) p(z | x) p(yx)=zZp(yz,x)p(zx)

将预测词相对于上下文的条件概率展开成相关篇章基于上下文的概率与预测词相对于上下文和篇章的概率乘积之和.

  • 对于预训练模型来说, x 是被 mask 之后的 sentence, y 是预测的被 mask 掉的那些词.
  • 对于 Fine-tune 来说, 比如说 open-QA x 就是问句 y 则是答案

对于 Retriever 来说, input 得到的 embed 和 document 得到的 embed 矩阵相乘过一个 softmax 就是 z 相对于 x 的概率输出.

  • 具体来说输入 x 的 embed, 是 x 这句话的 CLS 指示符的 BERT representation 输出, 再乘上一个线性矩阵(在 ORQA 中这个矩阵起到缩小维度的作用)
  • 文档的 embed 则是将 document 的 title 和 body 拼接起来用 sep 分割, 同样取 CLS 的输出再乘上一个线性矩阵
  • 这边考虑两个 Embed 相乘, 感觉更多的预先处理的角度.

p ( z ∣ x ) = exp ⁡ f ( x , z ) ∑ z ′ exp ⁡ f ( x , z ′ ) p(z | x)=\frac{\exp f(x, z)}{\sum_{z^{\prime}} \exp f\left(x, z^{\prime}\right)} p(zx)=zexp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值