淘宝搜索的意义在哪 淘宝搜同款怎么搜( 二 )


文章插图
表示sigmoid函数 。那么一个商品最终能被点击的概率为能通过所有stage的概率之积:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
我们通过极大似然估计去拟合样本,使用负的log似然来表示损失函数,那么基础的损失函数可以表示为

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图


淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
关注的是排序的准确性:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
其中左边项表示似然函数,影响模型的准确度;右边项

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示正则项,一方面是防止过拟合,另一方面能预防特征相关导致的ill-condition问题 。
由于在实际的搜索排序中,我们除了效果,性能也是不得不关注的部分,因此我们需要将系统的性能性能消耗也加到目标中 。我们可以求CPU的总消耗等于每个stage下的性能消耗之和:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
。其中

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示每个stage上需要计算的商品量的期望,

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示商品x能进入第j个stage的概率,

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示在第j个stage上的feature进行一次计算的总耗时 。那么我们得到一个新的loss

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图


淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
除了考虑排序的效果,兼顾了模型的计算量:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
通过调整

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
,我们能调节系统的性能与效率 。

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
越大,系统负载越低,但排序结果也越差;

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
越小,排序结果越好,但系统开销越大 。
用户体验保障(Multiple Factors of User Experience)
如果直接使用上述模型,确实可以直接降低引擎的负载,但是仍然存在2点用户体验上的问题:1是对于某些query(特别是hotquery),可能计算latency仍然会非常高;2是某些query(一般是长尾query)下,返回给用户的结果特别少 。那么为了解决这2个问题,我们进一步的增加了2个约束:单query下的latency不能超过100(只是举例,不一定是100)ms;返回给用户的结果数不能小于200 。那么很自然的,我们会想到使用类似SVM的loss形式:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
上述公式可以比较直观的理解为当query下的latency小于100ms(N的值)的时候,loss为0;大于100ms时,loss为(latency-100)的线性倍数;返回结果数类似 。然而该函数是非凸、不可导的,并不利于问题的求解 。因此为了求解的方便,我们使用了一个凸近似函数modified logistic loss去逼近SVM loss,可以证明,该loss和hinge loss是几乎一致的,当我们取一个较大的

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
的时候:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
综上,我们考虑了用户的2种体验之后,最终的目标函数可以写成下面形式:

淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
其中
淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示期望返回给用户的最少结果数(例如200),
淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
表示希望的最大latency(例如100ms) 。通过最小化
淘宝搜索的意义在哪 淘宝搜同款怎么搜

文章插图
,我们既能在有限的计算资源下得到更好的排序结果,又能兼顾用户的搜索体验 。

秒懂生活扩展阅读