总结提纲--经典算法(推荐系统)

2024-01-11 09:48

本文主要是介绍总结提纲--经典算法(推荐系统),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2016--Yoube--视频推荐DNN

召回阶段也用了DNN(别人家都是用CF、基于内容、基于社交网络等): 输入是{用户画像(包括用户行为video集合+用户行为过的搜索词集合+用户属性),context(地理位置信息...)},输出是(百万个video,每个是一个类别);损失函数是softmax+交叉熵损失;用户实际观看完的video做正样本,用negative-sampling选负样本(一个正样本和上千个负样本,在一次softmax里进行更新);

召回阶段,训练时DNN的输出u视作用户编码向量,和百万个w向量点乘,得到百万个z,通过softmax得到百万个概率p;预测时,可以把百万个w向量看作video编码向量(因为要求的是u和w点乘最大的那上百个w们),所以可以把w放到库里,用KNN检索来近似点乘内积最大;

Ranking阶段: 输入是:{用户画像(包括用户行为video集合+用户属性),context,一个候选video(主要是ID)}; 输出是:一个经过sigmoid后的概率p;

2016--Google--应用商店推荐Wide&Deep

wide侧:人工做特征交叉,负责记忆,倾向于给用户推他已经点击过的东西;

deep侧:embedding+DNN,负责泛化,倾向于给用户推的东西更多样性;(注意:deep侧最后一层的几百个输出值,要和wide几百个交叉后的特征,一起加权相加,再经过softmax,也就是几百对几百,才平衡)

2017--华为--应用商店推荐DeepFM

和Wide&Deep的区别:wide侧用的FM二阶特征交叉,比之前手工特征工程要高效;FM向量和Deep向量是复用的,联合训练;

2017--Google--广告CTR预估公开数据集上的Deep&Cross

和Wide&Deep的区别:wide侧用Cross网络来自动构造有限高阶的交叉特征; 比Deep侧的参数少很多( O(层数*w的维度))

Cross结构:竖着的原始输入x0 * 横着的上层网络输出x^{_{}^{T}} * 竖着的权重向量w + bias向量b + 竖着的上层网络输出x(这项是借鉴了ResNet,让前面的网络只拟合残差

2018--MSRA--xDeepFM

自动构造输入向量的“高阶”特征组合;可惜工业界实际效果一般比不过Wide&Deep和DeepFM;时间复杂度高是痛点;容易过拟合(可对特征做离散化,加dropout来解决)

2018--阿里妈妈--转化率CVR预估

1. ESMM 根据用户行为序列,显示引入CTR和CTCVR作为辅助任务,“迂回” 学习CVR,从而在完整样本空间下进行模型的训练和预测,解决了CVR预估中的2个难题。

2. 可以把 ESMM 看成一个新颖的 Multi-Task-Learning 框架,其中子任务的网络结构是可替换的,当中有很大的想象空间。

2018--阿里--电商广告CTR上的DIN

在Embedding+DNN的基础上,用候选Item和用户行为Item的Attention做权重,对用户行为Item序列做了带权pooling

原理是对用户行为序列进行了按候选Item的不同而区分性对待,每个行为的权重是不同的;

2018--阿里--电商广告CTR上的DIEN

(和DIN的区别只有用户行为序列编码那里)

1.引入RNN对用户行为序列建模;(用户行为序列是时间上的序列,所以很自然联想到RNN)

2.对序列里的中间兴趣和下一时刻的输入行为,进行了相关度建模(附加损失函数对RNN进行了增强);

3.用每时刻的兴趣和该ad特征进行了相关性概率计算,作为下一层GRU单元的update-gate的输入,影响“当前兴趣”和“记忆兴趣”之间的取舍程度;(借鉴了AGRU,把Attention引入RNN,即用户的总的兴趣只和一部分用户行为有关)

2019--阿里--淘宝电商推荐的BST(Transformer)

(和DIN的区别只有用户行为序列编码那里)

Transformer把用户行为序列和候选item放一起进行特征抽取,所有时刻的输出向量都concatenate起来(行为序列固定长度20,不够就padding)

Transformer的套路:Multi-Head Self-Attention,FFN,position embedding

2019--Facebook--DLRM(主要是工程方面;效果和DCN基本持平,还号称state-of-the-art)

dense特征,经过bottom MLP的变换,得到一个embedding; 和类别特征的embedding们(可选的经过MLP后的向量),两两之间做向量点乘(类似FM的思想),得到的很多乘积串成一个向量,输入到top MLP里面,最后过sigmoid得到点击概率;

Model并行:输入Embedding占内存太大,所以存放在多个device上;

Data并行:top MLP的参数量小,所以每个device上都复制一份,但是处理不同的训练数据;

Embedding的All-to-All通信;MLP梯度的AllReduce;

2016--微软--Item2Vec

把同一个用户点击过的item集合视为sentence,把item视为word,窗口无限大,进行skip-gram&negative-sampling训练,得到的词向量就是item-embedding; 可用于神经网络的输入初始化值,以加快收敛;

同理,User2Vec也行,把item上点击过的用户集合视为sentece, 把用户视为word,得到user-embedding;

本质是基于ItemCF/UserCF协同过滤的,用户点击item的行为为依据;

我的想法:训练item2vec的时候,把该用户对应的集合也用一个embedding表示,参与训练,也能捎带得到user-embedding啊,类似sentence-embedding那种;

这篇关于总结提纲--经典算法(推荐系统)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593961

相关文章

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创