欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

矩阵分解算法的求解 随机梯度下降SGD和交替最小二乘ALS

程序员文章站 2022-06-27 10:36:55
...

优化时为何选择偏导数的负方向?

首先假设目标函数为minf(x)min f(x)
那么我们的关注点就是如何找到当前状态xkx^k后的下一个状态点xk+1x^{k+1}
xk+1=xk+tkpk x^{k+1}=x^k+t_k\cdot p_k
其中,tkt_k表示步长,pkp_k表示方向
依据泰勒展开式
f(x)=f(a)+f(a)1!(xa)+f(a)2!(xa)2++f(n)(a)n!(xa)n+Rn(x) f(x)=f(a)+\frac{f^{'}(a)}{1!}(x-a)+\frac{f^{''}(a)}{2!}(x-a)^2+\cdots+\frac{f^{(n)}(a)}{n!}(x-a)^n+R_n(x)
因此
f(xk+tkpk)=f(xk)+tkf(xk)Tpk+o(tkpk) f(x^k+t_kp_k)=f(x^k)+t^k\cdot \nabla f(x^k)^T\cdot p^k+o(\Vert t^k \cdot p^k \Vert)
于是
f(xk)f(xk+tkpk)=tkf(xk)Tpk+o(tkpk) f(x^k)-f(x^k+t_kp_k)=-t^k\cdot \nabla f(x^k)^T\cdot p^k+o(\Vert t^k \cdot p^k \Vert)
由于o(tkpk)o(\Vert t^k \cdot p^k \Vert)是高阶无穷小量,可以不考虑
若要使f(xk)f(xk+tkpk)f(x^k)-f(x^k+t_kp_k)最大,即下降的最多,又因为tkt^k是不变的参数,因此就要使
pk=f(xk)T p^k=-\nabla f(x^k)^T
即方向向量等于(偏)导数的负方向

随机梯度下降算法(Stochastic Gradient Descent, SGD)

SGD的思路就是让训练集中的每一条数据依次进入模型,不断优化变量。
要注意的是,因为是一条条进入模型,因此数据的顺序会对实验结果产生影响,
对于考虑时间因素的数据集,应按照时间顺序依次进入模型

以最基本的矩阵分解模型rui=qiTpur_{ui}=q_i^Tp_u为例
损失函数可以定义为J(pu,qi)=12((ruiqiTpu)2+λ(qi2+pu2))J(p_u,q_i) =\frac{1}{2}\left( \sum (r_{ui}-q_i^Tp_u)^2 + \lambda(\Vert q_i \Vert^2 + \Vert p_u \Vert^2 ) \right)
其中λ\lambda是正则化系数,这里把对pup_uqiq_i的正则化系数设置为相同值,也可以为不同值,不使用括号即可
下面求损失函数对pup_u的偏导
J(pu)pu=(ruiqiTpu)(qiT)+λpu \frac{\partial J(p_u)}{\partial p_u} = (r_{ui}-q_i^Tp_u)(-q_i^T) + \lambda p_u
常令
eui=ruiqiTpu e_{ui} = r_{ui}-q_i^Tp_u
因此
pu=puηJ(pu)pu=pu+η(euiqiλpu) p_u = p_u - \eta \cdot \frac{\partial J(p_u)}{\partial p_u}= p_u+\eta(e_{ui}\cdot q_i - \lambda \cdot p_u)
其中,η\eta表示学习速率
同理
qi=qiηJ(qi)qi=qi+η(euipuλqi) q_i = q_i - \eta \cdot \frac{\partial J(q_i)}{\partial q_i}= q_i+\eta(e_{ui}\cdot p_u - \lambda \cdot q_i)

交替最小二乘算法(Alternating Least Squares, ALS)

因为p和q两个变量未知,因此损失函数不是凸函数,无法使用凸优化求解。
但是,如果固定p,那么损失函数是只关于q的二次函数,用解二次函数方法。
因此,可固定p,求q;再固定q,求p,这样迭代下去,此即为交替一词出处。

J(pu)pu=(ruiqiTpu)(qiT)+λpu=(qiTqi+λ)puruiqiT \frac{\partial J(p_u)}{\partial p_u} = (r_{ui}-q_i^Tp_u)(-q_i^T) + \lambda p_u=(q_i^T q_i + \lambda)p_u - r_{ui}q_i^T
下面令J(pu)pu=0\frac{\partial J(p_u)}{\partial p_u}=0
写成矩阵形式
(QQT+λE)P=RjQT (QQ^T+\lambda E)P=R_jQ^T
P=(QQT+λE)1Rj P=(QQ^T+\lambda E)^{-1}R_j
同理
Q=(PPT+λE)1Ri Q=(PP^T+\lambda E)^{-1}R_i

相关标签: 推荐系统