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

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

相关文章

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用