参考: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上应用的综述的更多相关文章

  1. 各大公司广泛使用的在线学习算法FTRL详解

    各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...

  2. 各大公司广泛使用的在线学习算法FTRL详解 - EE_NovRain

    转载请注明本文链接:http://www.cnblogs.com/EE-NovRain/p/3810737.html 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression ...

  3. 行人重识别(ReID) ——基于深度学习的行人重识别研究综述

    转自:https://zhuanlan.zhihu.com/p/31921944 前言:行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视 ...

  4. Alink漫谈(十二) :在线学习算法FTRL 之 整体设计

    Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 目录 Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 0x00 摘要 0x01概念 1.1 逻辑回归 1.1.1 推导过程 ...

  5. Alink漫谈(十三) :在线学习算法FTRL 之 具体实现

    Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 目录 Alink漫谈(十三) :在线学习算法FTRL 之 具体实现 0x00 摘要 0x01 回顾 0x02 在线训练 2.1 预置模型 ...

  6. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  7. 我是怎么开发一个小型java在线学习网站的

    2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...

  8. HTML5初学者福利!11个在线学习网站推荐

    HTML5初学者福利!11个在线学习网站推荐 HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习.而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...

  9. 初学者福音——10个最佳APP开发入门在线学习网站

    根据Payscale的调查显示,现在的APP开发人员的年薪达到:$66,851.这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一.每当你打开App Store时候,看着琳琅满目的A ...

随机推荐

  1. 路径定义前+r

    定义文件路径时前面加个r 例如 firstfolder = r"C:\Users\1261\Desktop\" 不对其中的符号进行转义

  2. Datediff的使用(统计本日,昨日,本周,本月)

    //统计本日,昨日,本周,本月添加的产品总数 //日期            DateTime DT = DateTime.Now;            string day=DT.Date.ToS ...

  3. 用python写一个名片管理系统

    info = [] #先定义一个空字典while True: #利用while循环 print(' 1.查看名片') #第一个选项 print(' 2.添加名片') #第二个选项 print(' 3. ...

  4. struts2+mybatis3+log4j2+bulma+mysql8元工程

    https://pan.baidu.com/s/1Z1YklkKEKrzhS7uM9w6ewQ https://pan.baidu.com/s/1Z1YklkKEKrzhS7uM9w6ewQ

  5. C# 对结构体和指针的使用

    //结构体的定义 [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]        pub ...

  6. 2018上C语言程序设计(高级)- 第1次作业成绩

    作业地址 https://edu.cnblogs.com/campus/hljkj/CS2017-01/homework/1638 评分准则 第一次作业各项成绩包括三项: 完成PTA所有题目:20分 ...

  7. .NET Framework 4.0/4.5离线版下载

    /******************************************************************************* * .NET Framework 4. ...

  8. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  9. Visual C++ 6.0中互换两个数字

    就好比如两杯水,需要三个杯子将这两杯水互换.互换数字就要用一个中间变量. # include <stdio.h> int main(void) { int i; int j; int k; ...

  10. 解决Ubuntu19.04下网易云音乐打不开的问题

    Ubuntu19.04下打开网易云音乐的v18.04版会出现以下错误: opt/netease/netease-cloud-music/netease-cloud-music: symbol look ...