TinyBERT搜索: 比BERT快10倍,小20倍

关注上方深度学习技术前沿,选择“星标公众号”

资源干货,第一时间送达!

TinyBERT是谷歌开发的新模型,与传统BERT相比,它快10倍,小20倍,可在CPU上运行。

作者:Jack Pertschuk,Cole Thienes

TinyBERT搜索: 比BERT快10倍,小20倍_第1张图片

最近,Google推出了一种新的搜索模型。该方法基于流行的开源Transformer BERT,它使用语言理解来解决传统关键字方法无法做到的搜索,提升搜索的体验。

特别是对于更长的,更多的对话查询,或诸如“ for”和“ to”之类的介词与含义有很大关系的搜索,改进后的搜索引擎将能够理解查询中单词的上下文。用户可以通过一种自然的方式进行搜索。

-Google搜索副总裁Pandu Nayak

本文构建了NBoost模型,并在此过程中使用了TinyBERT进行搜索,以使非专业人也可以轻松使用高级搜索排名模型。

更小,更快的BERT

BERT可以改善搜索结果,但有一个要点:要运行这些查询理解模型需要资源。尤其是当响应时间至关重要且必须处理数百万次搜索时。这项挑战是如此艰巨,以至于Google甚至构建了自己的硬件(云TPU)来运行模型。

为了在标准硬件上运行这些模型,我们使用知识蒸馏,该过程,用较大的教师网络训练较小的学生网络,学生网络保证了大多数准确性,但使用的层数较少(通常较小),从而使其变得更小且更快。

TinyBERT搜索: 比BERT快10倍,小20倍_第2张图片

TinyBERT架构

参考华为的代码(https://github.com/huawei-noah/Pretrained-Language-Model/tree/master/TinyBERT),并对其进行了修改,我们进行了知识蒸馏。并在MS Marco数据集进行训练和评估。我们先使用MS Marco训练三元组在PyTorch中训练了一个基于bert的教师网络。然后,我们用它作为教师来训练一个较小的学生BERT网络,该网络只有4个隐藏层(标准BERT是12)。此外,这些层中的每一个只有312维(标准BERT是768),从而使模型更加轻巧。我们在BERT的末尾增加二元分类的前馈网络来生成得分以进行搜索排名。

TinyBERT搜索: 比BERT快10倍,小20倍_第3张图片

以下是我们使用的tinyBERT架构的示例bert_config.json,与标准bert_config的显着区别是加粗的。

{
 “attention_probs_dropout_prob”: 0.1,
 “cell”: {},
“emb_size”: 312,
 “hidden_act”: “gelu”,
 “hidden_dropout_prob”: 0.1,
 “hidden_size”: 312,
 “initializer_range”: 0.02,
 “intermediate_size”: 1200,
 “max_position_embeddings”: 512,
 “num_attention_heads”: 12,
 “num_hidden_layers”: 4,
 “pre_trained”: “”,
 “structure”: [],
 “type_vocab_size”: 2,
 “vocab_size”: 30522
}
评估

MS Marco是现实世界中搜索引擎使用情况数据的最大公共来源,使其非常适合评估搜索和问答模型。当BERT Base首次在MSMarco上使用时,它以0.05的MRR击败了最新技术。基于BERT的解决方案仍然位于排行榜的顶部。我们的目标是找到一种方法,以一种足以在现实世界中使用的模型来实现这一目标。

TinyBERT,虽然不如BERT Base有效,但我们的实验表明,它保留了BERT Base MRR分数的90%(0.26与BM25排名前50位的0.29对比0.29,而使模型快10倍,小20倍)。但是,基于学术基准(例如MS Marco)的结果通常缺乏现实世界的可概括性,因此应谨慎考虑。

点击阅读原文,可直达原文网页地址!!!

你可能感兴趣的:(TinyBERT搜索: 比BERT快10倍,小20倍)