优化矩阵行列式为零

问题描述

现有 { H i } \{\rm H_i\} {Hi}需要优化使得它们的行列式尽量接近0,并且尽量稀疏。

直接思路

添加能量项 M a t r i x _ l o s s = ∑ i ∣ H i ∣ \rm Matrix\_loss=\sum_i |\rm H_i| Matrix_loss=iHi,然后直接优化。

结果

收敛速度有点慢,而且没有想象中那么稀疏。

低秩优化

优化 { H i } \{\rm H_i\} {Hi}的秩,使得它的秩小于它的行列数的最小值,此时行列式必然为0。

  1. 对其进行svd分解,得到奇异值。
  2. 惩罚其最小奇异值,使其尽量接近0。

难点:找到最小奇异值需要用的min操作,其本身不可微分。

转化思路:

  1. u i , z i , v i = s v d ( H i ) \mathbf u_i, \mathbf z_i, \mathbf v_i=svd(\rm H_i) ui,zi,vi=svd(Hi),将 z i \mathbf z_i zi中最小值设为0,得到 z ^ i \mathbf {\hat{z}_i} z^i
  2. 计算 H ^ i = u i ∗ z ^ i ∗ v i T \mathbf {\hat{\rm H}_i}=\mathbf u_i * \mathbf {\hat{z}_i} * \mathbf {v_i}^T H^i=uiz^iviT
  3. M a t r i x _ l o s s = ∑ i ∣ H i − H ^ i ∣ F \rm Matrix\_loss=\sum_i |\rm H_i-\mathbf {\hat{\rm H}_i}|_F Matrix_loss=iHiH^iF

结果

下降速度很快,而且效果很好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值