0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将神经网络用于推荐系统应用

星星科技指导员 来源:NVIDIA 作者:Benedikt Schifferer 2022-04-22 10:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

深度学习( Deep learning , DL )是解决计算机视觉或自然语言等机器学习问题的最新方法,它的性能优于其它方法。最近的趋势包括将 DL 技术应用于推荐引擎。许多大型公司,如 AirBnB 、 Facebook 、 Google 、 Home Depot 、 LinkedIn 和 Pinterest ,都分享了他们将 DL 用于推荐系统的经验。

最近, NVIDIA 和 RAPIDS 。 AI 团队与 DL 赢得了三场比赛: VZX1 、 信号和日期挑战 和 ACM WSDM2021 Booking 。 com 挑战赛 。

推荐系统的领域是复杂的。在这篇文章中,我将重点介绍神经网络体系结构及其组件,例如嵌入层和完全连接层、递归神经网络单元( LSTM 或 GRU )和变压器块。我讨论了流行的网络架构,比如 Google 的 Wide & Deep 和 Facebook 的 Deep Learning Recommender Model ( DLRM )。

DL 推荐系统的优点

有许多不同的技术来设计推荐系统,例如关联规则、基于内容或协同过滤、矩阵分解或训练线性或基于树的模型来预测交互可能性。

使用神经网络的优点是什么?一般来说, DL 模型可以获得更高的精度。首先, DL 可以利用额外的数据。许多传统的机器学习技术需要更多的数据。但是,当您增加神经网络的容量时,该模型可以使用更多的数据来提高性能。

第二,神经网络的设计是灵活的。例如,您可以针对多个目标(多任务学习)训练 DL 模型,例如“用户是否将项目添加到购物车中?”、“使用项目开始结账?”、或“购买项目?”。每个目标都有助于模型从数据中提取信息,并且目标可以相互支持。

其他设计方法包括向推荐模型中添加多模态数据。您可以通过使用卷积神经网络处理产品图像或使用 NLP 模型处理产品描述来实现这一点。神经网络应用于许多领域。您可以将新开发(如优化器或新层)转移到推荐系统。

最后, DL 框架经过了高度优化,可以处理各种域的数 TB 到数 PB 的数据。下面是如何为推荐系统设计神经网络。

基本构造块:嵌入层

嵌入层用密集向量表示类别。这种技术在自然语言处理中非常流行,可以嵌入具有密集表示的单词。具有相似意义的词具有相似的嵌入向量。

您可以将相同的技术应用于推荐系统。最简单的推荐系统是基于用户和项目的:您应该向用户推荐哪些项目?您有用户 ID 和项目 ID 。单词是 users 和 items ,因此使用两个嵌入表(图 1 )。

pYYBAGJiDsCAKBl2AADJPefLtp4158.png

图 1 。嵌入维度为 4 的表

计算用户嵌入和项目嵌入之间的点积,得到最终分数,即用户与项目交互的可能性。最后一步可以应用 sigmoid 激活函数将输出转换为 0 到 1 之间的概率。

latex.php?latex=dot+product%3A+u+%5Ccdot+v+%3D+%5CSigma+a_i+%5Ccdot+b_i&bg=ffffff&fg=000&s=2&c=20201002

poYBAGJiDsGAUHxvAACFEkyRuNM823.png

图 2 。具有两个嵌入表和点积输出的神经网络

该方法等价于矩阵分解或交替最小二乘法( ALS )。

具有完全连接层的较深模型

神经网络的性能是基于具有多个非线性层的深层结构。通过将嵌入层的输出通过多个具有 ReLU 激活的完全连接层提供,可以扩展先前的模型。

一个设计选择是如何组合两个嵌入向量。您可以仅串联嵌入向量,也可以将向量逐元素相乘,类似于点积。输出之后是多个隐藏层。

pYYBAGJiDsKAdwFBAADV4f76e1M154.png

图 3 。具有两个嵌入表和多个完全连接层的神经网络

向神经网络中添加元数据信息

到目前为止,您只使用了用户 ID 和产品 ID 作为输入,但是您通常可以获得更多的信息。其他用户信息可以是性别、年龄、城市(地址)、自上次访问以来的时间或用于支付的信用卡。一件商品通常有一个品牌、价格、类别或在过去 7 天内售出的数量。这些信息有助于模型更好地推广。修改神经网络以使用附加特征作为输入。

poYBAGJiDsKAeI4QAACDPv33ycM555.png

图 4 。具有元信息和多个完全连接层的神经网络

流行建筑

嵌入层和完全连接层是理解一些最新出版的神经网络结构的主要组成部分。在这篇文章中,我将从 2016 年开始报道谷歌的广度和深度,从 2019 年开始报道 Facebook 的 DLRM 。

谷歌的广度和深度

谷歌的广度和深度包含两个部分:

记忆共同特征组合的宽塔

用来概括罕见或未观察到的特征组合的深塔

创新之处在于,这两个组件同时训练,这是可能的,因为神经网络是灵活的。深塔通过嵌入层提供分类特征,并将输出与数字输入特征连接起来。级联向量通过多个完全连接的层馈送。

你听上去熟悉吗?是的,那是你以前的神经网络设计。新的组成部分是宽塔,它只是输入特征的线性组合,具有类似的线性/逻辑回归。每个塔的输出相加,得到最终的预测值。

Facebook 的 DLRM

Facebook 的 DLRM 与带有元数据的神经网络结构类似,但有一些特定的差异。数据集可以包含多个分类特征。 DLRM 要求所有的分类输入都通过一个具有相同维数的嵌入层。稍后,我将讨论这一点的重要性。

接下来,将连续的输入串联起来并通过称为底部多层感知器( MLP )的多个完全连接的层馈送。底层 MLP 的最后一层具有与嵌入层向量相同的维数。

DLRM 使用了一个新的组合层。它在所有嵌入向量对和底部 MLP 输出之间应用按元素相乘。这就是为什么每个向量都有相同的维数。所得到的向量被串联并馈送到另一组完全连接的层(顶部 MLP )。

pYYBAGJiDsOAbM9wAAE9ps7wIZ0181.png

图 5 。左侧显示广度和深度架构,右侧显示 DLRM 架构。

基于会话的推荐系统

当我为推荐系统分析不同的基于 DL 的体系结构时,我假设输入具有表格数据结构,而忽略了用户交互的本质。但是,用户在访问网站时,在一个会话中有多个交互。例如,他们访问一家商店并查看多个产品页面。您可以使用用户交互序列作为输入来提取模式吗?

在一个会话中,用户连续查看多条牛仔裤,您应该推荐另一条牛仔裤。在另一个会话中,同一个用户连续查看多双鞋,您应该推荐另一双鞋。这就是基于会话的推荐系统背后的直觉。

谢天谢地,您可以将 NLP 中的一些技术应用于推荐系统域。用户的交互具有顺序结构。

pYYBAGJiDsWAWB7HAAEAE9DMGpA620.png

图 6 。基于会话的神经网络体系结构

序列可以通过使用递归神经网络( RNN )或基于变压器的结构作为序列层来处理。用嵌入向量表示项目 ID ,并通过序列层提供输出。序列层的隐藏表示可以添加为深度学习体系结构的输入。

其他选择

当我把这篇文章的重点放在将 DL 应用于推荐系统的理论上时,我没有涉及到很多其他的挑战。我在这里简要介绍一下,以提供一个起点:

嵌入表可以超过 CPUGPU 内存。由于在线服务可能有数百万用户,嵌入表可以达到数兆字节。 NVIDIA 提供了 HugeCTR 框架,可以将嵌入表扩展到 CPU 或 GPU 内存之外。

在培训期间最大限度地利用 GPU 。基于 DL 的推荐系统有一个浅层的网络结构,只有几个完全连接的层。数据加载器有时是训练管道中的瓶颈。为了抵消这一点, NVIDIA 为 PyTorch 和 TensorFlow 开发了一个 高度优化的 GPU 数据加载器 。

生成建议需要对用户项对进行评分。最坏的情况是预测所有可用产品的可能性,并选择最佳产品。在实践中,这是不可行的,候选人产生了一个低开销的模型,如近似近邻。

概括

这篇文章向您介绍了基于 DL 的推荐系统。我首先介绍了基于两个输入的基本矩阵分解,然后介绍了使用 transformer 层的最新基于会话的体系结构。

您可以使用递归神经网络( RNN )或基于转换器的体系结构作为序列层来处理序列。用嵌入向量表示项目 ID ,并通过序列层提供输出。添加序列层的隐藏表示作为 DL 架构的输入。

关于作者

Benedikt Schifferer 是 NVIDIA 的深度学习工程师,致力于推荐系统。在他在 NVIDIA 的工作之前,他毕业于纽约哥伦比亚大学的数据科学硕士,并为德国电子商务公司开发了推荐系统。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5496

    浏览量

    109091
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123905
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    :   神经网络卷积函数   神经网络激活函数   全连接层函数   神经网络池化函数   Softmax 函数   神经网络支持功能   该库具有
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    CICC2033神经网络部署相关操作

    读取。接下来需要使用扩展指令,完成神经网络的部署,此处仅对第一层卷积+池化的部署进行说明,其余层与之类似。 1.使用 Custom_Dtrans 指令,权重数据、输入数据导入硬件加速器内。对于权重
    发表于 10-20 08:00

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经结构,尽管这种微生物的
    的头像 发表于 09-28 10:03 704次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    神经网络专家系统在电机故障诊断中的应用

    摘要:针对传统专家系统不能进行自学习、自适应的问题,本文提出了基于种经网络专家系统的并步电机故障诊断方法。本文小波神经网络和专家
    发表于 06-16 22:09

    神经网络RAS在异步电机转速估计中的仿真研究

    众多方法中,由于其结构简单,稳定性好广泛受到人们的重视,且已被用于产品开发。但是MRAS仍存在在低速区速度估计精度下降和对电动机参数变化非常敏感的问题。本文利用神经网络的特点,使估计更为简单、快速
    发表于 06-16 21:54

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序txt文件转化为coe
    的头像 发表于 06-03 15:51 897次阅读
    基于FPGA搭建<b class='flag-5'>神经网络</b>的步骤解析

    BP神经网络与卷积神经网络的比较

    BP神经网络与卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈神经网络
    的头像 发表于 02-12 15:53 1307次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1585次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算
    的头像 发表于 02-12 15:18 1274次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural N
    的头像 发表于 02-12 15:15 1340次阅读

    BP神经网络的基本原理

    BP神经网络(Back Propagation Neural Network)的基本原理涉及前向传播和反向传播两个核心过程。以下是关于BP神经网络基本原理的介绍: 一、网络结构 BP神经网络
    的头像 发表于 02-12 15:13 1518次阅读

    BP神经网络在图像识别中的应用

    BP神经网络在图像识别中发挥着重要作用,其多层结构使得网络能够学习到复杂的特征表达,适用于处理非线性问题。以下是对BP神经网络在图像识别中应用的分析: 一、BP
    的头像 发表于 02-12 15:12 1188次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个神经元组成,神经元之间通过
    的头像 发表于 01-23 13:52 842次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工神经网络模型之所
    的头像 发表于 01-09 10:24 2246次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法