首页 > 其他分享 >【矩阵论】含hadamard积求导和优化问题

【矩阵论】含hadamard积求导和优化问题

时间:2023-07-28 21:22:51浏览次数:39  
标签:odot bm 矩阵 求导 vec diag hadamard partial operatorname

本篇使用的符号说明,考虑优化问题

\[\min\limits_X \|A\circ X-B\|_F^2,\tag{1} \]

其中\(A,X,B\in M_{m,n}\)。自然的想法是对其求导找闭式解,由于\(F\)-范数的平方可以看作对每个位置的平方求和,于是\((1)\)可以向量化写成以下形式,

\[\min\limits_X \|\operatorname{vec}(A)\odot \operatorname{vec}(X)-\operatorname{vec}(B)\|_2^2. \tag{2} \]

其中\(\odot\)为element-wise product,也称为hadamard积(也可用符号\(\circ\)表示)。\(\operatorname{vec}(\cdot)\)为向量化操作,若\(A=(a_1,a_2,\cdots,a_n)\),则

\[\operatorname{vec}(A)=\left[\begin{matrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{matrix} \right]. \]

令\(\bm{x}=\operatorname{vec}(X)\),则\((2)\)可以写成

\[\min\limits_{\bm{x}} \|\operatorname{vec}(A)\odot \bm{x}-\operatorname{vec}(B)\|_2^2 \\ =\min\limits_{\bm{x}} \|\operatorname{diag}(\operatorname{vec}(A))\cdot \bm{x}-\operatorname{vec}(B)\|_2^2. \tag{3}\]

对其求导可得

\[\begin{aligned} \frac{\partial}{\partial\bm{x}}\|A\circ X-B\|_F^2 &=\frac{\partial}{\partial\bm{x}}\|\operatorname{diag}(\operatorname{vec}(A))\cdot \bm{x}-\operatorname{vec}(B)\|_2^2 \\ &= 2\operatorname{diag}(\operatorname{vec}(A))^H\big[\operatorname{diag}(\operatorname{vec}(A))\cdot \bm{x}-\operatorname{vec}(B)\big] \\ &= 2\operatorname{diag}(\operatorname{vec}(\bar{A}))\big[\operatorname{diag}(\operatorname{vec}(A))\cdot \bm{x}-\operatorname{vec}(B)\big]\\ &= 2\operatorname{vec}(\bar{A})\odot\big[\operatorname{vec}(A)\odot \bm{x}-\operatorname{vec}(B)\big]. \end{aligned} \]

再整理成矩阵形式可得

\[\frac{\partial}{\partial X}\|A\circ X-B\|_F^2 = 2\bar{A}\odot (A\odot X-B). \tag{4} \]

于是对于优化问题\((1)\),若\(A\)没有零元素,则通过\((4)\)可得

\[\begin{aligned} 0 &= 2\bar{A}\odot (A\odot X-B) \\ X &= B\oslash A, \\ \end{aligned} \]

其中\(\oslash\)表示element-wise division。

标签:odot,bm,矩阵,求导,vec,diag,hadamard,partial,operatorname
From: https://www.cnblogs.com/edlinf/p/17585899.html

相关文章

  • 《产品发展的路标是客户需求导向 企业管理的目标是流程化的组织建设》-- 任正非在PERB
    《产品发展的路标是客户需求导向企业管理的目标是流程化的组织建设》--任正非在PERB产品路标规划评审会议上的讲话2003年5月26日【导读】流程的核心是要反映业务的本质。流程承载业务,业务在流程上跑,沿着流程进行业务管理,由此,组织也必须与业务和流程进行......
  • 代码随想录算法训练营第二天| LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.
    977.有序数组的平方     题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/    文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html    视频讲解: https://www.bili......
  • HJ70 矩阵乘法计算量估算
    1.题目读题HJ70 矩阵乘法计算量估算  考查点 2.解法思路 代码逻辑 具体实现 3.总结......
  • HJ69 矩阵乘法
    1.题目读题 HJ69 矩阵乘法 考查点 首先,你需要了解矩阵乘法的定义和运算规则。矩阵乘法是一种将两个矩阵相乘的运算,得到一个新的矩阵。矩阵乘法的基本要求是,左边矩阵的列数必须等于右边矩阵的行数,否则无法进行乘法。矩阵乘法的结果是一个新的矩阵,其行数等于左边矩阵......
  • python定义多维矩阵
    Python定义多维矩阵在数学和计算机科学中,矩阵是一个按行列排列的矩形数组。Python是一种强大的编程语言,提供了许多用于处理矩阵的工具和库。在本文中,我们将探讨如何使用Python定义和操作多维矩阵。定义多维矩阵在Python中,我们可以使用列表(List)或NumPy库来定义多维矩阵。首先,让我......
  • python让矩阵乘其转置
    Python让矩阵乘其转置在线性代数中,矩阵乘法是一种常见的操作。然而,有时我们需要计算一个矩阵与其转置的乘积。Python提供了简单而有效的方法来实现这一操作。本文将介绍如何使用Python进行矩阵乘转置,并提供相关的代码示例。矩阵乘法在开始讨论矩阵乘转置之前,我们先来回顾一下矩......
  • pytorch矩阵点乘
    PyTorch矩阵点乘实现指南引言PyTorch是一个广泛使用的深度学习框架,它提供了丰富的工具和功能来构建和训练神经网络模型。在深度学习中,矩阵点乘是一项常见的操作,通常用于计算两个矩阵的乘积。本篇文章将指导刚入行的小白如何使用PyTorch实现矩阵点乘。流程概述下面是实现矩阵点......
  • 查看vca提取列在数据矩阵位置
    ismemeber可以查看一行在矩阵的位置。角度是6.2距离是0.6531。    ......
  • 【大联盟】20230713 T1 方向矩阵(rect) 题解 CF1666A 【Admissible Map】
    题目描述here。题解赛时得分:60/100。想到了正解,但调不出来,就改写暴力了。。。首先,我们把问题转化成每个点都入度为\(1\)。我们考虑合法子串只有两种形式:注意到U和D,要么同时出现,要么同时不出现,因为如果存在U,就说明U所在这一行得到度数减少了,一定需要上一行D来弥补......
  • 寻找矩阵的极小值
    title:寻找矩阵的极小值date:2023-07-2420:44:49tags:-c/c++categories:-算法-笔试top:寻找矩阵的极小值题目来自acwing题目(点击跳转)给定一个n×n的矩阵,矩阵中包含n×n个互不相同的整数。定义极小值:如果一个数的值比与它相邻的所有数字的值都小,则这个数值......