博资考的笔试部分包括人工智能各个方向的研究内容简答题。现在按照领域,对一些关键的思路和内容进行一下整理。
# 信息检索与自然语言处理方向
# 排序检索的衡量指标
# Precision@k (查准率)
也就是前 个文档中的相关文档比例。分母是 .
# Recall@k (查全率)
分母是全部文档数,分子是前 个文档中的相关文档数。
# F1 score
F1 score 是 Precision 和 Recall 的调和平均。
# MAP (Mean Average Precision)
对于一个查询 , 定义其平均精度为
其中, 为代表第 个文档是否相关的示性函数。
# MRR (Mean Reciprocal Rank)
关注每个查询第一个相关文档的排名,若第一个相关文档在排名 处,则
# NDCG@k (归一化折减累积增益)
CG 是一个简单的度量方式,用于计算返回结果的累计相关性,即将所有返回结果的相关性加总。
在此基础上,引入折减因子,得到 DCG:
DCG 在理想情况下的值 记作 . 将其作为归一化分母,得到 :
# 信息检索系统
为什么信息检索系统要分召回 (retrieval) 和精排 (ranking) 阶段?经典的召回和精排模型有哪些?
为什么要分召回和精排?
- 提高效率:
- 召回阶段的主要任务是从庞大的文档库中筛选出一个较小的候选集。召回通常注重的是速度,需要快速从大量文档中找出与查询相关的候选文档,但这个阶段并不要求对候选文档进行严格的排序。
- 精排阶段则进一步对召回的候选文档进行排序,确定哪个文档最相关。精排阶段通常涉及更复杂的模型或算法,能够考虑更多的上下文信息、查询意图等,因此计算量相对较大。
- 平衡效率与相关性:
- 召回使用快速、低计算成本的算法,能够在短时间内找到与查询相关的候选文档,确保不会漏掉任何可能相关的文档。
- 精排则通过更加复杂的排序算法,从候选文档中挑选出最相关的几篇,提供更高质量的检索结果。这样,系统在保证效率的同时,也能提供较为精准的排序。
- 处理大规模数据:
- 信息检索系统通常需要处理数百万甚至数十亿个文档。通过分阶段的检索,召回阶段快速筛选出大致相关的文档,然后精排阶段对这些候选文档进行深入排序。这样可以有效地应对大规模数据集,避免对所有文档进行高计算开销的排序操作。
- 避免过度计算:
- 召回阶段是一个粗略筛选的过程,通常会使用比较简单、快速的算法(例如基于词频的检索)。而精排阶段则使用更复杂的算法进行精准排序,保证系统的整体性能和响应速度。
其实只要知道核心是围绕效率和精度展开即可。召回面对的是海量文档,因此需要粗略筛选提高效率保证全面。精排则是需要确定具体顺序,因此可以使用更加复杂的特征和算法。
# 常见的召回模型
# 布尔检索模型
布尔检索模型 (Boolean Retrieval) 是最基础的信息检索模型,依赖于逻辑操作符(如 AND、OR、NOT)来确定文档是否相关。查询中每个词的匹配要么完全成立,要么不成立,简洁而高效,但缺乏对词语之间关系的理解。
- 优点:快速,易于实现。
- 缺点:过于严格,不能处理查询中的模糊性和语义关系。
# 向量空间模型
在向量空间模型 (Vector Space Model, VSM) 中,文档和查询都被表示为向量,计算查询向量与文档向量之间的相似度(例如使用余弦相似度)。这种模型能更好地捕捉查询和文档之间的语义关系,但也依赖于合适的特征表示方法。
- 优点:可以处理更多的查询变体,如同义词,能够捕捉文档间的语义关系。
- 缺点:计算复杂度较高,尤其是当文档数量很大时。
# BM25
BM25 是基于概率模型的经典方法,它通过词频(TF)和逆文档频率(IDF)来计算查询与文档的相关性。它是目前信息检索领域非常流行的召回模型,尤其在搜索引擎中广泛使用。
其中:
- D 是文档,Q 是查询。
- f (q, D) 是查询词 q 在文档 D 中的词频。
- |D| 是文档 D 的长度(即文档中词汇的总数)。
- \text {avgDL} 是文档集合中所有文档的平均长度。
- k_1 和 b 是模型的两个超参数:
- k_1 控制词频的加权因子,通常设置在 1.2 到 2.0 之间。它的作用是控制词频对文档相关性的影响,防止过高的词频导致过度加权。
- b 是文档长度归一化的参数,通常设置为 0.75。它控制了文档长度对分数的影响,较长的文档会因为含有更多的词而相对 “稀释” 查询词的贡献。
- 是逆文档频率(Inverse Document Frequency),用来衡量词 q 的重要性。它的计算公式为:
其中:
- N 是文档集合中的总文档数。
- n_q 是包含查询词 q 的文档数。
# 常见的精排模型
# 基于特征的排序
文档被表示为多个特征的集合(例如文档长度、标题与查询匹配度、位置等),然后通过加权组合这些特征来进行排序。常见的算法包括支持向量机 (SVM) 和决策树等,它们根据训练数据中标注的文档与查询的相关性来学习特征权重。
# Learning to Rank
LambdaMART 是一种基于梯度提升的模型,用于训练一个学习器,该学习器根据文档和查询之间的相似性来预测文档的排名。
# 基于预训练语言模型的精排器
最经典的是 BERT Cross-Encoder 模型,该模型通过将查询(Query)与文档(Document)拼接为单一序列输入,直接建模二者深层语义交互并计算相关性得分,是提升检索结果精准度的关键模型。但由于需对 “查询 -- 文档对” 逐一编码,在大规模检索场景下计算代价较高。
但是,信息检索任务中的检索对象经常是 “长文档”,而 BERT 是全连接图,默认只能处理 512 个 tokens。该问题称为长文档问题。