第四范式 程晓澄:机器学习在推荐系统中的应用

勇正初

2017/11/14 发布于 技术 分类

此次分享将简述工业实践中对推荐系统产品上、性能上、算法上的要求,分享一些推荐系统架构,并举例说明如何较好的解耦实现上述需求,使系统易于维护和扩展,从而使推荐系统更好的服务企业需求。

文字内容
1. SACC2017
2. 推程晓荐澄@系第统四S范A的式C架2C01构27.10演01.217进
3. 第四范式 守正 · 出奇 AI For Everyone 一切以为客户创造价值为出发点,突破思维,同时不固守常规 SACC2017
4. 前言 推推荐荐系系统统的当下诞生的土基本壤S和架A早构C期C演进2017 搭建一个推荐系统
5. 前言 推荐系统的诞生土壤和早期演进 SACC2017推荐系统当下的基本架构 • 召回 • 排序 • 优化列表 • 诞生土壤 • 按经验策略排序阶段 • 机器学习阶段 搭建一个推荐系统 • 工程实践 • 机器学习实践 • 研究热点
6. 前言 SACC2017推荐系统的诞生土壤和早期演进 推荐系统当下的基本架构 • 诞生土壤 • 按经验策略排序阶段 • 机器学习阶段 • 召回 • 排序 • 优化列表 搭建一个推荐系统 • 工程实践 • 机器学习实践 • 研究热点
7. 推荐系统的诞生土壤 SACC2017• 1995 :亚马逊网上书店 • 1998 :Yahoo! -> Google • 2004 :门户网站 -> web2.0 • *信息分发
8. 什么是好的帖子:聪明才智 + 经验 rank • Reddit / Quora / Stack Overflow • 大众点评 / 糗事百科 • facebook newsfeed @ 2006 SACC2017
9. 什么是好的帖子:聪明才智 + 经验 rank • 离线计算: • for (item in all_items): • score = score_func(item) 017• “UPDATE item SET score = %d”% score C2• 在线查询 SAC• “SELECT item_id FROM item ORDER BY score”
10. 什么是好的网站:聪明才智 + 经验 rank • Google PageRank,季度更新 SACC2017
11. 什么是好的帖子:聪明才智 + 经验 rank • 离线计算: • Map-reduce / MPI: 矩阵迭代计算 • 在线查询 SACC2017• “SELECT score FROM item WHERE page_id = %s”% page_id
12. 协同过滤 • 评分矩阵 • user based recommendation • item based recommendation SACC2017
13. 协同过滤 • 离线计算: • Map-reduce: • sim[i][j] = sim_score_func(i, j) 017• redis.set(“%s_sim_items”% i,sorted(score[i])) C2• 在线查询 SAC• redis.get(“%s_sim_items”% item_id)
14. 不足 • 评分 = 写死的公式(统计数据) ‣ 抽象假设:用户喜欢看相似的内容、用户喜欢相似的人的推荐 ‣ 实施环节:这个相似度的度量方式是好的 7• 真的吗 01‣ 每个用户都喜欢这样的推荐吗? C2‣ 每个 item 的相似都是这样度量的吗? SAC‣ 每个 item 、每个 category 的权重、表达的信息含量一样吗? ‣ 如果不是,那是怎样的? ‣ 有没有更好的假设? • 比随机或热度好, • 能否有更丰富的假设,并针对每个用户的正负反馈自我修正、选择能力
15. 机器学习 • 监督学习 • Y = f(X) • 损失函数 Cost: • cost(Y, g(X)) • 优化算法 A: • 最小化 cost • 使 g 逼近于 f SACC2017
16. 机器学习 • 监督学习 • Y = f(X) , 如 Y = ax1 + bx2 + c • 损失函数 Cost: 17• cost(Y, g(X)) , 如 ( Y – g(x) )2 C20• 优化算法 A: SAC• 最小化 cost • 找到最佳 parameters:{a=3,b=4,c=2} • 使 g 逼近于 f , g(x) = 3x1 + 4x2 + 2 Y :点击率 / 观看时长 / 评分 / 其他量化体验或营收的值
17. 矩阵分解 • 2007年 NETFLIX • $1million • Y = f(X) • rating = f(u, i) SACC2017
18. 局限 • 用到的信息只有 uid,iid,历史评分 • 新用户、新内容就无法刻画了吗? • 用户的信息、内容的特征无法利用吗? SACC举2例017
19. 为机器学习模型注入更多的特征 • 为了用上更多的特征,把更多的猜想、假设空间扔给机器学习引擎去学习 • Y = f(X) = f(user_info, item_info, context, 17• user_history, item_history, SACC20• score, rank, similarity, …) • 成为广告投放、搜索排序、电商、内容推荐领域的核心引擎
20. 机器学习 • 离线计算 基于参数服务器: • 十亿级别训练数据,亿级别特征数,多 worker 异步更新 • for i in range(PASS_NUMBER): 7• @async 201• for worker in workers: CC• while(training_instances = fetch_training_instances(instance_count=100)): SA• parameters_grad = sgd(training_instances). • parameter_server.update(parameters_grad) • parameters = dump_result_from_parameter_server() • 在线查询 • score = f(parameters, user_features, item_features, …) //百千级别parameters量
21. 前言 推荐系统的诞生土壤和早期演进 SACC2017推荐系统当下的基本架构 • 召回 • 排序 • 优化列表 搭建一个推荐系统 • 工程实践 • 机器学习实践 • 研究热点 诞生土壤 按经验策略排序阶段 机器学习阶段
22. 典型架构 候选集召回 关注的人、内容 人群、地域 我们认为你可 能喜欢的 机器学习推荐模型排序 SACC2017对选出内 容进行转 化率预估 模型 从客户提供的数百亿内容中选出数千 大规模机器学习模型排序 线上实时产生并更新 重排序,生成 推荐列表 高转 化推 荐 低转 化推 荐 高转 优化 推荐列表结构 化推 荐 保证内容多样性 保证内容新鲜 综合多种来源 低转 化推 荐 基于场景进行去重、多样性控制、 加权,生成最终的推荐列表
23. 典型架构-召回 • 排序召回 • 最新、最热、最近、最常光顾、 • 各种经验上的评分公式… • 简单模型、rank 召回 • item based / user based • 矩阵分解… SACC2017 • 规则召回 • 天气、近期搜索浏览、朋友的购买、同期过往习惯…
24. 排序:考虑更多的因素 1 秋天到了,推荐的商品应季吗? SACC20172 他在回家的路上,手机信号4G 3 他在你的app上非常活跃,有大量的社交行为 用户 4 这是他在你平台买过的裤子,代表了他的品味 5 他在什么地方?
25. 排序:考虑更多的因素 1 秋天到了,推荐的商品应季吗? • 时间、季节、周日 SACC20172 他在回家的路上,手机信号4G • 运营商信息、连接方式 3 他在你的app上非常活跃,有大量的社交行为 • 行为的序列、社交关系 用户 4 这是他在你平台买过的裤子,代表了他的品味 • 历史行为内容序列 5 他在什么地方? • GPS 坐标、运营商信息、IP地址
26. 典型架构-排序 SACC2017 时间、社交关系、GPS、 .... 商品属性、卖家信息、价格.... Rank、Score、Similarity 观看、收藏、购买、搜索序列(embedding) 图片信息(CNN) 文字信息(word2vec)
27. 典型架构-生成推荐结果 • 优化整体体验 • 多样化 • Exploit vs Explore • 准确性 vs 多样性 vs 新颖 性 SACC2017
28. 前言 推荐系统的诞生土壤和早期演进 SACC2017推荐系统当下的基本架构 • 召回 • 排序 • 优化列表 搭建一个推荐系统 • 工程实践 • 机器学习实践 • 研究热点 诞生土壤 按经验策略排序阶段 机器学习阶段
29. 工程实践:线上请求 物料库召回(CF、MF) 关注的人、内容 人群、地域 我们认为你可 能喜欢的 关系数据库、NoSQL、缓存 机器学习推荐模型排序 SACC2017对选出内 容进行转 化率预估 模型 读取模型参数进行计算 线上实时产生并更新 高转 化推 荐 低转 化推 荐 定制化重排 序,生成推荐 列表 高转 优化 推荐列表结构 化推 荐 保证内容多样性 保证内容新鲜 综合多种来源 低转 化推 荐 基于场景进行去重、多样性控制、 加权,生成最终的推荐列表
30. 工程实践:线下数据流闭环 • 实现或应用一个推荐系统 • 物料库 • 原始特征记录 • 反馈数据拼接 SACC2017
31. 工程实践:数据分析、算法实验 “一个象棋大师会被一个每回合走两步的业余选手轻松击败” SACC2017
32. 用户的困惑 SACC2017
33. 工程实践:数据分析、算法实验 “一个象棋大师会被一个每回合走两步的业余选手轻松击败” • 可响应产品、性能、算法需求的架构 • 可同时进行大量实验的环境机制 SACC2017
34. 机器学习实践面临的挑战 SACC2017
35. 研究 Y = f(X) Y: 17产品、交互设计 20X : CC特征更多种类的特征:挖掘图像、音频、文本特征、Session 类特征 SA特征工程:通过特征组合、特征变换,丰富假设空间 f: 模型抽象与相匹配的优化算法
36. 商务合作 SACC2017