一开始感觉学习方向有点飘忽不定,后面查找资料和思考,发现其实图神经网络、异构图、推荐系统这三者的概念其实是相通,紧密联系的。推荐系统是指根据用户历史行为和偏好,为用户提供个性化的商品或服务推荐。而在推荐系统中,通常需要用到大规模的图数据,比如用户-商品交互网络、用户-用户社交网络等,并且这些图数据往往是异构的,即节点和边具有不同的类型和属性。在基础1---Neural Collaborative Filtering中,提到了协同过滤的概念:个性化推荐系统的关键是根据用户过去的互动(例如,评分和点击)对商品的偏好进行建模,这被称为协同过滤。所以在推荐系统中,图神经网络GNN开源被用来对用户-商品的交互网络进行建模,从而做出预测。
在读李沐老师d2l-zh-pytorch.pdf时,知道了推荐系统是包含在机器学习下的监督学习中的,监督学习是需要向模型提供庞大的数据集的。
基础1---2017---Neural Collaborative Filtering
这篇论文在2017年提出了使用神经网络的协同过滤(collaborative filtering,CF)的推荐算法,使用DNN建模用户user和物品item的交互关系,从而完成个性化的推荐。
一开始较详细地描述了矩阵分解MF的概念及算法来作为引子。后面将MF和深度神经网络相结合,提高了推荐算法的表现。
接着提出了一种协同过滤的损失函数,可以使得推荐系统对用户历史行为和隐含反馈进行更加准确的建模。
后面通过实验验证的各种图表,证明了该算法在多个推荐场景下都具有很好的性能,并且相较于其他传统的协同过滤算法和深度学习算法,取得了更好的结果。
我认为这篇论文是推荐系统领域非常重要的一篇研究成果,尤其是对于深度学习和协同过滤结合的研究具有很大的启示和借鉴意义,而且看着上面的文字描述,应该是开创了将DNN应用到推荐系统的先河。不过后面跟学长聊了下,发现貌似NCF是比较老的技术了,貌似最重要的意义是首次将神经网络尝试替代MF…?
可以通过矩阵乘法的原理分解成User和Item矩阵
如上面,隐向量是三维的,隐向量一般难以理解,我觉得是在还原后才有其具体含义,且往往隐向量的长度k是作为参数来调整的。
可以先优化User和Item两个小表,然后还原为有意义的大表即可,不一定要100%准确,近似即可。
在学自动微分时,发现对计算图的概念有点模糊。
通过自动微分进行反向计算↑
为什么AI框架都用计算图?什么是计算图?到底计算图有什么用?【计算图】系列第二篇_哔哩哔哩_bilibili
学到自动微分还是不太明白,尤其是反向传播计算。下面的代码注释也不知道我写没写对。
学到了一个名叫范数的概念。简单来说我觉得就是输入是一个向量,但是输出是一个数值。
感觉这里教程里说的不太对。这个公式的话,我觉得是y是真实值,然后X是将原始的输入矩阵X扩展为一个新的矩阵,其中第一列是1,然后将偏置b作为w中的第一项,即:
新的输入矩阵:
[1 x_11 ... x_1n]
[1 x_21 ... x_2n] ...
[1 x_m1 ... x_mn]
对应的权重向量: [w0 w1 ... wn]T,w0为偏置b
↑遇到了类似对向量的求导的问题。
这里是线性回归的解析解推导过程:
我们的目标是最小化损失函数 L(w) = ∥y - Xw∥^2,其中 y 是 n 维数据列向量,X 是 n * p 的特征矩阵,w 是 p 维权重列向量。
将损失函数展开,得到 L(w) = (y - Xw)⊤(y - Xw) = (y⊤ + (-Xw)⊤)(y - Xw) = y⊤y - 2w⊤X⊤y + w⊤X⊤Xw(v⊤u = u⊤v,其中 v 和 u 都是向量)
对 w 求导数,得到梯度 g(w) = -2X⊤y + 2X⊤Xw
令梯度为零,即 2X⊤Xw = 2X⊤y,解出 w 使得上式成立,得到:
w* = (X⊤X)^-1 X⊤y
其中 (X⊤X)^-1 表示 X⊤X 的逆矩阵。所以,最小化损失函数时,权重向量的解析解就是 w* = (X⊤X)^-1 X⊤y。