NLP技术在搜索中的应用方向
一、引言
【搜索实践】NLP技术在搜索中的应用方向
【搜索实践】NLP技术在搜索中的应用方向
对于电商企业来说,搜索功能是其重中之重。这是买家进行购买的便捷有效的途径。因此我们的搜索引擎也是公司重要的产品。而搜索的关键是什么呢,自然是能够在时间明确用户的意图并给出与之相匹配的商品结果。所以怎么才能更好的理解用户,怎么能够在快的时间内给到用户想要的结果,这便是我们在搜索实践中一直探讨优化的方向与目标。本文基于这一个月的进展做一个词向量在召回中的运用分析。
二、什么是词向量
在聊 Word2vec 之前,先聊聊 NLP (自然语言处理)。NLP 里面,细粒度的是 词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要从基础的词语开始。
举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型 f(比如神经网络、SVM)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding)。
one-hot 是可认为是为简单的词向量,但存在维度灾难和语义鸿沟等问题;通过构建共现矩阵并利用 SVD 求解构建词向量,则计算复杂度高;而早期词向量的研究通常来源于语言模型,比如 NNLM 和 RNNLM,其主要目的是语言模型,而词向量只是一个副产物。
如上图的NNLM模型(2003年推出),它是为了计算某个句子出现的概率,我们可以加入相应的先验知识,用贝叶斯公式表示则是
将输入语料进行分词,并向量化(随机初始化成为一个N维的向量),然后将他们拼接起来作为输入,经过神经网络计算后预测出下个词是目标词的概率,通过反向传播优化模型参数后,我们不但得到了一个能够预测句子出现概率的模型,也得到了一份 词向量,相同上下文语境的词有相似语义,词与词之间的关联得到了极大的提升。 而由此引申出了 Word2vec、FastText,在此类词向量中,虽然其本质仍然是语言模型,但是它的目标并不是语言模型本身,而是词向量,其所作的一系列优化,都是为了更快更好的得到词向量。GloVe 则是基于全局语料库、并结合上下文语境构建词向量,结合了 LSA 和 Word2vec 的优点。(当然词向量模型远不止这些,其他模型和衍生场景这里不展开阐述,可以作为后续的专题进行分析)
如上图是我使用fasttext对天龙八部训练出的词向量模型,可以明显看出其中的人物之间的关系,这便是词向量之间的语义聚合效果,它的出现对于NLP后续的任务效果(如文本分类、NER、翻译等)都带来了极大的提升。
三、词向量在召回模型中的运用
随着平台用户体量和商品SKU的不断扩大,用户对于搜索场景的依赖也越来越大,提升召回率便是其中重要的一环,对此我们设计了一套方案,即利用词向量构建query语义表征,考虑到对未登录词的兼容性,这里使用了fasttext进行了词向量的训练。通过相似度计算和query热度加权推测无结果query的候选query,利用faiss进行在线实时高速计算,结合产品的优化实现对无结果query的再次召回,线上再结合多臂机的选择策略进一步提升容错和纠错能力。
我们分析整理了平台历史所有的query语料数据,结合商品描述信息使用迭代和半人工的方式优化了自有词库,在特征处理过程中,针对中英文分别做了处理,如英文增加了编辑距离纠错,中文由于短文本信息较少使用了单字进行切割等,针对性的进行了文本处理,相应的归一化了词分布,提升了部分模型训练效果。
训练参数如下:
query候选集预测结果部分如下,可以看到在没有做其他优化的前提下已经产生了一定的效果,后续我们还可以加入更多的策略进行融合进一步满足业务的场景:
四、未来的想象空间
针对平台业务及搜索场景,NLP还会有很多的结合点。
比如:
1.对query做分类预测,我们可以预测每个query词的类目意图,品牌意图等,减少搜索的歧义影响。
2.搭建我们自己的NER命名实体模型,搜索的方向及准度
3.针对海外市场,如何更好的利用国内积累下的搜索源数据,通过机器翻译的方式打通语言的壁垒
4.作为个性化排序模型中的语义特征搭建完善个性化模型
5.为运营及市场做用户热度挖掘及等
NLP作为人工智能技术的掌上明珠,虽然还处于刚起步和不断完善的阶段,但是只要合理运用好并能搭配其他策略进行完善,相信还有很多的价值等待我们去挖掘。
NLP基本术语与基本概念-上
词是小的能够活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文分词的基础与关键。中文和英文都存在分词的需求,不过相较而言,英文单词本来就有空格进行分割,所以处理起来相对方便。但是,由于中文是没有分隔符的,所以分词的问题就比较重要。分词常用的手段是基于字典的长串匹配,据说可以解决85%的问题,但是歧义分词很难。举个例子,“美国会通过对台售武法案”,我们既可以切分为“美国/会/通过对台售武法案”,又可以切分成“美/国会/通过对台售武法案”。
Prompt-NLP新范式
NLP技术发展的四种范式:
Prompt的起源可以追溯到GPT-2,T5,GPT-3等的一些研究,发现在输入样本前加入一个和任务相关的 前缀 ,就可以提示模型接下来要输出的内容。比如在GPT-3的预测阶段,只需要在输入样本前加上Translate English to French: 就可以提示模型接下来要进行翻译任务,即完全依靠模型在预训练阶段学到的知识来进行预测,不需要在下游任务上再依靠task-specific的 监督数据 对模型进行fine-tune就可直接使用,一方面减少了fine-tune模型的计算和存储代价,另一方面也给样本量极度缺乏的 少样本领域(zero/few-shot) 带来了福音。
这种依靠 提示信息(Prompt) 来激发模型的内在潜能,挖掘模型在大规模预训练阶段学到的知识的做法了NLP领域的第四范式。人们逐渐开始思考如何更加 高效地利用 预训练语言模型的大量参数,如何将各种下游任务都统一到一个 通用框架 下,使得模型能够根据不同的提示信息进行不同的任务,从而不需要再为每个下游任务训练单独的模型。
本文将对Prompt快速发展过程中一些重要论文的核心创新点进行简要介绍,而不会详细描述过多模型细节(欲知全貌建议直接读原论文)。
论文:Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference (2020)
该论文对Prompt模式的研究进行了规范,提出了 Pattern-Verbalizer 的概念:
比如对于5分类任务,给定输入样本 a ,对应的模板函数 P 和标签映射函数 v 可为:
注意这里多种Prompt模板函数以及映射函数都是 人工手动设计 的。
然后利用新构建出来的 P(x),v(l) 对预训练模型进行fine-tune,其他更多细节不再展开,实验结果显示该方法在少样本任务上表现很好。
论文:It’s Not Just Size That Matters: Small Language Models Are Also Few-Shot Learners ( PET原班人马 )
GPT-3出来后显示了其在少样本学习上的惊人能力,但是其庞大的参数量也令人望而却步。而本文作者提出 “小模型在少样本学习上也可以有卓越表现” ,直接对标GPT-3这个庞然大物,从而奠定了 PET所提范式 在江湖的霸主地位,引起了各大武林人士的关注。
该文证明了PET所提范式的有效性,同时作者还分析发现设计不同的 Prompt 模板和标签映射函数 Verbalizer 对模型性能影响较大,从而引起后来人员涌入改进Prompt模板和标签映射Verbalizer构造的浪潮中。
论文:Making Pre-trained Language Models Better Few-shot Learners
取代PET中手动构建Prompt模板和标签映射函数的过程,自动化搜索模板和标签映射,同时参考GPT-3中的in-context learning,在输入样本中加入示例(demonstrations)作为上下文,帮助模型更好地理解要做什么。
实验表明,在少样本上,这种基于prompt的fine-tune效果能够明显好于标准的fine-tune,并且在样本中加入示例确实能够带来增益。
也许未必非要构建人能理解的 离散tokens式 的Prompt,构建模型能够接受的 连续向量式 的Prompt也未尝不可。
4.1 论文: Prefix-Tuning : Optimizing Continuous Prompts for Generation
该文针对 NLG(Natural Language Generation) 任务,提出了构建连续的prompts。在预训练模型的每一层加上一个Prefix前缀矩阵,固定预训练模型的参数,仅训练前缀矩阵的参数,在few-shot设定下,性能超过标准的fine-tune。
实验结果表明,在 全量 数据下,prompt-based fine-tune的效果能够 相当 standard fine-tune;在 少样本 下,能够 超过 standard fine-tune。
4.2 论文:GPT Understands, Too ( P-tuning )
该文针对 NLU(Natural Language Understanding) 任务,也提出了构建连续的prompts。与 Prefix-tuning 不同的是,这里的prompts仅需要加在输入层,而不用加在网络的每一层,就可以work well。
利用 biLSTM 对prompts进行 Encode ,然后将编码后的 prompts embedding 和样本 x 输入预训练语言模型(PLM),之后同时fine-tune prompt embeddings 和 pretrained model 。
考虑到优化连续的prompt向量有两个问题:
因此作者提出先采用 biLSTM 作为 Prompt Encoder 来编码prompt向量。
具体Prompt模板设计为:
实验结果表明,在 全量 数据下,prompt-based fine-tune的效果能够 相当 或超过standard fine-tune。
论文:The Power of Scale for Parameter-Efficient Prompt Tuning
该文提出为每个下游任务设计自己的prompt,拼接到输入样本上,然后完全freeze预训练模型的权重,仅训练prompts对应的权重参数。发现随着模型体积的增大, Prompt-tuning 的效果逐渐追上标准 fine-tune 的效果。
这里 Model Tuning 就是指标准的 fine-tune ,即在下游任务上对预训练模型的参数进行更新。
后对各论文实验结果的普遍规律进行一个总结。各论文采用的fine-tune策略主要有以下三种:
对于自然语言处理问题,哪种神经网络模型结构更适合?()。
自然语言处理(NLP)是一种涉及文本和语言的计算机应用技术,随着深度学习的发展,神经网络模型在NLP领域中得到了广泛的应用。根据不同的NLP任务和数据集,可以选择不同的神经网络模型结构。但是,基于目前的研究和应用经验,可以总结出一些适用于NLP问题的神经网络模型结构。
循环神经网络(RNN):RNN是一种经典的神经网络模型结构,可以处理序列化输入的数据,例如文本、音频和视频等。在NLP领域,RNN被广泛应用于自然语言生成、文本分类、情感分析、机器翻译等任务,主要优势在于能够处理动态变化的输入序列和长距离依赖关系。
长短时记忆网络(LSTM):LSTM是RNN的一种变体,能够有效地解决RNN训练过程中的梯度消失和梯度爆炸问题。LSTM在NLP领域中被广泛应用于自然语言生成、机器翻译、情感分析等任务,主要优势在于能够处理长距离依赖关系和动态变化的输入序列。
卷积神经网络():是一种广泛应用于图像处理领域的神经网络模型结构,可以提取图像中的特征信息。在NLP领域,被应用于文本分类、情感分析等任务,主要优势在于能够提取局部和全局的特征信息。
注意力机制(Attention):注意力机制是一种神经网络模型结构,能够在处理序列化输入时,将重点放在与当前任务相关的部分上。在NLP领域,注意力机制被广泛应用于机器翻译、自然语言生成等任务,主要优势在于能够有效处理长距离依赖关系和对输入序列中重要信息的聚焦。
总之,在NLP领域,不同的神经网络模型结构有其各自的优点和适用范围,需要根据具体任务的要求和数据集的特点进行选择。同时,还需要考虑模型的训练效率和计算复杂度等因素,以便充分利用计算资源和提高模型性能。