zoukankan      html  css  js  c++  java
  • 推荐:负采样

    https://zhuanlan.zhihu.com/p/387378387

    负采样有很多种方法。线上用的是随机降采样 10% 的负例。

    分类

    规则式

    随机(baseline)

    优点:效率,避免引入新的偏差。广泛使用。

    基于流行度

    越热门的物品,越容易做负例。

    优点:提高采样质量,用户不喜欢热门商品,可以很好的学习到用户的喜好。相反,一个大家都不喜欢的商品,将它用作负例学习,能带给模型的信息量很少。

    缺点:流行度可能引入新的偏差,毕竟流行度是全局计算,忽略了个体的差异; 

    基于模型的负采样

    动态采样

    提高被高估的负例的采样概率,提高负例的信息量。

    GAN 

    利用对抗网络,用生成器生成负例,来迷惑判别器。

    SRNS

    强效判别,假负例VS hard negative。

    《Simplify and Robustify Negative Sampling for Implicit Collaborative Filtering》

    优点:提升采样质量

    缺点:假负例也提升了被采样的概率。GAN 的耗时影响模型训练

    Simplify and Robustify Negative Sampling for Implicit Collaborative Filtering

    考虑到线上流式计算,push 的假负例在负采样中提升了采样频率可能不是件好事!可能负采样针对时间也要降权。

    作者观察到最重要的一点是:false negative 和 hard negative 都会有很大的分数,但是 false negative 有更低的预测方差。

    我是不是可以理解成,hard negative 之所以 hard,是每次训练不收敛。

    但是这个论文,只用在了 CF 上,也就是说,一个sample 会被反复训练,直至模型收敛。

    而在我们 push 流式训练中,无法得到 variance。

    结论:求 variance 没有借鉴意义。但是确实应该区分 false negative vs hard negative

    实验:引入时间 vs negative sample。

    缺点:无法去除天然的假负例,比如:用户没点击,是因为推荐系统已经给他推过类似的文章了。

  • 相关阅读:
    从零开始学习OpenCL开发(一)架构
    Android平台利用OpenCL框架实现并行开发初试
    g++ error: expected nested-name-specifier before 'XXX'
    Linux命令之xargs的分析及隐患
    Linux目录结构
    Linux系统目录/bin /sbin /usr/bin /usr/sbin和/lib /usrlib的一些分析
    rpm包制作
    git与svn的使用比较
    SVN的错误: working copy locked
    Linux远程桌面
  • 原文地址:https://www.cnblogs.com/toonice/p/14987663.html
Copyright © 2011-2022 走看看