1 背景

1.1 LR模型方程

        对于监督学习,机器学习模型的预测是一个估计函数 y ^ \hat{y} y^(映射 F F F
y ^ = F : X → y (1) \hat{y}=F:\pmb{X}\to y\tag{1} y^=F:XXXy(1)
        其中 X \pmb{X} XXX属于 n n n维特征向量,即 X ∈ R n \pmb{X} \in\mathbb{R}^{n} XXXRn y y y属于目标值,回归问题中 y ∈ R y\in \mathbb{R} yR,二分类问题中 y ∈ { − 1 , + 1 } y\in\{ -1,+1 \} y{1,+1}

        我们首先回顾一般的线性回归方程LR,对于输入任意一个 n n n维特征向量 X = ( x 1 , x 2 , ⋯   , x n ) \pmb{X} = (x_{1}, x_{2}, \cdots, x_{n}) XXX=(x1,x2,,xn),建模估计函数 y ^ ( X ) \hat{y}(\pmb{X}) y^(XXX)
y ^ ( X ) = w 0 + ∑ i = 1 n w i x i (2) \hat y(\pmb{X}) = w_0 + \sum_{i=1}^{n}w_ix_i\tag{2} y^(XXX)=w0+i=1nwixi(2)
        LR模型的参数为: w 0 ∈ R w_{0} \in \mathbb{R} w0R w ∈ R n = ( w 1 , w 2 , ⋯   , w n ) w \in \mathbb{R^{n}} = (w_{1}, w_{2}, \cdots, w_{n}) wRn=(w1,w2,,wn)

        从LR模型方程中我们可以看到:

(1)各个特征分量 x i 和 x j ( i ≠ j ) x_{i}和x_{j}(i \neq j) xixj(i=j)彼此之间是独立的

(2) y ^ ( X ) \hat{y}(\pmb{X}) y^(XXX)将单个特征分量线性的组合起来,却忽略了特征分量彼此之间的相互组合关系

        对于特征的组合关系,我们定义:

(1)一阶特征:即单个特征,不产生新特征,如 x 1 x_{1} x1

(2)二阶特征:即两个特征组合产生的新特征,如 x 1 x 2 x_{1}x_{2} x1x2

(3)高阶特征:即两个以上的特征组合产生的新特征,如 x 1 x 2 x 3 x_{1}x_{2}x_{3} x1x2x3

        综上可知,LR模型只考虑了一阶特征的线性组合关系。

1.2 多项式模型方程

        为了克服模型欠缺二阶特征组合因素,我们将LR模型改写为二阶多项式模型
y ^ ( X ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n w i j x i x j (3) \hat{y}(\pmb{X})=w_0+\sum_{i=1}^{n}w_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^nw_{ij}x_ix_j\tag{3} y^(XXX)=w0+i=1nwixi+i=1n1j=i+1nwijxixj(3)
        其中 x i x j x_ix_j xixj表示两个互异特征组合的二阶特征, w i j w_{ij} wij表示二阶特征的交叉项系数

        至此,该模型似乎已经加入了特征组合的因素,接下来只要学习参数即可

        但是,上述二阶多项式模型却有一个致命的缺陷:

数据稀疏性普遍存在的实际应用场景中,二阶特征系数 w i j w_{ij} wij的训练是很困难的

        造成学习困难的原因是:

(1) w i j w_{ij} wij的学习需要大量特征分量 x i x_{i} xi x j x_{j} xj都非零的样本

(2)样本本身是稀疏的,同时满足 x i x j ≠ 0 x_{i}x_{j} \neq 0 xixj=0的样本非常稀少

        综上,多项式模型虽然加入了二阶特征组合,却受到数据稀疏的影响。


2 FM算法原理

2.1 FM模型方程

        为了克服模型无法在稀疏数据场景下学习二阶特征系数 w i j w_{ij} wij,我们需要将 w i j w_{ij} wij表示为另外一种形式

        为此,针对样本 X \pmb{X} XXX的第i维特征分量 x i x_{i} xi,引入辅助隐向量 v i \pmb{v}_{i} vvvi
v i = ( v i 1 , v i 2 , ⋯   , v i k ) T ∈ R k (4) \pmb{v}_i=(v_{i1}, v_{i2}, \cdots, v_{ik})^T\in\mathbb{R}^k\tag{4} vvvi=(vi1,vi2,,vik)TRk(4)

        其中 k k k为超参数,表示特征分量 x i x_{i} xi对应一个 k k k维隐向量 v i \pmb{v}_{i} vvvi,则将 w i j w_{ij} wij表示为:
w ^ i j = v i T v j = < v i , v j > = ∑ f = 1 k v i f v j f (5) \hat{w}_{ij}=\pmb{v}_i^T\pmb{v}_j=<\pmb{v}_i, \pmb{v}_j>=\sum_{f=1}^{k}v_{if}v{jf}\tag{5} w^ij=vvviTvvvj=<vvvi,vvvj>=f=1kvifvjf(5)

        上式引入隐向量的含义为:二阶特征系数 w i j w_{ij} wij等价于:特征分量 x i x_{i} xi x j x_{j} xj对应的隐向量 v i \pmb{v}_{i} vvvi v j \pmb{v}_{j} vvvj的内积 < v i , v j > <\pmb{v}_{i}, \pmb{v}_{j}> <vvvi,vvvj>,这就是FM模型的核心思想。

        则我们将二阶多项式模型改写为FM模型:
y ^ ( X ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n − 1 ∑ j = i + 1 n < v i , v j > x i x j (6) \hat{y}(\pmb{X})=w_{0}+\sum_{i=1}^{n}{w_{i}x_{i}}+\sum_{i=1}^{n-1}{\sum_{j=i+1}^{n}{<\pmb{v}_{i},\pmb{v}_{j}>x_{i}x_{j}}} \tag{6} y^(XXX)=w0+i=1nwixi+i=1n1j=i+1n<vvvi,vvvj>xixj(6)
        从FM模型方程可知,FM模型的参数为: w 0 ∈ R , w ∈ R n , V ∈ R n × k w_0\in\mathbb{R}, \pmb{w}\in\mathbb{R}^n, \pmb{V}\in\mathbb{R}^{n\times k} w0R,wwwRn,VVVRn×k
        各个参数的含义为:

(1) w 0 ∈ R w_0\in\mathbb{R} w0R表示FM模型的偏置

(2) w ∈ R n \pmb{w}\in\mathbb{R}^n wwwRn表示FM模型对一阶特征的建模

(3) V ∈ R n × k \pmb{V}\in\mathbb{R}^{n\times k} VVVRn×k表示FM模型对二阶特征的建模

        参数的个数为 1 + n + n k 1+n+nk 1+n+nk;模型的复杂度为: O ( n 2 k ) O(n^2k) O(n2k)

        对比(3)式和(6)式可知,交叉项 x i x j x_ix_j xixj的系数,前者用的是 w i j w_{ij} wij,后者用的是 w ^ i j \hat{w}_{ij} w^ij,为了弄清二者之间的关系,引入几个矩阵。

(1)每个特征 x i x_{i} xi对应的隐向量 v i \pmb{v}_{i} vvvi组成的矩阵 V \pmb{V} VVV
V = [ v 1 T v 2 T ⋮ v n T ] = [ v 11 v 12 ⋯ v 1 k v 21 v 22 ⋯ v 2 k ⋮ ⋮ ⋮ ⋮ v n 1 v n 2 ⋯ v n k ] n × k (7) \pmb{V}=\begin{bmatrix}\pmb{v}_1^T \\ \pmb{v}_2^T \\ \vdots \\\pmb{v}_n^T\end{bmatrix} = \begin{bmatrix} v_{11} & v_{12} & \cdots & v_{1k}\\ v_{21} & v_{22} & \cdots & v_{2k}\\ \vdots & \vdots & \vdots & \vdots\\ v_{n1} & v_{n2} & \cdots & v_{nk}\end{bmatrix}_{n\times k} \tag{7} VVV=vvv1Tvvv2TvvvnT=v11v21vn1v12v22vn2v1kv2kvnkn×k(7)
(2)多项式模型的二阶特征系数 w i j w_{ij} wij组成的交互方阵 W \pmb{W} WWW
W = [ w 11 w 12 ⋯ w 1 n w 21 w 22 ⋯ w 2 n ⋮ ⋮ ⋮ ⋮ w n 1 w n 2 ⋯ w n n ] n × n (8) \pmb{W}= \begin{bmatrix} w_{11} & w_{12} & \cdots & w_{1n}\\ w_{21} & w_{22} & \cdots & w_{2n}\\ \vdots & \vdots & \vdots & \vdots\\ w_{n1} & w_{n2} & \cdots & w_{nn}\end{bmatrix}_{n\times n} \tag{8} WWW=w11w21wn1w12w22wn2w1nw2nwnnn×n(8)
(3) FM模型的二阶特征系数 < v i , v j > <\pmb{v}_{i}, \pmb{v}_{j}> <vvvi,vvvj>组成的方阵 W ^ \hat{\pmb{W}} WWW^
W ^ = V × V T = [ v 1 T v 2 T ⋮ v n T ] × [ v 1 v 2 ⋯ v n ] = [ v 1 T v 1 v 1 T v 2 ⋯ v 1 T v n v 2 T v 1 v 2 T v 2 ⋯ v 2 T v n ⋮ ⋮ ⋮ ⋮ v n T v 1 v n T v 2 ⋯ v n T v n ] n × n = [ v 1 T v 1 w ^ 12 ⋯ w ^ 1 n w ^ 21 v 2 T v 2 ⋯ w ^ 2 n ⋮ ⋮ ⋮ ⋮ w ^ n 1 w ^ n 2 ⋯ v n T v n ] n × n (9) \begin{aligned} \hat{\pmb{W}}&=\pmb{V}\times\pmb{V}^T=\begin{bmatrix}\pmb{v}_1^T \\ \pmb{v}_2^T \\ \vdots \\\pmb{v}_n^T\end{bmatrix}\times\begin{bmatrix}\pmb{v}_1 & \pmb{v}_2 & \cdots & \pmb{v}_n\end{bmatrix}\\&= \begin{bmatrix}\pmb{v}_1^T\pmb{v}_1 & \pmb{v}_1^T\pmb{v}_2 & \cdots & \pmb{v}_1^T\pmb{v}_n \\ \pmb{v}_2^T\pmb{v}_1 & \pmb{v}_2^T\pmb{v}_2 & \cdots & \pmb{v}_2^T\pmb{v}_n \\ \vdots & \vdots & \vdots & \vdots\\ \pmb{v}_n^T\pmb{v}_1 & \pmb{v}_n^T\pmb{v}_2 & \cdots & \pmb{v}_n^T\pmb{v}_n \end{bmatrix}_{n\times n} \\&=\begin{bmatrix}\pmb{v}_1^T\pmb{v}_1 & \hat{\pmb{w}}_{12} & \cdots & \hat{\pmb{w}}_{1n} \\ \hat{\pmb{w}}_{21} & \pmb{v}_2^T\pmb{v}_2 & \cdots & \hat{\pmb{w}}_{2n}\\ \vdots & \vdots & \vdots & \vdots\\ \hat{\pmb{w}}_{n1} & \hat{\pmb{w}}_{n2} & \cdots & \pmb{v}_n^T\pmb{v}_n \end{bmatrix}_{n\times n}\end{aligned}\tag{9} WWW^=VVV×VVVT=vvv1Tvvv2TvvvnT×[vvv1vvv2vvvn]=vvv1Tvvv1vvv2Tvvv1vvvnTvvv1vvv1Tvvv2vvv2Tvvv2vvvnTvvv2vvv1Tvvvnvvv2TvvvnvvvnTvvvnn×n=vvv1Tvvv1www^21www^n1www^12vvv2Tvvv2www^n2www^1nwww^2nvvvnTvvvnn×n(9)
        从上面三个矩阵,我们可以看到:
(1)方阵 W \pmb{W} WWW的非对角线上三角的元素,即为多项式模型的二阶特征系数: w i j w_{ij} wij
(2)方阵 W ^ \hat{\pmb{W}} WWW^的非对角线上三角的元素,即为FM模型的二阶特征系数: < v i , v j > <v_{i}, v_{j}> <vi,vj>
由于 W ^ = V V T \hat{\pmb{W}}=\pmb{V}\pmb{V}^T WWW^=VVVVVVT,即隐向量矩阵的相乘结果,这是一种矩阵分解的方法

        引用线性代数中的结论:当 k k k足够大时,对于任意对称正定的实矩阵 W ^ ∈ R n × n \hat{\pmb{W}}\in\mathbb{R}^{n\times n} WWW^Rn×n,均存在实矩阵 V ∈ R n × k \pmb{V}\in\mathbb{R}^{n\times k} VVVRn×k,使得 W ^ = V × V T \hat{\pmb{W}}=\pmb{V}\times\pmb{V}^T WWW^=VVV×VVVT

        所以FM模型需要保证的正定性。由于FM只关心互异特征之间的关系( i > j i>j i>j),因此 W ^ \hat{\pmb{W}} WWW^的对角线元素可以任意取值,只需将它们取足够大(保证行元素严格对角占优),就可以保证 W ^ \hat{\pmb{W}} WWW^的正定性。

2.2 模型化简

        从上述FM模型方程看,模型的复杂度的确是: O ( n 2 k ) O(n^2k) O(n2k),但我们通过一些技巧可以化简模型的二阶系数项,如下:
∑ i = 1 n ∑ j = i + 1 n < v i , v j > x i x j = 1 2 ∑ i = 1 n ∑ j = 1 n < v i , v j > x i x j − 1 2 ∑ i = 1 n < v i , v i > x i x i = 1 2 ( ∑ i = 1 n ∑ j = 1 n ∑ f = 1 k v i , f v j , f x i x j − ∑ i = 1 n ∑ f = 1 k v i , f v i , f x i x i ) = 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) ( ∑ j = 1 n v j , f x j ) − ∑ i = 1 n v i , f 2 x i 2 ) = 1 2 ∑ f = 1 k ( ( ∑ i = 1 n v i , f x i ) 2 − ∑ i = 1 n v i , f 2 x i 2 ) (10) \begin{aligned} &\sum_{i=1}^{n}{\sum_{j=i+1}^{n}{<v_{i},v_{j}>x_{i}x_{j}}} \\ &=\frac{1}{2}\sum_{i=1}^{n}{\sum_{j=1}^{n}{<v_{i},v_{j}>x_{i}x_{j}}}-\frac{1}{2}\sum_{i=1}^{n}{<v_{i},v_{i}>x_{i}x_{i}} \\ &=\frac{1}{2}(\sum_{i=1}^{n}{\sum_{j=1}^{n}{\sum_{f=1}^{k}{v_{i,f}v_{j,f}x_{i}x_{j}}}}-\sum_{i=1}^{n}{\sum_{f=1}^{k}{v_{i,f}v_{i,f}x_{i}x_{i}}}) \\ &=\frac{1}{2}\sum_{f=1}^{k}{((\sum_{i=1}^{n}{v_{i,f}x_{i}})(\sum_{j=1}^{n}{v_{j,f}x_{j}})-\sum_{i=1}^{n}{v_{i,f}^2x_{i}^2})} \\ &=\frac{1}{2}\sum_{f=1}^{k}{((\sum_{i=1}^{n}{v_{i,f}x_{i}})^2-\sum_{i=1}^{n}{v_{i,f}^2x_{i}^2})} \end{aligned} \tag{10} i=1nj=i+1n<vi,vj>xixj=21i=1nj=1n<vi,vj>xixj21i=1n<vi,vi>xixi=21(i=1nj=1nf=1kvi,fvj,fxixji=1nf=1kvi,fvi,fxixi)=21f=1k((i=1nvi,fxi)(j=1nvj,fxj)i=1nvi,f2xi2)=21f=1k((i=1nvi,fxi)2i=1nvi,f2xi2)(10)
        对上述化简过程做一些解释:

  • 第1个等号:对称方阵 W ^ \hat{\pmb{W}} WWW^的所有元素之和减去主对角线元素之和
  • 第2个等号: < v i , v j > <v_{i}, v_{j}> <vi,vj>向量内积展开成累加形式
  • 第3个等号:提出公共部分 ∑ f = 1 k \sum_{f=1}^{k} f=1k
  • 第4个等号:表示为“和平方”减去“平方和”

        将式子(10)的化简结果代入式子(6),可以得到:
y ^ ( X ) = w 0 + ∑ i = 1 n w i x i + 1 2 ∗ ∑ f = 1 k { ( ∑ i = 1 n v i f x i ) 2 − ∑ i = 1 n v i f 2 x i 2 } (11) \begin{aligned} \hat{y}(\pmb{X}) = w_0+\sum_{i=1}^nw_ix_i+\frac{1}{2}*\sum_{f=1}^{k}\left\{\left(\sum_{i=1}^{n}v_{if}x_i\right)^{2}-\sum_{i=1}^{n}v_{if}^{2}x_{i}^2\right\} \end{aligned} \tag{11} y^(XXX)=w0+i=1nwixi+21f=1k(i=1nvifxi)2i=1nvif2xi2(11)

        可以看到通过数学上的化简,参数个数为: 1 + n + k n 1+n+kn 1+n+kn,模型的复杂度为: O ( k n ) O(kn) O(kn)FM模型的复杂度降低到了线性级别


3 模型建立

3.1 损失函数

        利用FM模型方程,可以进行各种机器学习预测的任务,包括:

  • Regression: y ^ ( x ) \hat{y}(x) y^(x)可以直接用作预测,并且最小平方误差来优化。
  • Binary classification: y ^ ( x ) \hat{y}(x) y^(x)作为目标函数并且使用hinge loss或者logit loss来优化。
  • Ranking:向量 x \pmb{x} xxx通过 y ^ ( x ) \hat{y}(x) y^(x)的分数排序,并且通过pairwise的分类损失来优化成对的样本 ( x ( a ) , x ( b ) ) (x^{(a)}, x^{(b)}) (x(a),x(b))
    对以上的任务中,正则化项参数一般加入目标函数中以防止过拟合。

        对于回归问题,损失函数可以取最小平方误差函数
l o s s ( y ^ , y ) = 1 2 ( y ^ − y ) 2 (12) loss(\hat{y},y)=\frac{1}{2}(\hat{y}-y)^2\tag{12} loss(y^,y)=21(y^y)2(12)
        对于分类问题,损失函数可以取logit逻辑函数
l o s s ( y ^ , y ) = l o g ( 1 + e − y ^ y ) (13) loss(\hat{y},y)=log(1+e^{-\hat{y}y})\tag{13} loss(y^,y)=log(1+ey^y)(13)

3.2 目标函数

        通过损失函数构造出目标函数为
o b j = ∑ i = 1 N l o s s ( y ^ i , y i ) (14) obj=\sum_{i=1}^{N}loss(\hat{y}_i,y_i)\tag{14} obj=i=1Nloss(y^i,yi)(14)
        其中包含具体的损失函数loss和估计函数 y ^ ( X ) \hat{y}(X) y^(X)。这里 y ^ \hat{y} y^FM模型方程,损失函数loss可以带入具体的可导函数(如logit函数)即可。

        最优化目标函数,即最优化模型方程的参数,即转化为下面最优化问题
θ ∗ = a r g m i n ∑ i = 1 N l o s s ( y ^ i , y i ) (15) \theta^*=argmin \sum_{i=1}^{N}loss(\hat{y}_i,y_i)\tag{15} θ=argmini=1Nloss(y^i,yi)(15)
        目标函数对模型参数的偏导数通式为:
∂ ∂ θ l o s s ( y ^ i , y i ) = ∂ l o s s ( y ^ i , y i ) ∂ y ^ i ∂ y ^ i ∂ θ (16) \frac{\partial}{\partial \theta}loss(\hat{y}_i,y_i)=\frac{\partial loss(\hat{y}_i,y_i)}{\partial \hat{y}_i}\frac{\partial \hat{y}_i}{\partial \theta}\tag{16} θloss(y^i,yi)=y^iloss(y^i,yi)θy^i(16)
        对于 R 2 R^2 R2和或logit作为损失函数而言,loss对模型估计函数 y ^ ( X ) \hat{y}(X) y^(X)的偏导数为:
∂ l o s s ( y ^ i , y i ) ∂ y ^ i = { y ^ i − y i l o s s = 1 2 ( y ^ i − y i ) 2 − y i 1 + e y ^ i y i l o s s = l o g ( 1 + e − y ^ i y i ) (17) \frac{\partial loss(\hat{y}_i,y_i)}{\partial \hat{y}_i}=\begin{cases}\hat{y}_i-y_i\qquad & loss=\frac{1}{2}(\hat{y}_i-y_i)^2 \\ \frac{-y_i}{1+e^{\hat{y}_iy_i}}\qquad & loss=log(1+e^{-\hat{y}_iy_i})\end{cases}\tag{17} y^iloss(y^i,yi)={y^iyi1+ey^iyiyiloss=21(y^iyi)2loss=log(1+ey^iyi)(17)

        对于FM模型而言,优化的参数为: θ ∗ = { w 0 , w , V } \theta^{*} = \{w_{0}, \pmb{w}, \pmb{V}\} θ={w0,www,VVV},则FM模型方程对各个参数 θ ∗ \theta^{*} θ的偏导数为:
∂ y ^ i ∂ θ = { 1 , if  θ  is  w 0 ; x i , if  θ  is  w i ; x i ∑ j = 1 n ( v j f x j ) − x i 2 v i f , if  θ  is  v i f . (18) \frac{\partial{\hat{y}_i}}{\partial{\theta}} = \begin{cases} 1, & \text{if } \theta \text{ is } w_0; \\ x_i, & \text{if } \theta \text{ is } w_i; \\ x_i\sum_{j=1}^{n}(v_{jf}x_j)-x_{i}^2v_{if}, & \text{if } \theta \text{ is } v_{if}. \end{cases}\tag{18} θy^i=1,xi,xij=1n(vjfxj)xi2vif,if θ is w0;if θ is wi;if θ is vif.(18)
        FM进行推断的时间复杂度为 O ( k n ) O(kn) O(kn)。分析训练的复杂度,依据参数的梯度表达式, ∑ j = 1 n ( v j f x j ) \sum_{j=1}^{n}(v_{jf}x_j) j=1n(vjfxj)与 ​ i i i无关,在参数更新时可以首先将所有的 ∑ j = 1 n ( v j f x j ) \sum_{j=1}^{n}(v_{jf}x_j) j=1n(vjfxj)计算出来,复杂度为 O ( k n ) O(kn) O(kn),后续更新所有参数的时间复杂度均为 O ( 1 ) O(1) O(1),参数量为 1 + n + k n 1+n+kn 1+n+kn,所以最终训练的时间复杂度同样为 O ( k n ) O(kn) O(kn),其中 n n n为特征数, k k k为隐向量维数。

        于是对于FM模型的优化问题,我们可以采用SGD优化目标函数


4 模型求解

4.1 优化算法

        这部分内容借鉴自作者: peghoty的学习算法:https://blog.csdn.net/itplus/article/details/40536025






5 总结

        FM模型的主要优势为:

  • FM模型对特征的一阶组合和二阶组合都进行了建模,在高度稀疏的情况下特征之间的交叉仍然能够估计,而且可以泛化到未被观察的交叉;
  • FM模型通过MF思想,基于K维的Latent Factor Vector,处理因为数据稀疏带来的学习不足问题;
  • FM模型的训练和预测的时间复杂度是线性的;
  • FM模型可以用于DNNembedding

        详细的Python代码实现,可以参考:FM(Factorization Machine)算法(推导与实现):https://blog.csdn.net/qq_24819773/article/details/86308868


补充:

        对称矩阵上三角求和,设矩阵为 M \pmb{M} MMM
M = ( m 11 m 12 ⋯ m 1 n m 21 m 22 ⋯ m 1 n ⋮ ⋮ ⋱ ⋮ m n 1 m n 2 ⋯ m n n ) n ∗ n (19) M=\left( \begin{matrix} m_{11} & m_{12} & \cdots & m_{1n} \\ m_{21} & m_{22} & \cdots & m_{1n} \\ \vdots & \vdots & \ddots & \vdots \\ m_{n1} & m_{n2} & \cdots & m_{nn} \\ \end{matrix} \right)_{n*n}\tag{19} M=m11m21mn1m12m22mn2m1nm1nmnnnn(19)
        其中, m i j = m j i m_{ij}=m_{ji} mij=mji
        令上三角元素和为 A \pmb{A} AAA,即 ∑ i = 1 n − 1 ∑ j = i + 1 n m i j = A \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}m_{ij}=A i=1n1j=i+1nmij=A,那么, M \pmb{M} MMM的所有元素之和等于 2 ∗ A + t r ( M ) 2*\pmb{A}+tr(\pmb{M}) 2AAA+tr(MMM) t r ( M ) tr(\pmb{M}) tr(MMM)为矩阵的迹。
∑ i = 1 n ∑ j = 1 n m i j = 2 ∗ ∑ i = 1 n − 1 ∑ j = i + 1 n m i j + ∑ i = 1 n m i i (20) \sum_{i=1}^n\sum_{j=1}^nm_{ij}=2*\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}m_{ij} + \sum_{i=1}^{n}m_{ii}\tag{20} i=1nj=1nmij=2i=1n1j=i+1nmij+i=1nmii(20)
        于是,可以得到:
A = ∑ i = 1 n − 1 ∑ j = i + 1 n m i j = 1 2 ∗ { ∑ i = 1 n ∑ j = 1 n m i j − ∑ i = 1 n m i i } (21) A=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}m_{ij}=\frac{1}{2}*\left\{\sum_{i=1}^n\sum_{j=1}^nm_{ij}-\sum_{i=1}^{n}m_{ii}\right\}\tag{21} A=i=1n1j=i+1nmij=21{i=1nj=1nmiji=1nmii}(21)

        当参数为 v i f v_{if} vif时,只需要关注模型高阶项,当计算参数 v i f v_{if} vif的梯度时,其余无关参数可看做常数。
∂ y ^ i ∂ v i f = ∂ 1 2 { ( ∑ i = 1 n v i f x i ) 2 − ∑ i = 1 n v i f 2 x i 2 } / ∂ v i f = 1 2 ∗ { ∂ { ∑ i = 1 n v i f x i } 2 ∂ v i f − ∂ { ∑ i = 1 n v i f 2 x i 2 } ∂ v i f } (22) \begin{aligned} \frac{\partial{\hat{y}_i}}{\partial{v_{if}}} ={} & \partial{\frac{1}{2}\left\{\left(\sum_{i=1}^{n}v_{if}x_i\right)^{2}-\sum_{i=1}^{n}v_{if}^{2}x_{i}^2\right\}}/\partial{v_{if}} \\ ={} & \frac{1}{2}* \left\{ \frac{ \partial{ \left\{ \sum_{i=1}^{n}v_{if}x_i \right\}^2 } }{\partial{v_{if}}} - \frac{ \partial{ \left\{ \sum_{i=1}^{n}v_{if}^{2}x_{i}^2 \right\} } }{\partial{v_{if}}} \right\} \\ \end{aligned} \tag{22} vify^i==21(i=1nvifxi)2i=1nvif2xi2/vif21vif{i=1nvifxi}2vif{i=1nvif2xi2}(22)
        其中,
∂ { ∑ i = 1 n v i f 2 x i 2 } ∂ v i f = 2 x i 2 v i f (23) \frac{ \partial{ \left\{ \sum_{i=1}^{n}v_{if}^{2}x_{i}^2 \right\} } }{\partial{v_{if}}} = 2x_{i}^2v_{if} \tag{23} vif{i=1nvif2xi2}=2xi2vif(23)
        令 λ = ∑ i = 1 n v i f x i \lambda=\sum_{i=1}^{n}v_{if}x_i λ=i=1nvifxi,则:
∂ { ∑ i = 1 n v i f x i } 2 ∂ v i f = ∂ λ 2 ∂ v i f = ∂ λ 2 ∂ λ ∂ λ ∂ v i f = 2 λ ∗ ∂ ∑ i = 1 n v i f x i ∂ v i f = 2 λ ∗ x i = 2 ∗ x i ∗ ∑ j = 1 n ( v j f x j ) (24) \begin{aligned} \frac{ \partial{ \left\{ \sum_{i=1}^{n}v_{if}x_i \right\}^2 } }{\partial{v_{if}}} ={} & \frac{\partial{\lambda^2}}{\partial{v_{if}}} \\ ={} & \frac{\partial{\lambda^2}}{\partial{\lambda}} \frac{\partial{\lambda}}{\partial{v_{if}}} \\ ={} & 2\lambda*\frac{\partial{\sum_{i=1}^{n}v_{if}x_i}}{\partial{v_{if}}} \\ ={} & 2\lambda*x_i \\ ={} & 2*x_i*\sum_{j=1}^{n}(v_{jf}x_j) \\ \end{aligned} \tag{24} vif{i=1nvifxi}2=====vifλ2λλ2vifλ2λvifi=1nvifxi2λxi2xij=1n(vjfxj)(24)
        结合公式(22~24),可得:
∂ y ^ i ∂ v i f = x i ∑ j = 1 n ( v j f x j ) − x i 2 v i f (25) \frac{\partial{\hat{y}_i}}{\partial{v_{if}}} = x_i\sum_{j=1}^{n}(v_{jf}x_j)-x_{i}^2v_{if} \tag{25} vify^i=xij=1n(vjfxj)xi2vif(25)


参考

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐