在线学习在CTR上应用的综述
参考:https://mp.weixin.qq.com/s/p10_OVVmlcc1dGHNsYMQwA
在线学习只是一个机器学习的范式(paradigm),并不局限于特定的问题,模型或者算法。

架构
如图1所示,流式训练数据生成的环节还会继续保留,原有的流式训练数据生成拓扑后面会直接接一个流式模型更新的拓扑,训练数据不是先落地HDFS然后再从HDFS加载,而是直接用于模型更新。架构中会有一个逻辑上的参数服务器用来存放模型,不同的在线学习模型和算法需要在参数服务器和流式训练拓扑中编写代码来实现特定于该模型和算法的更新方法。随着训练数据生成拓扑和模型更新拓扑的运行,参数服务器中存放的模型会得到持续不断的更新。与此同时,这样的更新也会同步给实时推荐引擎,从而立即用于线上的推荐。
可以看到,从事件(点击/曝光/转化等等)发生,到形成一条日志,再到形成一条训练数据,再到模型更新,再到用于线上推荐,整个过程都是流式的,从头到尾的平均延迟可以做到秒级。与此同时,无论是训练数据生成和模型更新两个拓扑,还是参数服务器,都具有良好的伸缩性,可以支持大规模的模型和大数据流。
模型和算法考量
正如前面提到的,可以划到在线学习这个范式里面的模型和算法有很多,而且还在不断增加。比较著名的有FTRL-Proximal[5]和AdPredictor[6],这两个都是工业界有过大规模应用的,自然是被竞相效仿的对象。关于它们的原理和实现的细节可以阅读原始文献,本系列的后续文章也会有介绍。
依个人浅见(仅供参考),这两个模型和算法代表了两大类实现在线学习的思路,这里我们粗糙地借用一下wikipedia的分类法[8]。一类是所谓的对抗学习模型(adversarial model),FTRL-Proximal可归入此类,这类模型和算法的目标是在在线的场景下最小化“后悔(regret)”。这个思路也常被称作是在线(随机)优化(online stochastic optimization)。另一类是所谓的统计学习模型(statistical learning model),按照wikipedia的说法,这类模型和算法的目标是最小化期望“风险(risk)”。然而,个人认为这个思路放到贝叶斯推理(bayesian inference)的框架下才能释放其最大价值。实际上,适用于各类概率图模型(probabilistic graph model)的贝叶斯推理算法有很多,其中不乏适用于在线学习场景的,AdPredictor就是一个例子。无论是在线(随机)优化,还是贝叶斯推理,背后都有比较完善的理论支持,且有大量的文献。作为初窥门径的实用主义者,笔者在这里斗胆提到它们,只是为了分享寻找,设计和选择在线学习模型和算法时的一点思路。
3.3 系统考量
比较著名的有FTRL-Proximal和AdPredictor,这两个都是工业界有过大规模应用的,自然是被竞相效仿的对象。这两个模型和算法代表了两大类实现在线学习的思路。一类是所谓的对抗学习模型(adversarial model),FTRL-Proximal可归入此类,这类模型和算法的目标是在在线的场景下最小化“后悔(regret)”。这个思路也常被称作是在线(随机)优化(online stochastic optimization)。另一类是所谓的统计学习模型(statistical learning model),这类模型和算法的目标是最小化期望“风险(risk)”,放到贝叶斯推理(bayesian inference)的框架下。实际上,适用于各类概率图模型(probabilistic graph model)的贝叶斯推理算法有很多,其中不乏适用于在线学习场景的,AdPredictor就是一个例子。无论是在线(随机)优化,还是贝叶斯推理,背后都有比较完善的理论支持,且有大量的文献。
在线学习在CTR上应用的综述的更多相关文章
- 各大公司广泛使用的在线学习算法FTRL详解
各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...
- 各大公司广泛使用的在线学习算法FTRL详解 - EE_NovRain
转载请注明本文链接:http://www.cnblogs.com/EE-NovRain/p/3810737.html 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression ...
- 行人重识别(ReID) ——基于深度学习的行人重识别研究综述
转自:https://zhuanlan.zhihu.com/p/31921944 前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视 ...
- Alink漫谈(十二) :在线学习算法FTRL 之 整体设计
Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 目录 Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 0x00 摘要 0x01概念 1.1 逻辑回归 1.1.1 推导过程 ...
- Alink漫谈(十三) :在线学习算法FTRL 之 具体实现
Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 目录 Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 0x00 摘要 0x01 回顾 0x02 在线训练 2.1 预置模型 ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- 我是怎么开发一个小型java在线学习网站的
2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...
- HTML5初学者福利!11个在线学习网站推荐
HTML5初学者福利!11个在线学习网站推荐 HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习.而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...
- 初学者福音——10个最佳APP开发入门在线学习网站
根据Payscale的调查显示,现在的APP开发人员的年薪达到:$66,851.这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一.每当你打开App Store时候,看着琳琅满目的A ...
随机推荐
- 纯粹的python绑定
目前很多学习资料这样解释赋值与绑定,当是一个简单变量时,是赋值,当是复合变量时,是绑定. 注:赋值是重新复制变量到新变量中,赋值前后两个变量之间无联系.例C语言中: int a=6: int b: b ...
- linux nginx 如何配置多个端口
在linux下发布.netcore 应用,并使用nginx进行反向代理,参照博客园文章 https://www.cnblogs.com/ants/p/5732337.html#autoid-7-3-0 ...
- Cannot create PoolableConnectionFactory (Communications link failure The last packet sent successfu
SQL: Cannot create JDBC driver of class '' for connect URL 使用数据库数据源的web 项目,发布后,访问数据库500报错: 浏览器端: 控制台 ...
- Django_web框架的理解
web框架的本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while T ...
- vue day6 分页显示
@{ ViewBag.Title = "Home Page"; Layout = null; } <!DOCTYPE html> <html> <he ...
- UE4 材质编辑
1.颜色反转(纹理颜色白变黑,黑变白)
- AGC002 F - Leftmost Ball
貌似哪里讲过这题..总之当时掉线了(理解能力又差水平又低选手的日常).. 看看题目,应该是DP. 尝试了几次换状态,毫无思路.那我们就来继续挖掘性质吧...为了更直观,我们令第i个出现的球颜色就是i( ...
- 编译原理作业(第一次)-完成retinf.c(阉割版)
首先,作业要求概括如下: 根据前缀表达式文法,实现statements() 和expression() 两个函数. 并且要求使得语义分析在完成分析前缀表达式并输出中间代码的同时,也能够将前缀表达式翻译 ...
- 关于使用git上传远程仓库的两种情况(新项目与老项目)
具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...
- 学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习
MNIST 卷积神经网络.https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py .Ten ...