前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最强记忆 VS 最强检索:T5 & REALM 你pick谁?

最强记忆 VS 最强检索:T5 & REALM 你pick谁?

作者头像
大数据文摘
发布2020-03-05 12:11:41
9050
发布2020-03-05 12:11:41
举报
文章被收录于专栏:大数据文摘大数据文摘

大数据文摘授权转载自安迪的写作间

如果突然让你回答,“ Geoffrey Hinton 的出生年月日是?”,相信大部分人是不知道的,转头直接百度或谷歌,然后找到相关词条,抽取关键信息,回答:“1947年12月6日”(冷知识 get)。

当然也不排除有少部分记忆非常强的人,曾经在某处看到过相关信息,并记了下来,立刻回答:“1947年12月6日”。

至于大部人,我相信属于第一种人,第二种可能... 谢耳朵吧。

这里提到的两个模型,类比的话,T5 便是那个将一切都记下来并回答的人,而 REALM 则是善于利用它的“搜索引擎”的人。

最强记忆 T5

关于 T5 模型,原理并不难,简单说就是:

  • 一个超大Transformer Encoder-Decoder 模型(11B,110亿参数)
  • Bert 式的文本破坏(corrupt)方法
  • Replace Span 的破坏策略
  • 15% 的破坏比
  • 破坏时 span 长度 3
  • 加上 750GB 的文本数据

当然主要概念就是:用超大 Seq2Seq 模型来记忆下尽可能多的知识,之后用于各种任务。

最近发了篇 T5 在开放域问答的短论文,How Much Knowledge Can You Pack Into the Parameters of a Language Model?(到底能把多少知识塞入语言模型的参数里面?) 题目简单明了。

结论也简单明了,还蛮多的。

在两个数据集上打爆了之前检索知识库的 SOTA 模型,而且可以看到,到 11B 都还没有到个头,很期待最近微软的 17B Turing-NLG 会是怎么样。

可以看到,这个模型的优点是无脑简单,也可以简单的 Scaling 规模,而且本身就比较通用。缺点当然也非常明显,大,也就慢,而且预测出来的东西两眼一抹黑,只能知道应该是在预训练某个阶段学会,的吧。

最强检索 REALM

基于检索的前辈们都被打爆了,REALM 找回了场子,最主要创新是,将检索模型的训练融入了预训练过程。

这里简单介绍一下 REALM 的 intuition,很多算法细节最好参考原论文,以及基于的各种文献。

这个系统如下:

简单来说,基于两个阶段,检索阶段预测阶段,而这两个阶段分别对应 Retriever 模型 Encoder 模型

首先从简单的 Encoder 模型说起,预训练时,Encoder 部分输入,其实就是将 Query 中的词 mask 掉一部分,之后与抽取的相关文本 z 拼接起来,最后从 Encoder 输出对 mask 部分的预测。而 finetune 阶段,将输出改成 用于问答的对 span 范围的预测。

Encoder 具体模型就是一个 Bert-base,训练时 mask 也会像 wwm 或者 ERNIE 一样,mask 掉一些片段主要是实体还有日期,结果显示这个策略很有帮助(可能是因为很多问题的答案就是实体以及日期)。

最关键部分还是 Retriever 部分。

首先,怎么快速检索到知识库中 Query 的相关文本这里用到了 Maximum Inner Product Search (MIPS, 最大内积搜索)

具体做法是,先用一个模型将相关文本预处理成向量表示,之后用另一个模型将 Query 处理成向量,接着就如 MIPS 名字说的,计算 Query 和相关文本向量的内积,最后挑分数高的作为相关结果。为了能够之后做到端到端的训练,对内积结果加上 Softmax 处理。这里两个向量编码模型也都是 Bert。

当然直接算代价太大了,相关文本库可能有好几千万条,鉴于 softmax 之后很多文本的 prob 非常小,于是只取 topk 的检索结果。

可以利用 Locality Sensitive Hashing (LSH,局部敏感哈希)算法,快速的拿到 TopK。

简单说,LSH 可以让相似的向量落在相近的地方,相似的向量内积也相似,所以 TopK 内积向量也将出现在临近的区域。之后对 LSH 中每块地方建立索引 (index),检索时就可以只用先找到大概的区域,然后对区域内的向量计算内积就行,将运算时间大大降低了。

关于算法细节强烈建议查看 LSH 相关资料,以及提到的 ALSH for Sublinear Time MIPS 论文。

但这里又出现了两个问题。

  • 第一,Retriever 里面的向量编码器冷启动问题,如果一开始拿不到比较好的文本向量,使检索结果与 query 相关的话,那么 Retriever 就获得不到梯度,就会导致 Retriever 根本训练不起来;
  • 第二,训练过程中,因为向量编码器中的参数是变化的,导致对于同样的文本,可能训练时不同步数的模型编码出来的向量不一样,那么之前 LSH 算法建立的索引是会有 gap。

对于第一个问题,主要通过之前一篇论文(相同作者)中的,Inverse Cloze Task (ICT) 预训练来解决。

主要思想和 Word2Vec 的 skip-gram 有些类似,用一个文本来预测它的上下文,只不过 skip-gram 是词粒度,而 ICT 是句子粒度,这里句向量通过 BERT 来获得。

对于第二个问题,就是这篇论文中主要提出的 idea,预训练过程中每更新一定步数 Retriever 的参数,就重新建立 MIPS 中的索引 (index)

根据消融实验可以看到这一步非常关键:

同样表中还展示了REALM Retriever 的有效性,以及实体和时间的 span mask 在这里的有效性。

在实验结果中,REALM 也与 T5 进行了比较,打爆了 T5,同时参数量少了很多,也比较有解释性。但另一方面,REALM 也因为中间步骤太多,导致超参有些多,训练麻烦。

与人的类比

其实不难看出 REALM 和人类的一些策略已经很相似了,大脑更多负责思考推断,而一些信息知识完全可以放在外界,只需要知道能通过一些方法找到就行,不管是搜索引擎或是通过图书分类法找。

史蒂芬平克也表示过这样可以让人更加集中于创造性的工作,一些研究也支持了这个观点。

当然 REALM 的 Encoder 在这里做的,也并不是什么创造性的工作,和之前的 MLM 差不多,只不过能拿到更相关的上下文。看消融实验里也可以发现,其实将 Encoder 替换掉后性能是掉得最少的,对 Encoder 可以进行进一步改进(其实也就是加入更好的预训练目标)。

文中对 Retriever 提供的一个视角非常有意思,那就是将 Retriever 看作是一个超大的 Attention 机制,一个query 对上百万级别的文本进行 attention,看 MIPS 加上 softmax 的计算过程会发现和 Transformer 中 attention 计算已经很类似了。如果再加上 LSH 的话,会发现和最近那篇 Reformer 非常相似。LSH 和 Attention 机制的结合之后应该也会成为一个趋势吧,如果要将 Attention 量级升上去的话。

总体来说,感觉这是一个很有意思的论文,能将检索过程加入到自监督学习的预训练中来,当然也希望看到更多的模块能够通过自监督学习得到加强,比起 CV 中各种各样的自监督学习技巧,NLP 还是挺少的。

最强记忆和最强检索,懒惰的我,还是选择检索。

Reference

[1] How Much Knowledge Can You Pack Into the Parameters of a Language Model?

[2] REALM: Retrieval-Augmented Language Model Pre-Training

[3] Asymmetric LSH (ALSH) for Sublinear Time Maximum Inner Product Search (MIPS)

[4] How Does Google Affect the Way We Learn?

[5] Illustrating the Reformer

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档