本篇使用的符号说明,书接上回《含卷积矩阵优化问题的闭式解》,那么为什么会有这篇呢。
主要是求导部分不够严谨,实际上傅里叶变换后已经是复数了,求导规则不能完全参考实矩阵,因此本文尝试从另一个角度绕过对复矩阵求导可能会出现的问题。
考虑优化目标
\[\min\limits_K\|A*K-B\|_F^2,\tag{1}
\]
其中\(A,B,K\)均为实矩阵,这里卷积的实现我们后文会提。为了方便推导我们假设均为方阵,实际上一般矩阵也有相同的结论。对于二维矩阵的傅里叶变换,实现方式为
\[\mathcal{F}(X)=FXF,\mathcal{F}^{-1}(X)=F^{-1}XF^{-1}=\frac{1}{n^2}F^{H}XF^{H}\tag{2}.
\]
为了方便讨论,\(F\)我们考虑为归一化的傅里叶矩阵,跟原形式差一个常数倍,同时有一个矩阵拉直的引理
\[\operatorname{vec}(ABC)=(C^T\otimes A)\operatorname{vec}(B). \tag{3}
\]
于是由傅里叶变换的性质,可以将\((1)\)进行变换
\[\begin{align}
&\|A*K-B\|_F^2 \notag\\
=&\|\mathcal{F}^{-1}(\mathcal{F}(A)\odot\mathcal{F}(K))-B\|_F^2.\tag{4}
\end{align}
\]
由于\(F\)-范数本质是逐位置求2-范数,因此可以将其拉直得到
\[\begin{align}
(4)&\Leftrightarrow\left\|\operatorname{vec}(\mathcal{F}^{-1}(\mathcal{F}(A)\odot\mathcal{F}(K)))-\bm{b}\right\|^2,\bm{b}=\operatorname{vec}(B) \notag \\
&=\left\|\operatorname{vec}(F^{-1}(\mathcal{F}(A)\odot\mathcal{F}(K))F^{-1})-\bm{b}\right\|^2 \notag\\
&=\left\|(F^{-1}\otimes F^{-1})\operatorname{vec}(\mathcal{F}(A)\odot\mathcal{F}(K))-\bm{b}\right\|^2 \notag\\
&=\left\|(F^{-1}\otimes F^{-1})\operatorname{vec}(\mathcal{F}(A))\odot\operatorname{vec}(\mathcal{F}(K))-\bm{b}\right\|^2 \notag\\
&=\left\|(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))\cdot\operatorname{vec}(\mathcal{F}(K))-\bm{b}\right\|^2 \notag\\
&=\left\|(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))(F\otimes F)(F^{-1}\otimes F^{-1})\operatorname{vec}(\mathcal{F}(K))-\bm{b}\right\|^2 \notag\\
&=\left\|(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))(F\otimes F)\operatorname{vec}(K)-\bm{b}\right\|^2. \tag{5}
\end{align}\]
令\(D=(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))(F\otimes F)\),于是有
\[\operatorname{vec}(A*K)=D\cdot\operatorname{vec}(K),
\]
由于\(A,K\)为实矩阵,于是\(A*K\)为实矩阵,令\(K\)为\(1\times1\)卷积核,由\(K\)的任意性可知\(D\)为实矩阵。令\(\bm{k}=\operatorname{vec}(K)\),将优化目标对\(\bm{k}\)求导得到
\[\begin{aligned}
\frac{\partial}{\partial\bm{k}}\|D\bm{k}-\bm{b}\|^2&=2D^T(D\bm{k}-\bm{b}) \\
&=2D^H(D\bm{k}-\bm{b}) \\
&=2\frac1{n^2}(F^H\otimes F^H)\overline{\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))}(F\otimes F)\left[(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))(F\otimes F)\bm{k}-\bm{b}\right] \\
&=2(F^{-1}\otimes F^{-1})\operatorname{diag}(\operatorname{vec}(\overline{\mathcal{F}(A)}))\left[\operatorname{diag}(\operatorname{vec}(\mathcal{F}(A)))\operatorname{vec}(\mathcal{F}(K))-\operatorname{vec}(\mathcal{F}(B)) \right] \\
&=2(F^{-1}\otimes F^{-1})\left[\operatorname{vec}\left(\overline{\mathcal{F}(A)}\odot\mathcal{F}(A)\odot\mathcal{F}(K) \right)-\operatorname{vec}\left(\overline{\mathcal{F}(A)}\odot\mathcal{F}(B) \right) \right] \\
&=2\operatorname{vec}\left[\mathcal{F}^{-1}\left[\overline{\mathcal{F}(A)}\odot\left(\mathcal{F}(A)\odot\mathcal{F}(K)-\mathcal{F}(B) \right)\right] \right].
\end{aligned}
\]
于是还原成矩阵得到
\[\frac{\partial}{\partial K}\|A*K-B\|_F^2=2\mathcal{F}^{-1}\left[\overline{\mathcal{F}(A)}\odot\left(\mathcal{F}(A)\odot\mathcal{F}(K)-\mathcal{F}(B) \right)\right]. \tag{6}
\]
另外,由\((5)\)可以观察到,如果矩阵卷积想满足\(\mathcal{F}(A*B)=\mathcal{F}(A)\odot\mathcal{F}(B)\)的性质,则这个卷积必须是循环padding卷积,参考下图。
然后举个例子实战下,考虑《Deep Convolutional Dictionary Learning for Image Denoising》中求解\(X\)的优化问题
\[\min\limits_{X^*}\frac12\|D*X^*-Y\|_F^2+\frac{\alpha}2\|X^*-X\|_F^2.
\]
原文中的\(D,X,X^*,Y\)均为张量,这里为了方便举例只考虑为矩阵。于是将优化目标对\(X^*\)求导可以得到
\[\begin{aligned}
\mathcal{F}^{-1}\left[\overline{\mathcal{F}(D)}\odot\left(\mathcal{F}(D)\odot\mathcal{F}(X^*)-\mathcal{F}(Y) \right)\right]+\alpha(X^*-X)&=0 \\
\overline{\mathcal{F}(D)}\odot\left(\mathcal{F}(D)\odot\mathcal{F}(X^*)-\mathcal{F}(Y) \right)+\alpha(\mathcal{F}(X^*)-\mathcal{F}(X))&=0 \\
\left(\overline{\mathcal{F}(D)}\odot\mathcal{F}(D)+\alpha\right)\odot\mathcal{F}(X^*)&=\overline{\mathcal{F}(D)}\odot\mathcal{F}(Y)+\alpha\mathcal{F}(X) \\
X^*&=\mathcal{F}^{-1}\left[\frac{\overline{\mathcal{F}(D)}\odot\mathcal{F}(Y)+\alpha\mathcal{F}(X)}{\overline{\mathcal{F}(D)}\odot\mathcal{F}(D)+\alpha}\right].
\end{aligned}
\]
这个结果跟原文中考虑通道数为1的情况是一样的。