首页 > 其他分享 >深入分析:矩阵梯度类实例研究

深入分析:矩阵梯度类实例研究

时间:2023-05-28 12:55:31浏览次数:52  
标签:right cdot 梯度 矩阵 tr circ 深入分析 mathrm left

写在前面

本文主要用于围绕矩阵类求梯度等问题进行证明与分析,由于笔者的数理基础浅薄,下面的证明过程若存在错误,欢迎评论指正。

矩阵梯度的通用方法:先将矩阵写成微分形式,\(df=tr(GdX)\),然后得到$\nabla f=G^T $

案例1

\(\begin{array}{ll}\min_{U}&\dfrac{1}{2}\left\|\boldsymbol{R}\circ\left(\boldsymbol{Y}-\boldsymbol{UV}^{\top}\right)\right\|_{F}^{2}+\dfrac{\lambda_{1}}{2}\left\|\boldsymbol{U}-\boldsymbol{SU}\right\|_{F}^{2}+\dfrac{\lambda_{3}}{2}\left\|\boldsymbol{U}-\boldsymbol{T}\right\|_{F}^{2}.\end{array}\)

在上式中,主要目的为更新\(U\),其中\(V,Z,W,b\)固定,\(T=\psi(X)W+1b^T=KA+1b^T\)

首先对第一项求导,可以得到以下过程:

\(\underset{U}{\text{min}}\dfrac{1}{2}\left\|R\circ\left(Y-UV^{\mathrm{T}}\right)\right\|_{F}^{2}\Rightarrow\nabla U=R\circ\left(UV^{\mathrm{T}}-Y\right)V\)

1、将第一项展开可以得到如下形式:

\(\frac{1}{2}tr\{R^T\circ(Y-UV^T)^T(R\circ(Y-UC^T)) \}=\frac{1}{2} tr\{ R^T\circ(Y^T-VU^T)(R\circ(Y-UV^T))\}=\frac{1}{2}tr\{R^T\circ Y^T \cdot R \circ Y-2R^T\circ VU^T \cdot R\circ Y+\\ R^T\circ VU^T\cdot R \circ Y+R^T\circ VU^T\cdot R \circ UV^T \}\)

2、上式中第一项为与\(U\)无关项,可以忽略,下面对后面2项分别求导即可:

2.1 下面使用了\(tr(AB)=tr(BA)\)的性质

\(\frac{1}{2}\mathrm{tr}\left(-2(R\circ Y)\cdot\left(R^{\mathrm{T}}\circ V d(U^{\mathrm{T}})\right)\right) +\frac{1}{2}\left[\mathrm{tr}\left(\left(R\circ U V^{\mathrm{T}}\right)\cdot R^{\mathrm{T}}\circ V d(U^{\mathrm{T}})+\right.\right.\operatorname{tr}\left(\left(R^\mathrm{T}\circ VU^\mathrm{T}\circ R^\mathrm{T}\right)\cdot d(U)V^\mathrm{T}\right]\)

2.2 下面使用了\(tr(A(B\circ C))=tr((A\circ B^T)C)\)的性质

\(\frac{1}{2}\mathrm{tr}\left(-2((R\circ Y)\circ R)\cdot\left(V d(U^{\mathrm{T}})\right)\right)+\frac{1}{2}\left[\mathrm{tr}\left(\left(\left(R\circ U V^{\mathrm{T}}\right)\circ R\right)\cdot V d(U^{\mathrm{T}})\right)+\mathrm{tr}\left(\left(R^{\mathrm{T}}\circ V U^{\mathrm{T}}\right)\cdot d(U)V^{\mathrm{T}}\right)\right]\)

2.3 下面这项规定不一定通用,原文给出的\(R\)为指示矩阵,\(\{r_{ij}\}=1\),\(1\)和\(1\)的哈达玛内积必然为\(1\),因此有\(R\circ R=R\)

\(\frac{1}{2}\mathrm{tr}(-2)(R\circ V)\cdot V d\left(U^{T}\right)+\frac{1}{2}\left[\mathrm{tr}\left(\left(R\circ U V^{T}\right)\cdot V d\left(U^{T}\right)\right)+\mathrm{tr}(V^{T}\left(R^{T}\circ V U^{T}\right)\cdot d(U))\right]\)

2.4 将最后一项利用\(tr(A)=tr(A^T)\)性质,那么2.3中式子可以更新为:

\(\begin{array}{r l}{-}&{\left(R\circ Y\right)\cdot V+\frac{1}{2}\times\left[\left(R\circ U V^{\mathrm{T}}\right)\cdot V+\left(R\circ U V^{\mathrm{T}}\right)\cdot V\right]}\end{array}\)

2.5 进一步简化可以得到其关于\(U\)的偏导为\(R\circ\left(UV^\mathrm{T}-Y\right)V\text{}\)

标签:right,cdot,梯度,矩阵,tr,circ,深入分析,mathrm,left
From: https://www.cnblogs.com/yuxuliang/p/MyNorm_4.html

相关文章

  • 算法刷题记录:回行矩阵(未AC,TLE了)
    题目链接:https://ac.nowcoder.com/acm/contest/19306/1026题目分析这种题,画个图,模拟就对啦。TLE代码#include<iostream>usingnamespacestd;intn,cnt;intw[25][25];intmain(){cin>>n;//构建框架intdx=1,dy=1;while(1)......
  • #295. 「BJWC2010」矩阵距离 题解 2021-09-23 21:42:32
    #295.「BJWC2010」矩阵距离又是一道需要真正思考了才可以做出来的水题。题目描述给出一个N*M的01矩阵,输出每个0到离这个点最近的1的距离。思考历程暴力由于$N\le10^3$如果在赛场上出现这个题,我们优先考虑暴力。暴力也是很简单,从每个为0的点出发bfs找到与最近的......
  • 矩阵快速幂总结
    例题:LuoguP3977[TJOI2015]棋盘朴素做法明显可以进行状压DP,用\(f_{i,j}\)表示在第\(i\)行时下一行状态为\(j\)的方案数。但是这样复杂度是\(\Omicron(n2^{2m})\)的,即便预处理优化也只能达到\(\Omicron(nm2^m)\),因此需要对算法进行优化。优化思路+方法发现每次从......
  • 【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存C
    缓存的理解缓存的工作机制是先从缓存中读取数据,如果没有再从慢速设备上读取实际数据,并将数据存入缓存中。通常情况下,我们会将那些经常读取且不经常修改的数据或昂贵(CPU/IO)的且对于相同请求有相同计算结果的数据存储到缓存中。它能够让数据更加接近于使用者,下图所示。+-------------......
  • MATLAB实验四:共轭梯度法程序设计
    一、实验目的掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。二、实验内容 (1)求解无约束优化问题:minf(x)=100(x1^2-x2)^2+(x1-1)^2,x∈R;(2)终止准则取||f(x^k)||<=10^-5,搜索方法采用非精确搜索Armijo;......
  • 2022-2023 春学期 矩阵与数值分析 C4 逐次逼近法
    2022-2023春学期矩阵与数值分析C4逐次逼近法原文C4逐次逼近法4.1解线性方程组的迭代法简单迭代法迭代格式可将线性方程组变形\[Ax=b\Leftrightarrowx=Bx+f\]其中B为迭代矩阵,且\[B\inR^{n\timesn},f\inR^n,x\inR^n\]迭代法:称使用\[x^{(k+1)}=Bx^{k}+f\;(k=......
  • Numpy_矩阵的multiply_python的属性以及类特性_装饰器——@property_@classmethod_@st
    Python类中有三个常用的装饰器分别是@property(使一个方法可以被当成属性调用,常用于直接返回某一不想被修改的属性)@classmethod(将一个方法定义为类方法,其中第一个参数要修改为cls,使得该方法可以不用实例化即可被调用)@staticmethod(静态方法,类似于类方法,也可以不用实例化,......
  • 4、深入分析hystrix执行时的8大流程步骤以及内部原理
    前面了解了Hystrix最基本的支持高可用的技术:资源隔离 + 限流。创建command;执行这个command;配置这个command对应的group和线程池。开始执行这个command,调用了这个command的execute()方法之后,Hystrix底层的执行流程和步骤以及原理是什么1、构建一个Hystri......
  • es笔记七之聚合操作之桶聚合和矩阵聚合
    本文首发于公众号:Hunter后端原文链接:es笔记七之聚合操作之桶聚合和矩阵聚合桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据某个字段进行分组,将符合条件的数据分到同一个组里。桶聚合可以有子聚合,意思就是在分组之后,可以在每......
  • NumPy_矩阵的八种运算以及变换矩阵
    概念numpy下的linalg=linear+algebra01.数学概念vector向量array:数组matrix:矩阵标量(数量)物理定义:只有大小,没有方向的量n个有次序的数a_{1},a_{2},····,a_{n}所组成的数组称为n维向量--行向量和列向量数组,是有序的元素序列m×n个数aij(i=1,2......