文章主要是对wide&deep的总结,和自己对于模型的思考
模型解决问题
使得训练得到的模型能够同时获得记忆(memorization)和泛化(generalization)能力。
我理解为解决推荐系统EE问题的一种思路
记忆:Exploitation
泛化:Exploration
模型出现之前的解决方案和问题
一、记忆:Exploitation:
1、原始Dense特征 => Onehot离散化 => 原始高维稀疏特征 => 原始高维稀疏特征叉乘特征 => LR模型
优点:
- 记住某些特殊的特征组合,根据历史行为数据,产生的推荐通常和用户已有行为的物品直接相关的物品
缺点:
- 人工设计
- 因为所有特征叉乘,可能出现细粒度的叉乘,可能过拟合
- 无法捕捉从未曾出现过的特征对
二、泛化:Exploration
1、Deep层处理高维稀疏特征 => 高维稀疏特征EMbedding => 低维稠密特征
优点:
- 更少的人工参与
- 对历史上没有出现的特征组合有更好的泛化性
缺点:
-
当用户物品矩阵非常稀疏时,针对独特爱好的users和小众items,NN很难为users和items学习到有效的embedding。
-
这种情况下,大部分user-item应该是没有关联的,但dense embedding 的方法还是可以得到对所有 user-item pair 的非零预测,因此导致 over-generalize并推荐不怎么相关的物品。
所以,wide&deep结合两者的优点,wide对应Exploitation,deep对应Exploration。
模型原理
wide&deep结构
一、Wide:主要解决【记忆】问题
-
叉乘特征为:
ϕ k ( x ) = ∏ 1 d x i c k i , c k i ∈ { 0 , 1 } \phi_k(x)=\prod_{1}^{d}x_i^{c_{ki}}, c_{ki}\in \{0,1\} ϕk(x)=1∏dx