Wide&Deep和DeepFM

《Wide & Deep Learning for Recommender Systems》:Google,2016年提出,应用商店做排序;

《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》:华为,2017年提出,应用商店做排序;

 

很好的博客

LR: 优势是速度快,便于加特征,可解释;

FM: 二阶特征交叉;

Deep: 高阶特征交叉;

 

常识:

交叉特征(记忆性):AND(安装应用=微信,曝光应用=支付宝);等于给模型引入了非线性;

泛化一些的特征(泛化性):AND(安装应用类型=即时聊天,曝光应用=支付工具)

给所有item进行排序,耗时太大(要求是10ms以内的延迟);所以要用召回(ML+人工策略),得到百级数目的候选集,再进行打分;<user, context, 待评分的item>----->分数

 

Wide&Deep:

wide侧:用特征工程做的交叉特征,仍然起作用;主要负责记忆功能,记住样本中出现过的特征交叉;

deep侧:有泛化功能,学习特征的embedding,泛化到那些未曾出现过的特征交叉。

x是wide侧特征,\phi (x)是wide侧的低阶交叉特征,a(l)是deep侧输出结果;

记忆:倾向于给用户推他已经点击过的东西;

泛化:倾向于给用户推的东西更多样性;

谷歌应用商店:#开头的是数字;User Installed App是多个App(Multi-hot),Impression App是当前要预测的曝光App,这两者的交叉特征送到wide侧;

wide部分用带L1正则化的FTRL优化,deep部分用AdaGrad优化,两个部分联合训练。

做了特征选择:太稀疏,即出现次数太少的特征,被删去了;

连续特征的归一化,用的是CDF,即P(X<=x),然后均匀分桶;

每个时间窗口的训练数据来了,不是从头开始训练的,而是复用上一个模型的Embedding和wide部分的w(deep部分的w是随机初始化的?);上线之前,要在老数据上校验模型正确性;

 

DeepFM:

比Wide&Deep的优点:wide侧用的FM二阶特征交叉,比之前手工特征工程要高效;FM向量和Deep向量是复用的,联合训练;

交叉特征的例子:<吃饭时间,外卖类App>;<男性,十几岁,RPG游戏>

红线是权重为1;FM层第一个元素"+"是所有1特征的一阶线性加权和,后面的"X"是所有1特征的二阶交叉加权和(用向量点乘实现,实际是矩阵分解);

细节:

1)两种网络,激活函数Relu效果好于tanh。(最后面都是用Sigmoid得到p,交叉熵损失函数)
2)DeepFM每个隐层的unit在200到400之间效果最佳,相比wide&deep的unit数量要少一些。
3)两种网络,3层网络效果最佳。
4)在总的神经单元数量固定的情况下,constant结构效果最佳(constant表示每个隐层的unit数量相同);而wide&deep采用的是塔式结构,越往上unit数量越少。
5)embedding维度:DeepFM的embedding维度为10,wide&deep的是32维,两个都不大。

6) 两者都号称输入的Embedding没有经过预训练。

7) DeepFM使用了0.5的dropout.

实践中AUC涨幅:Wide&Deep比LR高2.7个百分点,DeepFM比Wide&Deep高0.6个百分点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章