导读:本文是“深度推荐系统”专栏的第八篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界所带来的最前沿的变化。本文主要介绍下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等指标上的显著提升。
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可以获得显著提升,详细数据如下图所示。
[1] Neural Architecture Search with Reinforcement Learning
[2] Deep Neural Networks for Youtube Recommendations
[3] Neural Input Search for Large Scale Recommendation Models
[4] Efficient Neural Architecture Search via Parameters Sharing
相关文章:
鸟枪换炮,如何在推荐中发挥AI Lab开源中文词向量的威力?
最新!五大顶会2019必读的深度推荐系统与CTR预估相关的论文