当前位置: 首页 > article >正文

一个交替优化问题的求解(续)

优化问题

W W W, b b b, Y Y Y 固定时,原优化问题的目标函数变为:

min ⁡ Z λ t r ( Z T 1 1 T Z ) + μ 2 ∥ Y − Z + 1 μ Λ ∥ F 2 \min_Z \lambda \mathrm{tr}\left(Z^T\mathbf{1}\mathbf{1}^TZ\right) + \frac{\mu}{2}\|Y - Z + \frac{1}{\mu}\Lambda\|_F^2 Zminλtr(ZT11TZ)+2μYZ+μ1ΛF2

我们需要通过对 Z Z Z 求导并设导数为 0 来求解 Z Z Z 的最优值。

第一项的展开

λ t r ( Z T 1 1 T Z ) \lambda \mathrm{tr}\left(Z^T\mathbf{1}\mathbf{1}^TZ\right) λtr(ZT11TZ)
这里的 1 1 T \mathbf{1}\mathbf{1}^T 11T 是一个 n × n n \times n n×n 的矩阵, 1 \mathbf{1} 1 是全 1 的列向量。 t r ( A ) \mathrm{tr}(A) tr(A) 是矩阵 A A A 的迹(对角线元素之和)。

由于 t r ( A ) \mathrm{tr}(A) tr(A) 的性质 t r ( A B ) = t r ( B A ) \mathrm{tr}(AB) = \mathrm{tr}(BA) tr(AB)=tr(BA),这一项也可以写为:

λ t r ( Z T 1 1 T Z ) = λ ∥ Z T 1 ∥ 2 2 \lambda \mathrm{tr}(Z^T\mathbf{1}\mathbf{1}^TZ) = \lambda \|Z^T\mathbf{1}\|_2^2 λtr(ZT11TZ)=λZT122

因此,这一项实际上对 Z Z Z 的优化作用是增加某种行与列的相互依赖性。

第二项的展开

μ 2 ∥ Y − Z + 1 μ Λ ∥ F 2 \frac{\mu}{2} \|Y - Z + \frac{1}{\mu}\Lambda\|_F^2 2μYZ+μ1ΛF2

展开平方:

∥ Y − Z + 1 μ Λ ∥ F 2 = ∥ Y ∥ F 2 − 2 ⟨ Y , Z ⟩ + ∥ Z ∥ F 2 + 2 ⟨ Y , 1 μ Λ ⟩ − 2 ⟨ Z , 1 μ Λ ⟩ + ∥ 1 μ Λ ∥ F 2 \|Y - Z + \frac{1}{\mu}\Lambda\|_F^2 = \|Y\|_F^2 - 2\langle Y, Z \rangle + \|Z\|_F^2 + 2\langle Y, \frac{1}{\mu}\Lambda \rangle - 2\langle Z, \frac{1}{\mu}\Lambda \rangle + \|\frac{1}{\mu}\Lambda\|_F^2 YZ+μ1ΛF2=YF22Y,Z+ZF2+2Y,μ1Λ2Z,μ1Λ+μ1ΛF2

由于我们最终只关心 Z Z Z,可以将与 Z Z Z 无关的常数项略去。于是,该项可以化简为:

μ 2 ∥ Y − Z + 1 μ Λ ∥ F 2 = μ 2 ∥ Z ∥ F 2 − μ ⟨ Z , Y ⟩ + ⟨ Z , Λ ⟩ + const. \frac{\mu}{2}\|Y - Z + \frac{1}{\mu}\Lambda\|_F^2 = \frac{\mu}{2}\|Z\|_F^2 - \mu\langle Z, Y \rangle + \langle Z, \Lambda \rangle + \text{const.} 2μYZ+μ1ΛF2=2μZF2μZ,Y+Z,Λ+const.


目标函数的组合

将两部分结合,目标函数可以写为:

min ⁡ Z λ t r ( Z T 1 1 T Z ) + μ 2 ∥ Z ∥ F 2 − μ ⟨ Z , Y ⟩ + ⟨ Z , Λ ⟩ \min_Z \lambda \mathrm{tr}\left(Z^T\mathbf{1}\mathbf{1}^TZ\right) + \frac{\mu}{2} \|Z\|_F^2 - \mu \langle Z, Y \rangle + \langle Z, \Lambda \rangle Zminλtr(ZT11TZ)+2μZF2μZ,Y+Z,Λ

展开 λ \lambda λ 的部分后,我们有:

min ⁡ Z λ t r ( Z T 1 1 T Z ) + μ 2 t r ( Z T Z ) − μ t r ( Z T Y ) + t r ( Z T Λ ) \min_Z \lambda \mathrm{tr}(Z^T\mathbf{1}\mathbf{1}^TZ) + \frac{\mu}{2} \mathrm{tr}(Z^TZ) - \mu \mathrm{tr}(Z^TY) + \mathrm{tr}(Z^T\Lambda) Zminλtr(ZT11TZ)+2μtr(ZTZ)μtr(ZTY)+tr(ZTΛ)


Z Z Z 求导

我们需要对 Z Z Z 求导,并设置导数为 0。

梯度规则
  1. 对于二次项 μ 2 t r ( Z T Z ) \frac{\mu}{2} \mathrm{tr}(Z^TZ) 2μtr(ZTZ),梯度为:
    ∇ Z μ 2 t r ( Z T Z ) = μ Z \nabla_Z \frac{\mu}{2} \mathrm{tr}(Z^TZ) = \mu Z Z2μtr(ZTZ)=μZ

  2. 对于 λ t r ( Z T 1 1 T Z ) \lambda \mathrm{tr}(Z^T\mathbf{1}\mathbf{1}^TZ) λtr(ZT11TZ),使用 t r ( A B A T ) = t r ( A T A B ) \mathrm{tr}(ABA^T) = \mathrm{tr}(A^TAB) tr(ABAT)=tr(ATAB) 和对称性,梯度为:
    ∇ Z λ t r ( Z T 1 1 T Z ) = 2 λ 1 1 T Z \nabla_Z \lambda \mathrm{tr}(Z^T\mathbf{1}\mathbf{1}^TZ) = 2\lambda \mathbf{1}\mathbf{1}^TZ Zλtr(ZT11TZ)=2λ11TZ

  3. 对于线性项 − μ t r ( Z T Y ) -\mu \mathrm{tr}(Z^TY) μtr(ZTY) t r ( Z T Λ ) \mathrm{tr}(Z^T\Lambda) tr(ZTΛ),梯度分别为:
    ∇ Z ( − μ t r ( Z T Y ) ) = − μ Y \nabla_Z \left(-\mu \mathrm{tr}(Z^TY)\right) = -\mu Y Z(μtr(ZTY))=μY
    ∇ Z t r ( Z T Λ ) = Λ \nabla_Z \mathrm{tr}(Z^T\Lambda) = \Lambda Ztr(ZTΛ)=Λ


梯度方程

将梯度加总,得到目标函数对 Z Z Z 的梯度:

μ Z + 2 λ 1 1 T Z − μ Y + Λ = 0 \mu Z + 2\lambda \mathbf{1}\mathbf{1}^TZ - \mu Y + \Lambda = 0 μZ+2λ11TZμY+Λ=0

移项整理:

μ Z + 2 λ 1 1 T Z = μ Y + Λ \mu Z + 2\lambda \mathbf{1}\mathbf{1}^TZ = \mu Y + \Lambda μZ+2λ11TZ=μY+Λ

提取 Z Z Z

Z ( μ I n + 2 λ 1 1 T ) = μ Y + Λ Z (\mu I_n + 2\lambda \mathbf{1}\mathbf{1}^T) = \mu Y + \Lambda Z(μIn+2λ11T)=μY+Λ


求解 Z Z Z

由于 μ I n + 2 λ 1 1 T \mu I_n + 2\lambda \mathbf{1}\mathbf{1}^T μIn+2λ11T 是对称正定矩阵,可以求逆:

Z = ( μ I n + 2 λ 1 1 T ) − 1 ( μ Y + Λ ) Z = \left(\mu I_n + 2\lambda \mathbf{1}\mathbf{1}^T\right)^{-1}(\mu Y + \Lambda) Z=(μIn+2λ11T)1(μY+Λ)


总结

这一推导利用了矩阵求导法则,以及迹运算的性质。核心步骤包括:

  1. 展开并简化目标函数,留下与 Z Z Z 相关的项;
  2. Z Z Z 求导,得到线性方程;
  3. Z Z Z 解出,使用矩阵的逆操作得到最终形式。

http://www.kler.cn/a/401545.html

相关文章:

  • GNN初探
  • 2.tree of thought (使用LangChain解决N皇后问题)
  • 机器学习笔记 // 创建并训练DNN来拟合和预测序列数据
  • 运维面试题.云计算面试题之四.K8S
  • MFC线程-AfxBeginThread使用方法
  • SpringBoot常用的注解
  • 源码分析Spring Boot (v3.3.0)
  • Linux离线安装python相关包
  • driver.js实现页面操作指引
  • Linux-Samba
  • Axios交互
  • 疫情下的图书馆管理系统开发:Spring Boot
  • MATLAB调用Python自定义函数,极度方便好用
  • Bokeh实现大规模数据可视化的最佳实践
  • 单片机的基本组成与工作原理
  • Python自学之Colormaps指南
  • Spring学习笔记_41——@RequestBody
  • UniApp的Vue3版本中H5配置代理的最佳方法
  • 网络协议之FTP
  • Kafka进阶_1.生产消息