一文看懂推荐系统:特征交叉02:从FM到DeepFM,看高阶特征交叉的演进之路
1. FM模型特征交叉的奠基者第一次接触FMFactorization Machines模型时我被它的简洁优雅震惊了。这个2010年提出的模型用现在眼光看依然充满智慧。它的核心思想很简单用向量内积代替交叉特征权重。听起来可能有点抽象我举个生活中的例子。想象你在经营一家电商平台要预测用户是否会购买某款手机。传统线性模型只会单独考虑用户年龄和手机价格这两个特征而FM会让这两个特征对话——年轻用户可能更关注性价比商务人士可能更看重高端机型。这种特征间的交互就是FM的魔法所在。具体实现上FM用了一个巧妙的数学技巧。传统二阶交叉需要存储一个巨大的权重矩阵U大小是特征数量的平方而FM将其分解为两个小矩阵V的乘积。这就好比把用户年龄×手机价格这个交叉项的权重拆解成用户年龄向量和手机价格向量的点积。参数数量瞬间从O(d²)降到O(kd)k通常远小于d。# FM模型的交叉项计算示例 def fm_cross_term(x, v): # x: 特征向量 [batch_size, num_features] # v: 隐向量矩阵 [num_features, embedding_size] inter1 torch.matmul(x, v) # [batch_size, embedding_size] inter2 torch.matmul(x*x, v*v) # 元素平方 [batch_size, embedding_size] return 0.5 * torch.sum(inter1*inter1 - inter2, dim1) # 交叉项但FM也有明显的天花板。我在实际项目中发现它只能捕捉显式的二阶交叉。就像两个人对话FM只能记录他们说了什么却听不懂话中的潜台词。当用户行为模式变得复杂比如短视频推荐中观看时长×点赞率×完播率的三阶关系FM就力不从心了。2. 工业界的困境当FM遇上复杂场景在小红书早期推荐系统中FM确实表现不俗。但随着业务复杂度提升我们逐渐发现了它的三大硬伤第一是特征组合的局限性。FM只能处理二阶交叉而真实场景中高阶特征组合往往包含关键信息。比如判断用户是否喜欢某款美妆产品可能需要同时考虑用户肤质×产品成分×季节×地域的四阶关系。第二是隐式交互的缺失。FM需要显式定义交叉特征但很多有价值的特征交互是隐式的。就像人类谈恋爱有时候说不清为什么喜欢一个人就是有种感觉对了——这种难以言喻的感觉正是深度神经网络擅长捕捉的。第三是稀疏场景的挑战。虽然FM通过分解降低了参数但在极端稀疏的特征组合上比如小众商品的长尾推荐它的泛化能力仍然有限。我们做过AB测试在小众品类推荐上FM的点击率比深度学习模型低了近30%。这些问题促使工业界寻找FM的接班人。有趣的是大家没有简单抛弃FM而是在它的基础上进行进化——就像智能手机没有淘汰触屏而是让触屏变得更智能。3. DeepFM当浅层遇见深度2017年提出的DeepFM模型完美诠释了站在巨人肩膀上创新这句话。它保留了FM的二阶交叉能力同时引入DNN进行高阶特征自动学习。这种浅层深度的架构我在多个项目中实测效果惊人。DeepFM的聪明之处在于双路并行FM部分继续处理显式的低阶特征交互DNN部分用多层神经网络挖掘隐式的高阶关系这就好比既有经验丰富的老兵FM把守关键要道又有敏锐的侦察兵DNN探索未知领域。两者共享同一个特征输入层确保信息的一致性。class DeepFM(nn.Module): def __init__(self, num_features, embedding_size): super().__init__() self.fm FMLayer() self.dnn nn.Sequential( nn.Linear(num_features*embedding_size, 256), nn.ReLU(), nn.Linear(256, 128) ) self.output nn.Linear(128 1, 1) # FM输出DNN输出 def forward(self, x): fm_out self.fm(x) dnn_out self.dnn(x.reshape(x.shape[0], -1)) return torch.sigmoid(self.output(torch.cat([fm_out, dnn_out], dim1)))在实际部署时我们发现几个关键点特征Embedding要共享FM和DNN必须使用相同的特征嵌入否则会导致特征空间不一致网络深度要适中通常3-4层DNN效果最好太深反而容易过拟合组合特征依然有用虽然DNN能自动学习交互但人工设计的强特征组合如用户性别×商品类别仍有提升4. 为什么FM思想永不过时虽然纯FM模型逐渐退出主流但它的设计理念仍在深刻影响推荐系统发展。我认为FM至少在三方面具有持久价值第一是参数效率的典范。FM用矩阵分解的思路降低参数量这种思想在现在的推荐模型如YouTube的双塔结构中依然常见。当工程师们为模型瘦身发愁时总会想起FM的智慧。第二是解释性的标杆。相比黑盒的深度模型FM的交叉权重相对可解释。在需要模型解释性的场景如金融风控FM的变体仍然活跃。第三是架构设计的启示。DeepFM的成功证明传统模型与深度网络可以优势互补。后来出现的xDeepFM、AutoInt等模型都是沿着这个方向继续探索。在最近的内容推荐项目中我们甚至发现一个有趣现象当引入用户实时行为序列后简单的FM组件反而比复杂网络更稳定。这可能是因为短期行为信号与静态特征的交叉更适合用低阶方式建模。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2447856.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!