AI内参_66_063_基于隐变量的模型之三分解机
你好,我是洪亮杰。
今天我和你分享的主题是基于隐变量的模型之三分解机。
周三,我们分享了基于回归的隐变量模型,这是在基本的矩阵分解基础上衍生出来的一类模型。
这种模型把显示特性和隐变量结合起来,对解决冷启动问题有一定作用。
今天我们来介绍一种叫做分解机的推荐技术。
这个模型是从基于回归的隐变量模型中衍生出来的,已成为了主流的推荐模型。
在介绍分解机的基本原理之前,我们先来回顾一下从矩阵分解到基于回归的隐变量模型的一个发展脉络。
首先,矩阵分解主要解决了两个问题,那就是从一个大矩阵降维到两个小矩阵,并且寄希望这两个小矩阵能够抓住用户和物品的相关度。
然而,单纯的矩阵分解无法融入很多用户和物品的特性。
这就引导我们开发出了基于回归的矩阵分解。
所谓的回归部分,也就是从显示特性出发,建立从显示特性到隐变量之间关系的流程,从而使我们能够把更多的信号放进模型中。
在一定程度上,基于回归的隐变量模型,实现了把显示变量和隐变量结合的目的。
但是这类模型的学习过程非常麻烦。
实际上,因为模型的训练流程很复杂,导致这类模型在实际应用中并不常见。
那么有没有其他思路来统一显示变量和隐变量的处理方式呢?接下来我们就来介绍分解机的基本原理。
分解机是学者斯特芬润顿在德国康斯坦扎大学任教期间开发出来的推荐模型。
斯特芬后来加入谷歌。
分解机是他的代表作品,分解机结合了基于内容的推荐系统和基于回归的隐变量模型的一些基本思想。
基于内容的推荐系统,其核心就是认为需要预测的变量是所有显示变量的一个回归结果。
分解机直接借鉴了这一点。
也就是说,分解机的输入是所有的显示变量,实际上分解机在对待显示变量的手法上更近了一步,那就是不仅直接对显示变量进行建模,还对显示变量的两两关系进行建模。
当然在原始的论文中,分解机其实还可以对更加高位的关系进行建模。
我们这里局限在两两关系上,什么意思呢?比如说我们有一个用户特性是用户的年龄。
我们有一个物品特性是物品的种类。
那么普通的回归模型就是把用户的年龄和物品的种类直接当做特性输入到模型中,而对于分解机来说,这只是第一步。
第二,二步分解机是把这两个特性的数值进行乘积,当做一个新的特性。
然后进一步处理这种两两配对的关系。
把原始特性进行两两配对,是构建模型的一种重要的方法,特别是对于非深度学习模型,需要自己做特征工程的模型。
两两配对的特征有什么好处呢?好处就是可以对两种特性的交互信息进行建模。
举个例子,如果我们特别在意某个年龄段的用户在某种商品类别中的评分,那么把这两个特性相乘,从而抓取到这个交互信息,是一个非常有效的手段。
但是两两配对存在什么问题吗?一个问题就是特性空间会急速增长。
如果我们有一个一百维的用户特性向量,然后有一个一百维的物品特性向量,那对于两两配对的特征,其数量级就是一百乘以一百这个数量级的另一个更严重的问题就是如果我们的单独特性中有一些是类别特性,那么在两两配对之后就会产生大量的零,但是变成一个巨大的稀疏矩阵。
如何解决这个问题呢?分解机利用了矩阵分解的降维思路。
就是说我们不对一个系疏矩阵直接建模,而是把这个稀疏矩阵分解之后再进行建模。
具体到上面这个例子,就是先假定所有特性都对应一个隐变量。
向量虽个显示特性的乘积是两个特性到隐变量的点积。
也就是说我们把两个显示特性的乘积分解为了两个向量的分积,这样就不需要直接表示原来的稀疏矩阵。
在这样的思路下,分解机成功的把隐变量和显示变量结合到了一起。
在我们的显示特性,仅仅是用户ID和物品ID的时候,分解集的表达,退回了最原始的矩阵分解。
也就是说,矩阵分解其实可以表达成为特性,说原两作用矩量的乘积。
在原始的论文中,作者还用分解机模拟了好几种流行的模型。
我们这里就不复述了,虽然也是为了建立从显示特性到隐变量的点积,也就是到基于回归的矩阵。
分解而言,分解集的训练过程大大简化了在实际应用中,我们经常使用随机梯度下降来对分解机直接进行求解。
在最近几年的开沟比赛中,以及一些工业级的应用中,分解机,凭借其简单易用的特点,成为了很多产品的核心算法。
今天我为你讲了隐变量模型中分解机的基本原理,欢迎来回顾一下要点。
第一,我们简要介绍了矩阵分解的一些问题。
第二,我们详细介绍了分解机的基本原理。
第三,我们简要讲了如何求解分解机,最后给你留一个思考题,分解机能够解决冷启动的问题吗?欢迎你给我留言,和我一起讨论。