增量训练过于牛逼

发现我司online learning 模式好像真的蛮牛逼的,许多公司都是 daily 全量更新或者增量更新。

 

1. 推荐系统模型上线3部曲

  • offline
    • 用7天数据,训练 base, exp 两个模型。用第八天的近接着的一个小时数据来测试,比较 user_auc。如果有提升,用一个月的数据训练一个 offline 模型,推到 nearline 准备做 ab。
  • nearline
    • nearline 大概存着两天的最新数据,需要将 offline 的数据到 nearline的数据做个衔接。进行滚动训练。一般 nearline的数据是一分钟产生一个。
  • online
    • online 模型是一个被动接受的状态,只有 nearline 参数达到一定更新频率以后,才会 push 给 online 模型。online 模型再更新。
  • 更新方式
    • mini_batch + ftrl 
    • 更新的时候会先从参数服务器上pull 参数值, push 后覆盖。(不是存的梯度吗???

 

2. 更新模式

  • 全量更新
    • daily 用全部数据进行训练,daily 迭代。时间窗口最长,时效性最差。
  • 增量更新
    • 在原有模型的基础上,按照新增样本batch跟新。
    • 缺点:收敛到新增样本的最优解上。不是全部样本+新增样本的最优解上。(我理解这是因为,以前的模型状态其实就是相当于一个参数初始化值)
    • 改善:几轮增量训练之后就用业务量较少的时间窗口进行全局更新(这不会有重复样本的问题吗?) ,纠正模型在增量更新过程中积累的误差。

 

  • 在线更新
    • 每获得一个样本就实时更新。(据同事介绍,flink 会 dump 到 hdfs 上传给模型)
    • ftrl 可以在保证稀疏性的情况下,只针对部分特征进行更新。
    • 局部更新
      • “让尖子生能跑多快跑多快"
      • 除了 GBDT,其他都可以支持增量训练。但是问过同事,我们只针对 LR 部分进行增量训练,那其他的部分还是 batch 优化?

参考资料:

https://github.com/wzhe06/Ad-papers/blob/master/Optimization%20Method/%E5%9C%A8%E7%BA%BF%E6%9C%80%E4%BC%98%E5%8C%96%E6%B1%82%E8%A7%A3(Online%20Optimization)-%E5%86%AF%E6%89%AC.pdf

 

3. 优缺点

4. 限制

5. tensorflow-eos

posted @ 2021-02-28 20:39  nuo-o  阅读(435)  评论(0编辑  收藏  举报