推荐系统--n--模型Wide&Deep

Wide&Deep 让你的模型既有想象力又有记忆力。

Google的Wide&Deep在工业界有着巨大的影响力。只要掌握wide&deep就抓住了深度推荐模型这几年发展的一个主方向。

Wide&Deep 形象化理解“宽且深”,我们之前的Embedding+MLP经典结构,因为MLP可以有多层神经网络,所以它是一个比较“深”的模型,但是Wide&Deep这个模型的“深”与MLP有什么区别吗?“宽”的部分又是怎样的呢?宽和深分别有什么不同的作用呢?以及为什么要把他们结合在一起形成一个模型呢?

Wide&Deep模型的结构

我们先看一下Wide&Deep的模型结构,理解结构再深入去学习细节。
推荐系统--n--模型Wide&Deep_第1张图片
上图就是Wide&Deep模型的结构图,它是由左侧的Wide部分和右侧的Deep部分组成的,Wide部分的结构太简单了,就是把输入层直接连接到输出层,中间没有任何处理。Deep层的结构稍复杂,但是也不陌生,其实就是Embedding+MLP的模型结构。

知道Wide&Deep模型结构后,先来解决第一个问题,那就是Google为什么要创造这样的一个混合模型结构?下面我们分别从wide和deep部分的不同作用说起。
简单来说, Wide的主要作用是让模型具有较强的“记忆能力”,而deep部分的主要作用是让模型具有“泛化能力”,因为只有这样的结构特点,才能让模型兼具逻辑回归和深度神经网络的优势,也就是既能快速处理和记忆大量历史行为特征,又具有强大的表达能力,这就是google提出这个模型的动机。

那么所谓的“记忆能力”和“泛化能力”到底指的是什么?

模型的记忆能力

所谓的“记忆能力”,可以被宽泛地理解为模型直接学习历史数据中物品或则特征的“共现频率”,并且把他们直接作为特征推荐依据的能力。

就像电影推荐里面,我们可以发现的一系列规则一样,看了A电影的用户经常喜欢看电影B,这种”因为A所以B“式的规则,非常直接也非常有价值。

但这类规则有两个特点:一是数量非常多,一个“记忆不好”的推荐模型很难把他们都记住;二是没办法推而广之,因为这类规则非常具体,没办法或者说也没必要跟其他特征做进一步组合。就像看了电影A的用户80%都喜欢电影B,这个特征已经很强了,没必要把它跟其他特征再组合在一起。

回答 模型为什么要有Wide部分?就是因为Wide部分可以增强模型的记忆能力,让模型记住大量的直接且重要的规则,这正式单层线性模型所擅长的。

模型的泛化能力

“泛化能力”指的是模型对于新鲜样本、以及从未出现过的特征组合的预测能力。 如何理解呢?举个例子:假设我们知道25岁的男性用户喜欢看电影A, 35岁的女性用户喜欢看电源A,如果我们想让一个只有记忆能力的模型回答,“35岁的男性是否会喜欢电影A”这个问题,模型就不知道如何回复,因为从没学过这样的知识。

这就体现出了泛化能力的重要性了,模型有了很强的泛化能力之后,才能够对一些非常稀疏的甚至从未出现过的情况做出尽量“靠谱”的预测。

事实上,矩阵分解算法,就是为了解决协同过滤“泛化能力”不强而诞生的,因为协同过滤只会“死板”地使用用户的原始行为特征,而矩阵分解因为生成了用户和物品的隐向量,所以就可以计算任意两个用户和物品之间的相似度了,这就是泛化能力强的一个例子。

我们知道,深度学习模型有很强的数学拟合能力,在多层神经网络之中,特征可以得到充分的交叉,让模型学习到新的知识。因此Wide&Deep模型的Deep部分,就沿用了Emedding+MLP的模型结构,来增强模型的泛化能力。

Wide&Deep模型的应用场景

Wide&Deep模型由Google的应用商店团队GooglePlay提出的,在GooglePlay为用户推荐App这样的应用场景下,Wide&Deep模型的推荐目标就显而易见了,就是应该尽量推荐那些用户可能喜欢的,愿意安装的应用。那具体到Wide&Deep模型中,GooglePlay团队是如何为WIde部分和Deep部分挑选特征的呢?
推荐系统--n--模型Wide&Deep_第2张图片
我们先看上图,它补充了GooglePlay Wide&Deep模型的细节,让我们可以清楚地看到各部分用到的特征是什么。我们先从右边的Wide部分特征看起,这部分很简单,只利用了两个特征的交叉,这两个特征“已安装应用”和“当前曝光应用”,这样一来,Wide部分想学到的知识就非常直观了,就是希望记忆好“如果A所以B”这样的简单规则。在GooglePlay的场景下,就是希望记住“如果用户已经安装了应用A,是否会安装应用B”这样的规则。

接着,我们看看Deep部分,它就是一个非常典型的Embedding+MLP结构。我们看到输入特征很多,有用户年龄、属性特征、设备类型、还有已经安装应用的Embedding等等,我们把这些特征一股脑地放进多层神经网络里面去学习后,他们互相之间会发生多重的交互组合,这会让模型具备更强的泛化能力。

你可能感兴趣的:(推荐系统)