文章目录
Wide & Deep Learning for Recommender Systems
1.论文名词解释
1.1 Memorization 和 Generalization
Google Wide&Deep论文中,通篇都是这两个词,必须搞懂是怎么回事!
记忆(memorization)即从历史数据中发现item或者特征之间的相关性。
泛化(generalization)即相关性的传递,发现在历史数据中很少或者没有出现的新的特征组合。
这个是从人类的认知学习过程中演化来的。人类的大脑很复杂,它可以记忆(memorize)下每天发生的事情(麻雀可以飞,鸽子可以飞)然后泛化(generalize)这些知识到之前没有看到过的东西(有翅膀的动物都能飞)。 但是泛化的规则有时候不是特别的准,有时候会出错(有翅膀的动物都能飞吗)。那怎么办那,没关系,记忆(memorization)可以修正泛化的规则(generalized rules),叫做特例(企鹅有翅膀,但是不能飞)。
memorization代表了推荐系统的预测准确度,而generalization代表了推荐系统的新颖度。
1.2 Wide 和 Deep
Wide也是一种特殊的神经网络,他的输入直接和输出相连。属于广义线性模型的范畴。Deep就是指Deep Neural Network,这个很好理解。Wide Linear Model用于memorization;Deep Neural Network用于generalization。 左侧是Wide-only,右侧是Deep-only,中间是Wide & Deep:
1.3 Cross-product transformation
Wide中不断提到这样一种变换用来生成组合特征,它的定义如下:
k表示第k个组合特征。i表示输入X的第i维特征。C_ki表示这个第i维度特征是否要参与第k个组合特征的构造。d表示输入X的维度。那么到底有哪些维度特征要参与构造组合特征那?这个是你之前自己定好的,在公式中没有体现。
绕了一大圈,整这么一个复杂的公式,其实就是我们之前一直在说的one-hot之后的组合特征:仅仅在输入样本X中的特征gender=female和特征language=en同时为1,新的组合特征AND(gender=female, language=en)
才为1。所以只要把两个特征的值相乘就可以了。
至于要构造哪些特征的问题,就是特征工程需要考虑的问题了。
2. Wide & Deep Model
Memorization:
之前大规模稀疏输入的处理是:通过线性模型 + 特征交叉。所带来的Memorization以及记忆能力非常有效和可解释。但是Generalization(泛化能力)需要更多的人工特征工程。
Generalization:
相比之下,DNN几乎不需要特征工程。通过对低纬度的dense embedding进行组合可以学习到更深层次的隐藏特征。但是,缺点是有点over-generalize(过度泛化)。推荐系统中表现为:会给用户推荐不是那么相关的物品,尤其是user-item矩阵比较稀疏并且是high-rank(高秩矩阵)
两者区别:
Memorization趋向于更加保守,推荐用户之前有过行为的items。相比之下,generalization更加趋向于提高推荐系统的多样性(diversity)。
Wide & Deep:
Wide & Deep包括两部分:线性模型 + DNN部分。结合上面两者的优点,平衡memorization和generalization。
原因:综合memorization和generalizatio的优点,服务于推荐系统。相比于wide-only和deep-only的模型,wide & deep提升显著。
2.1 推荐系统概览
2.1.1 介绍
推荐系统的介绍部分可以看我的推荐系统相关博客。
2.1.2 LR
大规模的在线推荐系统中,logistic regression应用非常广泛,因为其**简单、易扩展、可解释性。**LR的输入多半是二值化后的one-hot稀疏特征。Memorization可以通过在稀疏特征上cro