三言两语大话 - DPP

DPP 

 

为什么

当用户在我们系统中点击行为比较少的时候,我们会补充一些热门特征来丰富用户画像。


所谓的热门特征,是累加了所有用户点击过的新闻特征,然后取topk得到的。


会发现,尤其对于一些细粒度的特征,头部会集中在同一语义下。为了平衡热门特征的语义多样性和热门程度,我采用了DPP 的方法。


举个例子,那比如前两天赵丽颖和冯绍峰离婚热度比较高,那么热门关键词可能都是相关事件的关键词,但是当DPP进行打散以后,排名可能就变成赵丽颖,冯绍峰,iPhone12,离婚。。。


什么是

DPP 全称是行列式点过程,行列式的几何意义是方阵中各个列向量所构成的多面体体积的平方。


为了将 DPP 应用到我们这个场景里,首先构造一个列向量 bi,是特征的语义 embedding * 特征的热度。这样构成的多面体,则当热度越大,体积越大,并且语义越不相关,即多样性越好,体积越大。最终通过求解这个方阵的最大行列式值,可以找到特征热度和多样性最大的子集,作为热门特征集合。


怎么做

直接求解优化的话比较困难,hulu 提出了一种贪婪算法,将复杂度从 O(M yyy)降到了 O(My)。其中 M 是选择的最终集合个数,y 是特征维度。


它贪婪的思想是,DPP 取 log 后的函数是满足次模函数的,意思是随着输入集合中元素的增加,收益减小。就好比,小集合与大集合增加同样一个元素,小集合带来的收益大于大集合的收益。


于是每次迭代选择收益最大的 item即可。



posted @ 2021-04-25 08:09  nuo-o  阅读(189)  评论(0编辑  收藏  举报