前面第二节,介绍了文件流类FileStream,本节要继续介绍其他流。那么什么是流?在.net程序中,涉及的输入和输出都是通过流来实现的。流是串行化设备的抽象表示,流以读/写字节的方式从存储器读/写数据。存储器是存储媒介,磁盘或内存都是存储器。正如除磁盘外还存在着多种存储器,除文件流之外也存在多种流,例如:网络流、内存流、缓存流等。类Stream及其派生类组成流的家族。如图3-12所示:
webpack-dev-server 是 webpack 集成的开发者服务器,用于帮助开发者快速开发应用程序。
向量召回:深入评估离线体系,探索优质召回方法1.简介近年来,基于向量进行召回的做法在搜索和推荐领域都得到了比较广泛的应用,并且在学术界发表的论文中,基于向量的 dense retrieve 的方法也在不少数据集上都战胜了 在内网的不少文章中也都介绍了各种不同的模型和算法,但是目前我们还没有看到比较系统的介绍向量召回评估体系的文章,在这里我们抛砖引玉,对搜索在将向量召回应用到搜索方向过程中积累的召回评估方面的内容,进行了梳理和归纳 基于此,我们考虑可以固定不同版本模型建立的索引的召回条数,在线召回时统计通过截断模型后保留下来的结果的数量,以此作为模型在全量索引上的召回评估指标。 离线模型迭代指标A.召回指标: R1/R2/RAUC 等召回指标,衡量模型的召回率情况B.聚类指标: 衡量聚类的损失情况。 3.针对问题 3,我们对召回的结果计算 query 与召回结果之间的字重合度和 CQR(Title 分词对 Query 分词的覆盖情况),以此来衡量召回结果的下限,防止出现既召回部分非常好的结果,但同时也召回大量非常差的结果
这些因素对召回的准确性和召回速度的影响主要体现在以下几个方面: 一、影响召回准确性的因素: 数据质量:数据质量是影响召回准确性的基础因素。 因此,数据的质量越高,召回的准确性就越高。 对检索需求的理解:系统对检索需求的理解程度直接决定了召回结果的准确性。 因此,选择合适的检索词也是提高召回准确性的关键。 二、影响召回速度的因素: 数据量大小:数据量越大,系统需要处理的文档就越多,因此召回速度就会相应降低。 系统性能:系统的硬件性能(如CPU、内存、存储等)和软件性能(如算法效率、索引结构等)都会影响召回速度。如果系统性能不足,就可能导致召回速度变慢。 检索策略:不同的检索策略对召回速度的影响也不同。 为了提高召回的准确性和召回速度,可以采取一些优化措施,如提高数据质量、优化检索策略、改进算法模型、提升系统性能等。同时,也需要根据具体的应用场景和需求来选择合适的召回策略和技术。
召回主要是将用户所有可能感兴趣的内容取出来,排序(粗排、精排)主要是预测用户对每条内容感兴趣的程度。召回为整个推荐系统的后续阶段提供数据,保证了效果的上确界。 排序对召回提供的数据再更细致化的分析、预测和排序,保证最终用户看到的结果。可以说召回是服务于后续排序模型。 由于召回和排序是推荐的两个阶段,可以说是独立运行的过程。 在工业上,做召回和排序的可能是两波人。因此两者的目标可能存在不一致。比如:精排希望给转化率高或者浏览时长高的内容更高的评分,而召回依旧取出用户喜欢点击的内容,最终精排的能力受到了限制。 为了让召回的目标向后续的排序靠齐,我们需要一路以排序模型的目标为目标的召回方法,保证能提供排序模型所需要的数据。 多目标蒸馏召回 腾讯提出了一个多目标MMoE蒸馏DSSM召回的方法DMTL(如图1所示)。 MMoE的两个目标是点击和阅读时长。
https://blog.csdn.net/jxq0816/article/details/82151302 所谓召回,在刚接触推荐系统的时候可能只看字面意思无法理解召回的意思,召回可以理解为向用户粗选一批待推荐的商品 之后会加一层CTR预估的rank模型,相当于精排序 推荐系统的主要模块即为:召回 => 排序(精排) => 过滤模块(对最终展示商品进行过滤,多样性排序等) 推荐系统是一个很大的话题,涉及到很多模块, 这里主要是调研了一下推荐召回环节的主流做法。 应用:电商中基本是item-based CF,即对于一个用户,先取出用户过去的行为session商品(如点击,加购物车,下单等),根据规则向用户的召回集中选择商品,可以配置多个召回源,如相似、相关、偏好店铺热销等
一般经典的召回方法即采用多路召回的方式,如下图所示。 多路召回的特点就在于“多路”,满足了挑选物品的多样性,捕捉用户兴趣的多样性,可以根据需要保证你想要召回的物品总能通过某一路挑选出来。下面就详细介绍和分析一下每一路召回方法。 ▌基于兴趣标签的召回 对用户兴趣标签进行优先级划分,然后依次根据用户的兴趣标签挑选对应标签的物品。 ▌总结 总体来说,多路召回的好处就是召回的物品考虑到用户兴趣的多样化,一般不会出现某一领域的集中召回,但是由于每一路都需要确定一个Top K中的K这个参数,调参的空间过大。 同时对于不同的用户都是固定的K值,不够合理化,因为每一个召回路不同的用户偏好不同,也可能用户在某一召回路不应该有候选物品出现,但是固定的K参数是的必须在该召回路筛选出前K个物品。
1.前言:召回排序流程策略算法简介 图片 推荐可分为以下四个流程,分别是召回、粗排、精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板; 粗排是初筛,一般不会上复杂模型; 精排是整个推荐环节的重中之重 2.1 召回路径介绍 推荐系统中的i2i、u2i、u2i2i、u2u2i、u2tag2i,都是指推荐系统的召回路径。 第一种召回,是非个性化的。 2.2.1 多路召回 推荐服务一般有多个环节(召回、粗排序、精排序),一般会使用多个召回策略,互相弥补不足,效果更好。 精排模型非常耗时,所以召回的内容,会经过粗排之后,把少量的数据给精排进行排序 几种多路召回结果融合的方法 举个例子:几种召回策略返回的列表(Item-id,权重)分别为: 召回策略 返回列表 CTR,作为每天更新的动态加权 只考虑了点击率,并不全面 每种召回源CTR计算方法: 展现日志-带召回源:X,Y,Z,X,Y,Z 点击日志-带召回源:点击X * 则每种召回的CTR =
商品推荐系统-FAISS召回 1. 背景与挑战 在互联网电商、内容平台等实际业务中,商品库动辄百万量级,如何为每位用户从海量商品中迅速召回个性化、高相关的候选商品,是推荐系统最基础也最关键的一环。 第一环节:商品Embedding批量提取与存储 3.1 原因和意义 只有将文本型商品属性转化为稠密embedding(向量),才可以用数学距离度量内容相关性,支撑 FAISS 这样的相似度召回引擎。 第二环节:构建与优化FAISS召回系统 4.1 为什么选FAISS? 百万级大数据下的表现与实践建议 适用性:FAISS专为这种百万、千万级内容召回设计,单机64G内存可支持极大库,工程成熟。 总结 本文详细介绍了如何从零开始,批量提取并存储商品embedding、基于内容特征构建FAISS索引、高效实现百万级商品的个性化召回流程以及工程落地优化建议。
在原生 Python 中,如果我们想计算一个元素为数值型的可迭代对象中所有元素的和,可以使用 Python 内置的 sum 函数。在 NumPy 中不仅支持 Python 内置的 sum 函数,而且还提供了优化后的 numpy.sum。
我们根据召回率这个名字,可以考虑一个,召回的例子。 例如有一个汽车公司,他们有一些车发现有问题, 于是就要召回,他们告诉了车主判断问题的方法, 有些车是真的有问题,但是车主没判断出来, 有些车没问题,但车主认为有问题, 这个时候公司就要计算一下召回率,看有问题的车被召回了多少 精度—召回率 之间存在制衡 随着精度的增加,召回率会降低,召回率增加,精度就会降低。 有时如果需要召回率高,就可以接受较低的精度。 F1 score 是对精度和召回率的调和平均,有个公式 如果我们想创建一个具有最佳的精度—召回率平衡的模型,那么就要尝试将 F1 score 最大化。 对每个阈值可以计算相应的 精度 召回率 f1 等指标, ?
上一节讲了当遇到偏斜类的时候,如何对算法效果进行评价,使用查准率和召回率。在很多实际应用中,我们还希望能在查准率和召回率间进行权衡,使得两个指标都取得不错的结果。 权衡查准率和召回率的例子 还是用逻辑回归来进行癌症分类的例子,如下图。图中右上角框起来的是上节讲的“查准率”和“召回率”的定义公式,忘了的可以翻翻上一节的内容。 ? 我们就搞两个模型,一个是高查准率、低召回率的;一个是高召回率、低查准率的。 ? 对于大多数回归模型,你更改这个临界值(threshold)会改变查准率、召回率。 一种办法,算查准率P和召回率R的均值,如下图。 而到底怎样的查准率、召回率的取值比较好,可以使用F1值进行权衡。 又或者,可以同时两个模型并存:(1)高查准率、低召回率;(2)高召回率,低查准率。
语言级优化召回引擎核心的计算、存储节点大多都是采用C++语言。以下优化主要针对C++语言层面。 比如用户要召回同时包含”搜索“和”召回“两个term的文档,需要将这两条拉链求交。如果直接用链表实现,求交操作效率比较低,需要从当前位置一个一个遍历查找(o(n)时间复杂度)。 rbm存储如前文所述,计算是召回逻辑的关键环节。拉链交并处理得到的每一个文档,都要经过过滤语法树的计算,通常是十万级别。同理,对这里性能热点的优化整体的召回性能都得到较大的提升。 而召回是系统的最底层,由于系统扇出,承受的QPS一般也远高于用户层实际触发的QPS。因此,稳定性对于召回系统而言至关重要。除了平常规范研发流程规范,对系统定期压测、做到对系统容量胸中有数外。 当系统压力过大,可以减少每个分片召回的文档数延长cache数据的有效时长,降低穿透率如果粗排在归并层,同样可以降低送粗排的文档数对merge层而言,可以选择:减少各分库的召回策略,以降低扇出压力摘库:直接将下游优先级不高的库流量摘掉
Youtube 工业实战类型的推荐论文,主要介绍了搭建基于双塔模型搭建的神经检索系统的一些 Trick,包括流失数据处理中的采样偏差纠正,利用哈希加快检索效率,归一化提高准确率,加入超参 来微调召回率和精确率
0.前言:召回排序流程策略算法简介 图片 推荐可分为以下四个流程,分别是召回、粗排、精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板; 粗排是初筛,一般不会上复杂模型; 精排是整个推荐环节的重中之重 2.阿里飞猪个性化推荐:召回篇 常见的有基于user profile的召回,基于协同过滤的召回,还有最近比较流程的基于embedding向量相似度的topN召回等等。 主要内容包括:⻜猪旅行场景召回问题、冷启动用户的召回、行程的表达与召回、基于用户行为的召回、周期性复购的召回。 2.1 飞猪旅行场景召回问题 推荐系统流程 图片 首先介绍推荐的整体流程。 但是在工业系统中,为了召回的多样性和准确率,都是存在多路召回的,离线指标的提高并不代表线上效果的提升,一种常见的评估某路召回效果的方式就是对比同类召回通道的线上点击率,这种评估更能真实反映线上的召回效果 2.2 冷启动用户召回 图片 2.2.1 User冷启动召回 用户冷启动召回主要有以下几种方案:Global Hot、Cross Domain、基于用户属性的召回。
作为【推荐系统】系列文章的第二篇,将以“召回”作为今天的主角,会从四个方面来介绍召回的不同算法方式,即基于内容的召回、协同过滤、基于FM模型召回和基于深度学习的方法。 一、背景介绍 ? 下面主要介绍四种常见的召回方法: 基于内容的召回:使用item之间的相似性来推荐与用户喜欢的item相似的item。 基于内容的召回( CB召回 ),一般也叫做标签召回。当谈起CB的时候,大家可能会觉的很简单,用tag或者用cate召回就行了,好像没什么可做的。 但很容易想到的,当用户同时有“帅哥”,“萌宠”这两个tag的时候,通过萌宠给用户召回⼀个美女+萌宠的视频显然没有召回⼀个帅哥+萌宠的视频更有吸引力,也就是说,我们在召回的时候,如果能同时考虑多个term 摘自“推荐系统召回四模型之:全能的FM模型” 这里是“推荐系统召回四模型之:全能的FM模型”一文中给出的极简的FM召回模型,即不考虑上下文特征。 image.png ?
代码清单3-8 int nTargetLen = N + 1; // 设置目标长度为总长度+1 int pBegin = 0; // 初始指针
要想了解YouTube的召回模型,需要依次掌握召回算法、召回模型网络结构,以及召回特征和样本设计。 召回模型的网络结构如下图所示。 ? 召回模型的网络结构 YouTube召回模型的网络结构包含多层神经网络:输入层、中间层(多层网络)、输出层。接下来对各层神经网络进行详细介绍。 在线服务阶段,通过视频向量V和用户向量u,进行相似度计算,采用最近邻查询,取得Top相似视频作为召回候选集。 召回特征和样本设计 接下来介绍召回模型输入层的特征处理,以及如何进行样本的设计和如何选择模型参数。 异构信息处理 包括如下内容。 其次,讲解推荐系统中的召回算法,主要包括基于行为相似的协同过滤召回和基于内容相似的Word2vec召回,并且介绍其在Spark、TensorFlow主流工具中的实现与应用。
当召回率低时,可以采取以下措施来提高召回率: 优化数据质量和数量: 数据清洗:去除重复、无效、错误的数据,确保数据的准确性和一致性。 模型融合:结合多个模型的优点,通过集成学习、模型堆叠等方法提高召回率。 引入新的召回策略: 多源召回:结合不同的数据源进行召回,如用户行为数据、社交网络数据等。 实时召回:对于实时性要求较高的场景,如新闻推荐、电商搜索等,可以引入实时召回策略。 优化索引和缓存: 优化索引结构:设计高效的索引结构,提高查询速度。 实验和迭代: A/B测试:通过A/B测试验证新的召回策略是否有效。 持续迭代:根据实验结果和用户反馈,不断优化召回策略。 监控和分析: 监控召回率变化:定期监控召回率的变化情况,及时发现并解决问题。 分析召回失败原因:对于召回失败的情况,进行深入分析,找出原因并针对性地进行优化。
目前主要通过多路召回来实现,一方面各路可以并行计算,另一方面取长补短。召回通路主要有非个性化和个性化两大类。 在上篇《超强指南! 召回:从推荐池中选取几千上万的item,送给后续的排序模块。由于召回面对的候选集十分大,且一般需要在线输出,故召回模块必须轻量快速低延迟。 由于后续还有排序模块作为保障,召回不需要十分准确,但不可遗漏(特别是搜索系统中的召回模块)。目前基本上采用多路召回解决范式,分为非个性化召回和个性化召回。 二、召回 (一)多路召回 召回模块面对几百上千万的推荐池物料规模,候选集十分庞大。由于后续有排序模块作为保障,故不需要十分准确,但必须保证不要遗漏和低延迟。 (二)召回优化 多路召回的各通路主要就是这些,那召回中主要有哪些问题呢,个人认为主要有: 负样本构建问题:召回是样本的艺术,排序是特征的艺术,这句话说的很对。