General search我们在文中提出了两种方案,第一种方案是参数化、较通用的一种方案,我们称之为soft search。此方案我们把用户的原始行为信息和候选的目标商品向量化,让这个向量化具有空间度量性,比如说相似的或者相关的商品在内积空间里距离更近。如此,通过一些最近邻相关的一些检索,比如说MIPS的一些方法,依此构建一个高效的索引,在线时候就能很快的根据候选商品信息,对原始长度10000的行为序列,检索到一个长度可能在100左右的相关用户行为子序列。这个思路和很多团队采用的向量召回的思路比较相近。值得一提的是怎么去做向量化,SIM不是做的相似的度量,而是单独的建立了一个点击预估任务。因为我们的目标不是让相似的商品近同,而是让候选目标商品是通过向量距离找到和自己ctr预估的相关的行为,最后的目标是一个ctr的任务。对用户的所有行为序列的向量化,通过内积判断一个权重,使得点击率预估的更准,找到使这个点击率更相关的这部分行为子序列。如果直接把用户的原始行为子序列输入,那么离线训练可能达到10000长度,训练上也不太能接受。但是这个模块实际上需要训练的是对行为id和商品id的向量,而不是把点击率预估的多准。所以这里有个技巧,可以对样本的原始行为序列进行随机采样,比如把10000的长度直接采样到1000或100使得训练引擎能承受的级别,这样依旧可以满足向量的训练。这部分我们进行过测试,采样和切入一小部分数据不采样,最后的效果是接近的,能保证这个向量是可以用于构建快速检索索引。
我们先来回顾一下过去的算力、架构算法的关系。在深度学习时代之前,因为整个模型的变更,包括架构的变更频率非常短,可能大部分的时候的模型都是不变的,我们在做一些关于数据流、或者特征相关的工作。在这种情况下,算力更多的时候像是一个约束条件,少有和算法以及系统架构联合起来考虑。
但是深度学习时代不一样,深度学习模型开发成本比较低,谁都可以试一试。整个的模型变化频率比较高,同时不同的模型之间的算力需求相比差别非常的大,同时模型OP单元化,一个模型型的整个算力开销基本上是可预估的,这个时候就给算法、架构、算力联合优化提供了条件。 1. 传统Cascade System