AICon全球人工智能与机器学习技术大会周四开幕,点击查看完整日程>> 了解详情
写点什么

Google 最新论文,首次引入自动网络设计高效解决大规模深度推荐模型的特征嵌入问题

  • 2020 年 3 月 19 日
  • 本文字数:2092 字

    阅读完需:约 7 分钟

Google最新论文,首次引入自动网络设计高效解决大规模深度推荐模型的特征嵌入问题

本文是“深度推荐系统”专栏的第八篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要介绍下 Google 在大规模深度推荐模型上关于特征嵌入的最新论文。


一、背景

大部分的深度学习模型主要包含如下的两大模块:输入模块以及表示学习模块。自从 NAS[1]的出现以来,神经网络架构的设计上正在往数据驱动的自动机器学习方向演进。不过之前更多的研究都是聚焦在如何自动设计表示学习模块而不是输入模块,主要原因是在计算机视觉等成熟领域原始输入(图像像素)已经是浮点数了。


输入模块:负责将原始输入转换为浮点数;


表示学习模块:根据输入模块的浮点值,计算得到模型的最终输出;


而在推荐、搜索以及广告工业界的大规模深度模型上,情况却完全不同。因为包含大量高维稀疏的离散特征(譬如商品 id,视频 id 或者文章 id)需要将这些类别特征通过 embedding 嵌入技术将离散的 id 转换为连续的向量。而这些向量的维度大小往往被当做一个超参手动进行设定。


一个简单的数据分析就能告诉我们嵌入向量维度设定的合理与否非常影响模型的效果。以 YoutubeDNN[2]为例,其中使用到的 VideoId 的特征词典大小是 100 万,每一个特征值嵌入向量大小是 256。仅仅一个 VideoId 的特征就包含了 2.56 亿的网络参数,考虑到其他更多的离散类特征输入模块的需要学习的参数数量可想而知。相应地,表示学习模块主要包含三层全连接层。也就是说大部分的网络参数其实聚集在了输入模块,那自然就会对模型的效果有着举足轻重的影响。


二、主要工作

Google 的研究者们在最新的一篇论文[3]中提出了 NIS 技术(Neural Input Search),可以自动学习大规模深度推荐模型中每个类别特征最优化的词典大小以及嵌入向量维度大小。目的就是为了在节省性能的同时尽可能地最大化深度模型的效果。


并且,他们发现传统的 Single-size Embedding 方式(所有特征值共享同样的嵌入向量维度)其实并不能够让模型充分学习训练数据。因此与之对应地,提出了 Multi-size Embedding 方式让不同的特征值可以拥有不同的嵌入向量维度。


在实际训练中,他们使用强化学习来寻找每个特征值最优化的词典大小和嵌入向量维度。通过在两大大规模推荐问题(检索、排序)上的实验验证,NIS 技术能够自动学习到更优化的特征词典大小和嵌入维度并且带来在 Recall@1 以及 AUC 等指标上的显著提升。


三、Neural Input Search 问题

NIS-SE 问题:SE(Single-size Embedding)方式是目前常用的特征嵌入方式,所有特征值共享同样的特征嵌入维度。NIS-SE 问题就是在给定资源条件下,对于每个离散特征找到最优化的词典大小 v 和嵌入向量维度 d。


这里面其实包含了两部分的 trade-off:一方面是各特征之间,更有用的特征应该给予更多的资源;另一方面是每个特征内部,词典大小和嵌入向量维度之间。对于一个特征来说,更大的词典可以有更大的覆盖度,包含更多长尾的 item;更多的嵌入向量维度则可以提升 head item 的嵌入质量,因为 head item 拥有充分的训练数据。而 SE 在资源限制下无法同时做到高覆盖度和高质量的特征嵌入。所以需要引入 ME(Multi-size Embedding)。


NIS-ME 问题:ME 允许每个特征词典内不同的特征值可以有不同的嵌入向量维度。其实就是为了实现越频繁的特征值拥有更大的嵌入特征维度,因为有更多的训练数据;而长尾的特征值则用更小的嵌入特征维度。引入 ME 为每一个类别离散特征找到最优化的词典大小和嵌入向量维度,就可以实现在长尾特征值上的高覆盖度以及在频繁特征值上的高质量嵌入向量。下图给出了 embedding 使用的场景例子中,SE 和 ME 使用上的区别。



四、NIS 解决方案

要想为每个类别离散特征手动找到最优化的词典大小和嵌入向量维度是很难的,因为推荐广告工业界的大规模深度模型的训练时很昂贵的。为了达到在一次训练中就能自动找到最优化的词典大小和嵌入向量维度,他们改造了经典的 ENAS[4]:


  • 首先针对深度模型的输入模块提出了一个新颖的搜索空间;

  • 然后有一个单独的 Controller 针对每一个离散特征选择 SE 或者 ME;

  • 其次可以根据 Controller 决策后考虑模型准确度和资源消耗计算得到 reward;

  • 最后可以根据 reward 使用强化学习 A3C[5]训练 Controller 进行迭代。


搜索空间


Embedding Block 的概念实际上就是原始 Embedding 矩阵的分块。如下图所示,假设原始 Embedding 矩阵大小是(10M,256),图 a 将其分成了 20 个 Embedding Block。Controller 为每个特征有两种选择:图 b 所示的 SE 以及图 c 的所示的 ME。



Reward 函数


主模型是随着 Controller 的选择进行训练的,因此 Controller 的参数实际上是根据在验证集上前向计算的 reward 通过 RL 追求收益最大化而来。考虑到在限定资源下的深度模型训练,这里的 reward 函数设计为同时考虑业务目标与资源消耗。对于推荐领域的两大主要任务:信息检索和排序,信息检索的目标可以使用 Sampled Recall@1;而排序的目标则可以使用 AUC。


五、实验结果

他们在两大大规模推荐模型问题:检索和排序上进行了实验。在同等资源消耗的情况下,NIS 可以获得显著提升,详细数据如下图所示。



本文转载自知乎专栏:深度推荐系统。


原文链接:https://zhuanlan.zhihu.com/p/73369087


2020 年 3 月 19 日 21:36322

评论

发布
暂无评论
发现更多内容

模块八作业:设计消息队列存储消息数据的MySQL表格

Felix

Zookeeper配置管理自动更新

Mike

全场景进化与无缝协同:荣耀的高端化势能进程

脑极体

模块八作业

Mr.He

架构实战营

假期的的生活?

卢卡多多

假期 9 月日更

架构实战营模块八作业-消息队列存储数据的MYSQL设计

王晓宇

架构实战营

JVM启动参数学习笔记一

风翱

9 月日更 JVM启动参数

架构实战营 - 模块 8 - 设计消息队列存储消息数据的 MySQL 表格

雪中亮

架构实战营 #架构实战营

完成年初的一个小目标:七个月体重复盘

石云升

减肥 9月日更

数字经济成为经济高质量发展的重要推动力

Geek_987812

linux之sshpass命令

入门小站

Linux

要养成编写有语义的HTML的习惯

Regan Yue

html 前端 9月日更 9 月日更

利用 Python 分析了一波月饼,我得出的结论是?

JackTian

Python 数据分析 数据可视化 中秋 月饼

敏捷开发模式下测试经理没有了话语权?

BY林子

敏捷测试 敏捷转型

NFT 这么火,你知道 ERC721 么

Rayjun

以太坊 ERC ERC721

JavaScript进阶(四)防抖

Augus

JavaScript 九月日更

什么是网络安全等级保护

网络安全学海

网络安全 信息安全 WEB安全 等级保护 黑客、

手撸二叉树之从前序与中序遍历序列构造二叉树

HelloWorld杰少

九月日更

CentOS7 Linux实用命令

Mike

我,35岁程序员,离职前是这么做的

梦想橡皮擦

9月日更

网络攻防学习笔记 Day141

穿过生命散发芬芳

网络安全 9月日更

如何使用协程与生命周期感知型组件结合使用

Changing Lin

9 月日更

Vue进阶(幺贰幺):ElementUI 表单校验注意事项

No Silver Bullet

Vue elementUI 表单校验 9月日更 九月日更

链政经济:区块链如何服务新时代治国理政

Geek_987812

架构实战营作业 -- 模块三

冬瓜茶

🏆【算法数据结构专题】「限流算法专项」带你认识常用的限流算法的技术指南(分析篇)

浩宇天尚

ratelimiter 限流算法 9月日更 9 月日更 限流器

千万级学生管理系统的考试试卷存储方案

穿裤子的云

架构实战营 - 模块八作业

Julian Chu

架构1期模块八作业

五只羊

架构实战营

vue组件通信方式

法医

Vue 前端 9 月日更

在线JSON转Go Bson工具

入门小站

工具

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

Google最新论文,首次引入自动网络设计高效解决大规模深度推荐模型的特征嵌入问题-InfoQ