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

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

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重