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

卷友们好,我是rumor。

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

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

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

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

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

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

死记硬背?

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

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

fa71ffcc8700e3deaad10f7c52dd6ca0.png

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

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

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

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

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

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

e188e446c7c440aa8f057a35f696dc94.png

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

在只有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,相当于做了一个排序

cf22e09c7cbcfd5cc8e2faa58017bf40.png

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

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

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

62bb7d6fbb9aba90a8162e3357ba15d6.png

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

46e44c5d98901d1f9e5b281d3744ae37.png

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

总结

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


欢迎对NLP感兴趣的朋友加入我们的「NLP卷王养成」群,一起学习讨论~

扫码添加微信备注「NLP」即可⬇️

c6edaf766292f63ec2a8cc4069d85ca2.png

1f1f49eb59068fdb96f36db18b39e662.png


大家好我是rumor

一个热爱技术,有一点点幽默的妹子

欢迎关注我

带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「谁来给我一个完美的答案df84229a726450eb152267caea911573.png5dc7823e883010c651e4f971fb2aaba6.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值