063 基于隐变量的模型之三:分解机

图片[1]-063 基于隐变量的模型之三:分解机 - 速优课-速优课

🎯 本文导读

人工智能正在深刻改变世界,
从推荐系统到自动驾驶,从自然语言处理到计算机视觉,
AI 已经渗透到生活的方方面面。

本文将深入 063 基于隐变量的模型之三:分解机,
从基础理论到实战应用,带你走进 AI 的世界。

📌 你将收获:

  • 深入理解 AI/ML 核心概念
  • 掌握经典算法与模型
  • 学到实战应用经验
  • 为 AI 领域发展打下基础

周三我们分享了“基于回归的隐变量模型”,这是在基本的矩阵分解基础上衍生出来的一类模型。这种模型把显式特性和隐变量结合起来,对解决“冷启动”问题有一定作用。

今天,我们来介绍一种叫作“分解机”(Factorization Machines)的推荐技术。这个模型是从基于回归的隐变量模型中衍生出来的,已成为了主流的推荐模型。

矩阵分解和基于回归的隐变量模型存在哪些问题?

在介绍分解机的基本原理之前,我们先来回顾一下从“矩阵分解”到“基于回归的隐变量模型”的一个发展脉络。

首先,矩阵分解主要解决了两个问题,那就是从一个大矩阵降维到两个小矩阵,并且寄希望这两个小矩阵能够抓住用户和物品的相关度。

然而,单纯的矩阵分解无法融入很多用户和物品的特性,这就引导我们开发出了基于回归的矩阵分解。所谓的回归部分,也就是从显式特性出发,建立从显式特性到隐变量之间关系的流程,从而使我们能够把更多的信号放进模型中。

在一定程度上,基于回归的隐变量模型实现了把显式变量和隐变量结合的目的,但是这类模型的学习过程非常麻烦。实际上,因为这类模型复杂的训练流程,其在实际应用中并不常见。

那么,有没有其他思路来统一显式变量和隐变量的处理方式呢?

分解机的基本原理

分解机[1]是学者斯特芬·润顿(Steffen Rendle)在德国康斯坦扎大学任教期间开发出来的推荐模型。斯特芬后来加入谷歌,分解机是他的代表作品。

分解机结合了“基于内容的推荐系统”和“基于回归的隐变量模型”的一些基本思想。

基于内容的推荐系统,其核心就是认为需要预测的变量(这里我们依然讨论评分)是所有显式变量的一个回归结果。分解机直接借鉴了这一点,也就是说,分解机的输入是所有的显式变量。

实际上,分解机在对待显式变量的手法上更进了一步,那就是不仅直接对显式变量进行建模,还对显示变量的两两关系进行建模。当然,在原始的论文中,分解机其实还可以对更加高维的关系进行建模,我们这里局限在两两关系上。

什么意思呢?比如说我们有一个用户特性,是用户的年龄;我们有一个物品特性,是物品的种类。那么,普通的回归模型,就是把用户的年龄和物品的种类直接当作特性输入到模型中。而对于分解机来说,这只是第一步。

第二步,分解机是把这两个特性的数值进行乘积,当作一个新的特性,然后进一步处理这种两两配对的关系。把原始特性进行两两配对是构建模型的一种重要的方法,特别是对于非深度学习模型,需要自己做特征工程的模型。

两两配对的特征有什么好处呢?好处就是可以对两种特性的交互信息进行建模。举个例子,如果我们特别在意某个年龄段的用户在某种商品类别中的评分,那么,把这两个特性相乘,从而抓取到这个交互信息,是一个非常有效的手段。

但是,两两配对存在什么问题吗?一个问题就是特性空间会急速增长。如果我们有一个100维的用户特性向量,然后有一个100维的物品特性向量,那对于两两配对的特征,就是100乘100这个数量级的。另一个更严重的问题就是,如果我们的单独特性中,有一些是“类别特性”(Categorical Feature),那么在两两配对之后就会产生大量的0,从而变成一个巨大的稀疏矩阵。

如何解决这个问题呢?分解机利用了矩阵分解的降维思路。就是说,我们不对一个稀疏矩阵直接建模,而是把这个稀疏矩阵分解之后再进行建模。具体到上面这个例子,就是先假定,所有特性都对应一个隐变量向量,两个显式特性的乘积是两个特性的隐变量的点积。也就是说,我们把两个显式特性的乘积分解为了两个向量的乘积。这样,我们就不需要直接表示原来的稀疏矩阵。

在这样的思路下,分解机成功地把隐变量和显式变量结合到了一起。当我们的显式特性仅仅是用户ID和物品ID的时候,分解机的表达退回了最原始的矩阵分解。也就是说,矩阵分解其实可以表达成为特性的两两作用矩阵的分解。

在原始的论文中,作者还用分解机模拟了好几种流行的模型,我们这里就不复述了。

虽然也是为了建立从显式特性到隐变量的关系,但是对比基于回归的矩阵分解而言,分解机的训练过程大大简化了。在实际应用中,我们经常使用“随机梯度下降”(SGD, Stochastic Gradient Descent)来对分解机直接进行求解。

在最近几年的Kaggle比赛中以及一些工业级的应用中,分解机凭借其简单易用的特点,成为了很多产品的核心算法。

小结

今天我为你讲了隐变量模型中分解机的基本原理。

一起来回顾下要点:第一,我们简要介绍了矩阵分解的一些问题;第二,我们详细介绍了分解机的基本原理;第三,我们简要讲了如何求解分解机。

最后,给你留一个思考题,分解机能够解决“冷启动”的问题吗?

参考文献

  1. Steffen Rendle. Factorization Machines with libFM. ACM Trans. Intell. Syst. Technol. 3, 3, Article 57 (May 2012), 22 pages, 2012.

💡 耗时整理 | 免费分享 👉 💡


🏁 总结与思考

核心要点回顾

要点 说明
核心内容 本文的主要知识与观点
实战价值 可以直接应用的方法与技巧
深度思考 背后的原理与设计思想
延伸拓展 可以继续深入学习的方向

💭 学习视角

知识的价值,不在于「知道」,
而在于「应用」。

看完只是第一步,
把学到的东西用到实际工作中,
才是真正的「学会了」。

🚀 行动建议

  1. 动手实践:光看不练假把式
  2. 总结输出:用自己的话复述一遍
  3. 举一反三:思考还能用到哪些场景
  4. 持续学习:保持好奇心,不断精进
© 版权声明
THE END
喜欢就支持一下吧
点赞12
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容

温馨提示:
1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!