深度学习-推荐系统 第一章研读笔记(5)

235 阅读3分钟

引言

  • 本文继续介绍推荐系统研读笔记,紧接上次文章的SVD分解法,本文将介绍一个最为常用的方法-梯度下降法

3 梯度下降法

参考资料:梯度下降法与反向传播法 - 知乎 (zhihu.com)

  • 公式0.0为求解矩阵分解的目标函数,该函数的目的是让公式0.0等式两边的差尽量小,这样才能最大限度的保存共现矩阵的原始信息(比较于损失函数的构建)
  • 通俗来讲,目标函数求解我们在函数满足可导可微的前提下通过求导求微分的方式求解,类比这一原理来理解,文字形容就是:假设坐标轴有一个开口向上的抛物线,求解的过程就相当于求解抛物线的最小值,我们可以利用抛物线的定理,但是也可以抛物线上点的切线来根据切线的斜率来找到极值点,所以引申出梯度下降的方向与学习率(自我理解的梯度下降,仅供参考)
  • 公式0.0

image.png

image.png

可参考梯度下降详解:梯度下降算法原理讲解——机器学习Arrow and Bullet-CSDN博客梯度下降法

  • 梯度下降一般伴随有正则化的过程,此处浅谈书中的正则化:
  • 将正则化项加入损失函数来用来保持模型稳定的。对于加入了正则化项的损失函数来说,模型权重越大,损失函数的值越大,梯度下降时朝着损失小的方向发展的,因此正则化其实是希望在尽量不影响原模型与数据集之间的损失的前提下,是模型的权重变小 ,权重的减小自然会让模型的输出波动更小,从而达到让模型更稳定的目的(通俗理解:就是将一个非常曲折变化幅度非常大的曲线变得平滑缓和)

4 矩阵分解之后得到所有用户和物品的隐向量,进行推荐时候就是利用用户的隐向量与所有物品的隐向量逐一计算内积即可,排序推荐

5 矩阵分解生成隐向量的过程是利用了共现矩阵本身包含的全局信息的,因此具有比协同过滤更强的泛化能力,而协同过滤依赖用户,物品互相的历史关系,如果没有交集那相似度就为0,这样无法利用全局信息。

6 关于消除用户和物品打分的偏差问题

  1. 每个人在对物品进行评分时,评分标准会有差异,比如10分满分,有的人认为5分就表示可以,而有的人认为3分就很不错了,所以常用消除用户和物品打分的偏差的做法是在矩阵分解时候加入用户和物品的偏差向量,即下方公式
r^=μ+bi+bu+qiTpi(0.0)\hat{r} = \mu + b_{i} + b_{u} + q_{i}^Tp_{i}\tag{0.0}
  1. 其中第一个miu值是全局偏差常数,bi是物品偏差系数(可使用物品i收到的所有评分均值),bu用户偏差系数(同物品构建方法)

7 矩阵分解的优点与局限:

  1. 泛化能力增强,一定程度上解决了数据稀疏的问题
  2. 空间复杂度低,单纯的存储用户和物品的隐向量空间复杂度大大降低
  3. 更好的扩展性与灵活性(产出的用户与物品隐向量与深度学习的embedding思想较为相似,因此矩阵分解的结果非常便于与其他特征进行组合和拼接,且便于应用在神经网络上)
  4. 与协同过滤一样,矩阵分解同样不方便加入用户,物品,上下文等相关的特征; 缺乏用户历史行为时候无法进行有效的推荐;