博资考的笔试部分包括人工智能各个方向的研究内容简答题。现在按照领域,对一些关键的思路和内容进行一下整理。

# 信息检索与自然语言处理方向

# 排序检索的衡量指标

# Precision@k (查准率)

也就是前 kk 个文档中的相关文档比例。分母是 kk.

# Recall@k (查全率)

分母是全部文档数,分子是前 kk 个文档中的相关文档数。

# F1 score

F1 score 是 Precision 和 Recall 的调和平均。

# MAP (Mean Average Precision)

对于一个查询 qq, 定义其平均精度为

AP(q)=1ni=1nPrecision@krel(k).AP(q) = \frac{1}{n} \sum_{i=1}^n \text{Precision@k} \cdot \text{rel}(k).

其中,Rel(k)\text{Rel}(k) 为代表第 kk 个文档是否相关的示性函数。

# MRR (Mean Reciprocal Rank)

关注每个查询第一个相关文档的排名,若第一个相关文档在排名 rqr_q 处,则

MRR=1QqQ1rq.\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{r_q}.

# NDCG@k (归一化折减累积增益)

CG 是一个简单的度量方式,用于计算返回结果的累计相关性,即将所有返回结果的相关性加总。

CG@k=i=1krel(i).\text{CG@k} = \sum_{i=1}^{k} \text{rel}(i).

在此基础上,引入折减因子,得到 DCG:

DCG@k=i=1krel(i)log2(i+1).\text{DCG@k} = \sum_{i=1}^{k} \frac{\text{rel}(i)}{log_2(i + 1)}.

DCG 在理想情况下的值 maxDCG@k\max \text{DCG@k} 记作 IDCG@k\text{IDCG@k}. 将其作为归一化分母,得到 NDCG@k\text{NDCG@k}:

NDCG@k=DCG@kIDCG@k.\text{NDCG@k} = \frac{\text{DCG@k}}{\text{IDCG@k}}.

# 信息检索系统

为什么信息检索系统要分召回 (retrieval) 和精排 (ranking) 阶段?经典的召回和精排模型有哪些?

为什么要分召回和精排?

  1. 提高效率:
    • 召回阶段的主要任务是从庞大的文档库中筛选出一个较小的候选集。召回通常注重的是速度,需要快速从大量文档中找出与查询相关的候选文档,但这个阶段并不要求对候选文档进行严格的排序。
    • 精排阶段则进一步对召回的候选文档进行排序,确定哪个文档最相关。精排阶段通常涉及更复杂的模型或算法,能够考虑更多的上下文信息、查询意图等,因此计算量相对较大。
  2. 平衡效率与相关性:
    • 召回使用快速、低计算成本的算法,能够在短时间内找到与查询相关的候选文档,确保不会漏掉任何可能相关的文档。
    • 精排则通过更加复杂的排序算法,从候选文档中挑选出最相关的几篇,提供更高质量的检索结果。这样,系统在保证效率的同时,也能提供较为精准的排序。
  3. 处理大规模数据:
    • 信息检索系统通常需要处理数百万甚至数十亿个文档。通过分阶段的检索,召回阶段快速筛选出大致相关的文档,然后精排阶段对这些候选文档进行深入排序。这样可以有效地应对大规模数据集,避免对所有文档进行高计算开销的排序操作。
  4. 避免过度计算:
    • 召回阶段是一个粗略筛选的过程,通常会使用比较简单、快速的算法(例如基于词频的检索)。而精排阶段则使用更复杂的算法进行精准排序,保证系统的整体性能和响应速度。

其实只要知道核心是围绕效率和精度展开即可。召回面对的是海量文档,因此需要粗略筛选提高效率保证全面。精排则是需要确定具体顺序,因此可以使用更加复杂的特征和算法。

# 常见的召回模型

# 布尔检索模型

布尔检索模型 (Boolean Retrieval) 是最基础的信息检索模型,依赖于逻辑操作符(如 AND、OR、NOT)来确定文档是否相关。查询中每个词的匹配要么完全成立,要么不成立,简洁而高效,但缺乏对词语之间关系的理解。

  • 优点:快速,易于实现。
  • 缺点:过于严格,不能处理查询中的模糊性和语义关系。

# 向量空间模型

在向量空间模型 (Vector Space Model, VSM) 中,文档和查询都被表示为向量,计算查询向量与文档向量之间的相似度(例如使用余弦相似度)。这种模型能更好地捕捉查询和文档之间的语义关系,但也依赖于合适的特征表示方法。

  • 优点:可以处理更多的查询变体,如同义词,能够捕捉文档间的语义关系。
  • 缺点:计算复杂度较高,尤其是当文档数量很大时。

# BM25

BM25 是基于概率模型的经典方法,它通过词频(TF)和逆文档频率(IDF)来计算查询与文档的相关性。它是目前信息检索领域非常流行的召回模型,尤其在搜索引擎中广泛使用。

score(D,Q)=qQIDF(q)f(q,D)(k1+1)f(q,D)+k1(1b+bDavgDL)\text{score}(D, Q) = \sum_{q \in Q} \text{IDF}(q) \cdot \frac{f(q, D) \cdot (k_1 + 1)}{f(q, D) + k_1 \cdot \left(1 - b + b \cdot \frac{|D|}{\text{avgDL}}\right)}

其中:

  • D 是文档,Q 是查询。
  • f (q, D) 是查询词 q 在文档 D 中的词频。
  • |D| 是文档 D 的长度(即文档中词汇的总数)。
  • \text {avgDL} 是文档集合中所有文档的平均长度。
  • k_1 和 b 是模型的两个超参数:
  • k_1 控制词频的加权因子,通常设置在 1.2 到 2.0 之间。它的作用是控制词频对文档相关性的影响,防止过高的词频导致过度加权。
  • b 是文档长度归一化的参数,通常设置为 0.75。它控制了文档长度对分数的影响,较长的文档会因为含有更多的词而相对 “稀释” 查询词的贡献。
  • IDF(q)\text{IDF}(q) 是逆文档频率(Inverse Document Frequency),用来衡量词 q 的重要性。它的计算公式为:

IDF(q)=log(Nnq+0.5nq+0.5+1)\text{IDF}(q) = \log\left(\frac{N - n_q + 0.5}{n_q + 0.5} + 1\right)

其中:

  • N 是文档集合中的总文档数。
  • n_q 是包含查询词 q 的文档数。

# 常见的精排模型

# 基于特征的排序

文档被表示为多个特征的集合(例如文档长度、标题与查询匹配度、位置等),然后通过加权组合这些特征来进行排序。常见的算法包括支持向量机 (SVM) 和决策树等,它们根据训练数据中标注的文档与查询的相关性来学习特征权重。

# Learning to Rank

LambdaMART 是一种基于梯度提升的模型,用于训练一个学习器,该学习器根据文档和查询之间的相似性来预测文档的排名。

# 基于预训练语言模型的精排器

最经典的是 BERT Cross-Encoder 模型,该模型通过将查询(Query)与文档(Document)拼接为单一序列输入,直接建模二者深层语义交互并计算相关性得分,是提升检索结果精准度的关键模型。但由于需对 “查询 -- 文档对” 逐一编码,在大规模检索场景下计算代价较高。

但是,信息检索任务中的检索对象经常是 “长文档”,而 BERT 是全连接图,默认只能处理 512 个 tokens。该问题称为长文档问题

# 计算机视觉

# 强化学习

# 策略梯度