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

    文章

    5021

    浏览量

    103252
  • 深度学习
    +关注

    关注

    73

    文章

    5507

    浏览量

    121274
收藏 人收藏

    评论

    相关推荐

    怎么对神经网络重新训练

    重新训练神经网络是一个复杂的过程,涉及到多个步骤和考虑因素。 引言 神经网络是一种强大的机器学习模型,广泛应用于图像识别、自然语言处理、语音识别等领域。然而,随着时间的推移,数据分布可能会
    的头像 发表于 07-11 10:25 474次阅读

    BP神经网络和卷积神经网络的关系

    广泛应用的神经网络模型。它们各自具有独特的特点和优势,并在不同的应用场景中发挥着重要作用。以下是对BP神经网络和卷积神经网络关系的详细探讨,内容涵盖两者的定义、原理、区别、联系以及应
    的头像 发表于 07-10 15:24 1621次阅读

    BP神经网络和人工神经网络的区别

    BP神经网络和人工神经网络(Artificial Neural Networks,简称ANNs)之间的关系与区别,是神经网络领域中一个基础且重要的话题。本文将从定义、结构、算法、应用及未来发展等多个方面,详细阐述BP
    的头像 发表于 07-10 15:20 1174次阅读

    机器人神经网络系统的特点包括

    脑启发的计算模型,具有高度的并行性和自适应性。机器人神经网络系统神经网络技术应用于机器人领域的研究和应用,具有以下特点: 高度的复杂性:神经网络
    的头像 发表于 07-09 09:45 482次阅读

    rnn是递归神经网络还是循环神经网络

    RNN(Recurrent Neural Network)是循环神经网络,而非递归神经网络。循环神经网络是一种具有时间序列特性的神经网络,能够处理序列数据,具有记忆功能。以下是关于循环
    的头像 发表于 07-05 09:52 595次阅读

    递归神经网络与循环神经网络一样吗

    时具有各自的优势和特点。本文介绍递归神经网络和循环神经网络的概念、结构、工作原理、优缺点以及应用场景。 递归神经网络(Recursive Neural Network,RvNN) 1
    的头像 发表于 07-05 09:28 906次阅读

    递归神经网络是循环神经网络

    。 递归神经网络的概念 递归神经网络是一种具有短期记忆功能的神经网络,它能够处理序列数据,如时间序列、文本、语音等。与传统的前馈神经网络不同,递归
    的头像 发表于 07-04 14:54 809次阅读

    循环神经网络和卷积神经网络的区别

    结构。它们在处理不同类型的数据和解决不同问题时具有各自的优势和特点。本文将从多个方面比较循环神经网络和卷积神经网络的区别。 基本概念 循环神经网络是一种具有循环连接的神经网络结构,它可
    的头像 发表于 07-04 14:24 1350次阅读

    卷积神经网络与循环神经网络的区别

    网络结构,分别适用于不同的应用场景。本文将从基本概念、结构组成、工作原理及应用领域等方面对这两种神经网络进行深入解读。
    的头像 发表于 07-03 16:12 3484次阅读

    bp神经网络是深度神经网络

    Network)有相似之处,但它们之间还是存在一些关键的区别。 一、引言 神经网络是一种模拟人脑神经元结构的计算模型,它由大量的神经元(或称为节点)组成,这些神经元通过权重连接在一起
    的头像 发表于 07-03 10:14 872次阅读

    bp神经网络和卷积神经网络区别是什么

    BP神经网络(Backpropagation Neural Network)和卷积神经网络(Convolutional Neural Network,简称CNN)是两种不同类型的人工神经网络,它们在
    的头像 发表于 07-03 10:12 1249次阅读

    卷积神经网络训练的是什么

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文详细介绍卷积神经网络
    的头像 发表于 07-03 09:15 439次阅读

    卷积神经网络的原理是什么

    卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,广泛应用于图像识别、语音识别、自然语言处理等领域。本文详细介绍卷积神经网络的原
    的头像 发表于 07-02 14:44 677次阅读

    卷积神经网络和bp神经网络的区别

    卷积神经网络(Convolutional Neural Networks,简称CNN)和BP神经网络(Backpropagation Neural Networks,简称BPNN)是两种
    的头像 发表于 07-02 14:24 4361次阅读

    神经网络在数学建模中的应用

    数学建模是一种利用数学方法和工具来描述和分析现实世界问题的过程。神经网络是一种模拟人脑神经元结构和功能的计算模型,可以用于解决各种复杂问题。在数学建模中,神经网络可以作为一种有效的工具
    的头像 发表于 07-02 11:29 982次阅读