精通推荐算法8:Embedding表征学习 -- 总体架构

2024-05-30 11:21

本文主要是介绍精通推荐算法8:Embedding表征学习 -- 总体架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 Embedding表征学习的总体架构

目前,推荐算法精排模型大多基于Embedding + MLP范式,模型底层是Embedding层,作用是将高维稀疏的输入特征转换为低维稠密的特征向量,并实现一定的模糊查找能力。模型上层是MLP层,作用是对特征向量进行交叉和融合,并提取高阶信息,得到最终输出。Embedding作为推荐模型的第一层,拥有绝大多数参数,意义重大。

Embedding表征学习分为向量构建向量检索两部分。向量构建主要实现Embedding从无到有的过程,其主要方法有序列化建模、图模型构建和端到端学习。向量检索主要解决Top K近邻Embedding检索问题,其主要方法有哈希算法、基于树的算法、向量量化算法和近邻图算法等。

推荐算法Embedding表征学习的知识框架如图1所示。

1  Embedding表征学习的知识框架

2  Embedding概述

Embedding常被称为“嵌入”或“向量”,它可以将高维稀疏特征转换为低维稠密向量,实现降维,其最典型的应用是自然语言处理中的词向量(Word Embedding)。通过Embedding,我们可以将单词间的语义关系转换为向量间的距离关系。例如“书籍”和“书本”,两者语义很相似,词向量的余弦距离也很接近。

在推荐系统中,每个特征值都可以被向量化。例如用户ID、用户性别、物品ID和物品类目等。特征值的物理含义越接近,其Embedding向量距离越短。例如在电商场景中,“拖鞋”和“皮鞋”两个商品类目特征的向量距离,比“拖鞋”和“纸巾”要小,如图2所示。

2  特征值物理含义越接近,Embedding向量距离越短

在深度学习中,Embedding可以通过一个全连接层实现。 原始输入数据通常是一个独热编码向量。由于输入数据一般是独热向量,因此全连接可以退化为一个查表操作。

3 Embedding表征学习的意义

Embedding是大多数推荐算法模型的第一层,其训练质量在很大程度上决定了模型的成败。Embedding表征学习已经在召回和排序等领域得到了广泛应用,意义重大,主要如下。

  • Embedding是模型的第一层,可以将高维稀疏的输入特征转换为低维稠密的特征向量,输入上层全连接神经网络。同时,它包含大量语义信息,可以很好地度量特征间的相似度,并具备一定的模糊查找能力。一般来说,两个特征越相似,其Embedding向量距离越短。
  • Embedding可以用于预训练。为了加快训练速度,可以将当前模型的Embedding作为下一版模型或者兄弟场景模型的预训练参数,从而实现热启动(Warm Start)。Embedding一般拥有推荐模型的绝大部分参数,因此模型训练速度往往取决于Embedding的收敛速度。预训练Embedding可以加快模型训练速度,并减少对样本量的依赖。另外,对于长尾特征Embedding难收敛的问题,预训练一般也能起到一定作用。
  • Embedding可以应用在召回和排序等很多领域。利用Embedding向量可以计算任意用户和物品的相似度,从而为目标用户推荐与其距离最近的Top K物品,这就是典型的u2i召回。Embedding还可以计算物品和物品间的相似度,从而基于目标用户点击过或购买过的物品,推荐与之最相似的Top K物品,这就是典型的i2i召回。需要注意的是,不要直接把排序模型的Embedding用在召回任务上,二者的候选集和优化目标差别很大。

4  Embedding表征学习的基本范式

Embedding训练一直以来都是推荐算法中的难点,因为其参数规模很大,导致收敛速度慢。Embedding的训练方法主要有以下几种。

  • 端到端学习。最简单的方法是将Embedding层参数随机初始化,然后和模型其他层一起训练。这种方法的一致性很好,可以保证Embedding与模型其他层的目标完全一致,但缺点也很明显,主要是整体训练速度受限于Embedding的收敛速度,且需要大量样本。除了随机初始化,还可以利用上一版模型或者兄弟场景模型对Embedding参数初始化,然后微调(Finetune),从而加快模型收敛速度。
  • 序列化建模。类似于自然语言处理中的Word2vec,基于Skip-gramCBOW算法对用户行为序列构建正负样本并训练模型,最终得到EmbeddingItem2vec便采用了这种方法,6.2节会重点阐述。
  • 图模型构建。先利用用户行为构建用户和物品关系图,然后训练模型并得到图节点的Embedding,主要有游走类图神经网络两种方式。其中,游走类可以利用物品ID构建同构图,例如DeepWalkNode2vec;也可以加入物品属性特征,构建异构图,例如Metapath2vecEGES。图神经网络是一个很大的技术方向,也是目前推荐算法中比较前沿的技术,可以使用GraphSAGEGATDGIGraphSAINTAdaGCN等经典模型,6.36.46.5节会重点阐述。

Skip-gram模型结构

DeepWalk的主要实现步骤

Metapath2vec和Metapath2vec++的Skip-gram网络结构图

EGES模型结构图

GraphSAGE应用流程图

5 Embedding表征学习的主要难点

Embedding表征学习的难点主要如下。

  • 参数规模大,存储资源消耗大。特别是用户ID和物品ID等高维稀疏特征,其枚举值很多,必须使用维度较高的Embedding向量才能对其进行充分表征。Embedding的维度一般建议取特征枚举值个数的四次方根,枚举值多,向量维度高,会导致参数规模过大。Embedding通常会占据模型体积的80%以上,消耗极多的存储资源。
  • 收敛速度慢,训练时间长。从梯度下降反向传播中可以看出,输入特征为0Embedding向量无法更新。特征输入层往往比较稀疏,其他层则稠密得多,这导致Embedding层参数的训练机会比其他层少很多。另外,Embedding层需要训练的参数很多,这加剧了其收敛速度慢的问题。一般来说,模型整体训练时间取决于Embedding层的收敛速度,预训练Embedding对缓解这一问题有一定的作用。
  • 长尾不收敛,冷启动效果不好。长尾特征值在样本中出现的概率低、数据稀疏,容易出现不收敛的问题,特别是对于用户ID和物品ID等高维特征,收敛难度更大,对冷启动造成了很大影响。近几年,Group Embedding方法的应用对缓解这一问题起到了一定的作用。

这篇关于精通推荐算法8:Embedding表征学习 -- 总体架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06