Press "Enter" to skip to content

下一代的搜索引擎是什幺样子?神经网络真的能「死记硬背」吗?

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

目前搜索引擎技术已经迭代很多年了,从纯字面的匹配、到统计特征的匹配,再到神经网络的匹配,虽然一直在小步快走,但仍然没有跳出现有的Pipeline框架: 即先召回、再排序。

 

召回是指从海量数据中筛出一小批可能的候选,排序是从一小批候选中找出最终的答案并进行排序。 现有的Pipeline大多是在召回侧用字面或者浅层网络,不然数据量太大了根本处理不过来,而排序侧因为数据量小,会上更多的特征和模型。

 

这种架构的一个关键问题是,召回代表着天花板,如果召回阶段没把对的文本选出来,那排序再怎幺排都没用 。而召回又不能上太大的在线模型,只能离线挖掘出更多的feature,比如能代表文档主题的内容标签,来提升召回的效果。但这样就意味着更多的人力成本。

 

目前比较优雅的方法,是用双塔模型,离线把海量数据压缩成一个个embedding,线上来一个query,双塔encoder只用把这一个query映射到相同的空间,就能通过浅层匹配或者cosine相似度的方式召回。 但这个方法还有个问题,就是跟排序模型虽然目标差不多,但还是各做各的,排序模型在优化目标时没有把梯度传给召回模型。 近几年也有学者提出联合训练的方法,比如 ORQA [1]和REALM [2]。

 

但你懂的,最优雅的还是用一个模型把一切都端到端化。

 

同时输入query和候选肯定是不可能的,等检索完GPT100都出来了,那有没有可能 让模型提前把候选记住,搜索时只输入一个query,模型直接输出所有结果?

 

一、死记硬背?

 

最直接的想法,就是输入query文本,输出答案文本。

 

在EMNLP20有一篇谷歌文章 [3] ,直接在预训练后的T5上用问答数据精调,发现在不访问外部知识的情况下,预测结果可以接近当时的SOTA模型,证明T5本身在预训练就记住了很多知识。

 

 

然而这篇研究很快就被别打脸了 [4] ,因为作者使用的数据集的train和test有很大一部分重合,很多答案在精调时都见过了,所以记得住。

 

接下来,浙大在ACL21的一篇工作 [5] 更严格地探索了模型的记忆能力,作者模拟老师教书的过程:

 

1. 让学生看书,用LM的目标对知识库进行训练

 

2. 让学生考察是否记住书上的知识点,把一些答案span遮盖掉,让模型去预测,强化知识点的记忆

 

3. 问学生一些问题,用训练数据进行生成式精调,输入问题,输出答案

 

4. 期末测验,问一些问题,评估预测结果

 

这个方式看起来还蛮科学的,但结果却惊掉了我的下巴。

 

在只有20条SQuAD知识的封闭域内,答案只能做到20%的Exact match,而当时榜单的SOTA有90% 。

 

二、Differentiable Search Index

 

直接生产答案的方法是行不通了,而且就算可以,生成模型的速度也太慢了,等生成完GPT200都出了。

 

那换另一个思路行不行呢? 让模型自己把知识记住,并且编码成索引,输入query后生成候选索引?

 

这就是谷歌最近一篇文章的思路:Transformer Memory as a Differentiable Search Index [6] 。

 

这篇文章让模型做了两件事情:

 

1. 建索引:训练时输入文本内容,输出docid,让模型记住该内容,并映射到索引ID上

 

2. 检索:训练时输入query,输出多个docid,相当于做了一个排序

 

不过实际做的时候,还有不少细节:

 

1. 把整个文档都输入也太慢了,最终发现只输入文档的前L个token就可以

 

2. DocId应该怎幺表示?给每个文档都分配一个唯一id,这个值是离散的,最后需要一层softmax分类,有巨大的词表,而且不利于增删,最终发现把文档按照额外的语义向量进行聚类,再整理成一个层级结构的效果是最好的,如图

 

最终模型的效果非常惊喜,居然碾压了双塔的召回方式:

 

不过这个对比还有点不公平,既然是要做端到端的检索,应该跟双塔+排序去比较更有说服力。

 

三、总结

 

以上是我最近关注的一个小方向,可以看到,模型对离散知识的记忆能力真的太差了,但对于它自己编码的「连续」知识表现却还不错,感觉也是可以持续深入(shui)的一个topic。

 

融合外部知识是通用模型必须跨过的坎儿 ,而采用外挂还是记忆,目前为止还没有一个完美的答案。

 

参考文献

 

[1] Latent Retrieval for Weakly Supervised Open Domain Question Answering:

 

https://arxiv.org/abs/1906.00300

 

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

 

https://link.zhihu.com/?target=https%3A//kentonl.com/pub/gltpc.2020.pdf

 

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

 

https://aclanthology.org/2020.emnlp-main.437/

 

[4]  Question and answer test-train overlap in open-domain question answering datasets:

 

https://arxiv.org/abs/2008.02637

 

[5]  Can Generative Pre-trained Language Models Serve as Knowledge Bases for Closed-book QA?:

 

https://aclanthology.org/2021.acl-long.251.pdf

 

[6]  Transformer Memory as a Differentiable Search Index

 

https://arxiv.org/abs/2202.06991

 

本文来自: 公众号【李rumor】

 

作者:rumor

 

Illustration  b y Natasha Remarchuk  from i cons8

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。