使用案例
Wirtinger导数用例1:Gerchberg–Saxton算法
Gerchberg–Saxton(GS)算法是相位恢复领域中最经典的方法之一,其基本思想是在不同约束集合之间交替投影,从而逐步逼近满足所有约束的解。然而,从现代优化的角度来看,GS 算法并不仅仅是一种启发式的投影方法,它实际上可以被理解为一种在复数域中进行的隐式优化过程。借助 Wirtinger 导数,这一联系可以被清晰地揭示出来。
考虑最基本的相位恢复问题:给定测量
其中\({\bf{z}} \in {\mathbb{C}^n}\)为待恢复信号,A表示如傅里叶变换的线性传播算子,\({\bf{y}}\)为观测到的幅值。GS 算法通过在信号域与测量域之间反复投影来求解该问题,其迭代过程可以写为
这一更新规则的核心在于:保持当前相位不变,仅将幅值替换为观测值\({\bf{y}}\)。
为了从优化角度理解这一过程,考虑如下目标函数:
该函数刻画了当前估计\({\bf{z}}\)与观测幅值之间的偏差。利用 Wirtinger 导数,可以对该函数进行求导,得到
这一表达式揭示了一个关键结构:梯度由两部分组成:一部分是当前预测\({\bf{Az}}\),另一部分是幅值误差项 \(1 - {\bf{y}}/\left| {{\bf{Az}}} \right|\)。
现在考虑一个梯度下降更新\({{\bf{z}}_{k + 1}} = {{\bf{z}}_k} - \eta \nabla \mathcal{L}\),当步长\(\eta = 1\),可得
这正是GS算法的更新公式。
这一推导表明:GS算法可以被解释为对目标函数\(0.5\left\| {\left| {{\bf{Az}}} \right| - {\bf{y}}} \right\|_2^2\)进行梯度下降的一种特殊情形。更具体地说,GS等价于在复数域中使用 Wirtinger 梯度进行更新,并在特定步长选择下,使梯度下降“退化”为一个显式的投影操作。从这一视角出发,可以更清晰地理解GS算法的一些性质。首先,由于其更新形式对应于固定步长的梯度下降,且目标函数是非凸的,因此算法可能停留在局部极小点或鞍点附近,这解释了GS算法对初始化敏感的现象。其次,由于其更新隐含地假设幅值误差可以在一步中完全校正,即直接替换为\({\bf{y}}\)。这实际上对应于一种较为“过激”的步长选择,从而可能导致震荡或收敛缓慢。
对于损失函数,牛顿法的更新方向d由线性方程
确定。一般而言,牛顿方向与负梯度方向并不相同,因为Hessian,\({\nabla ^2}\mathcal{L}\),会对不同方向施加不同的缩放与耦合。然而,当线性变换A具有\({{\bf{A}}^\dagger }{\bf{A}} = {\bf{I}}\)的特殊性质时,可以验证
这说明梯度\(\nabla \mathcal{L}\)是Hessian的一个特征向量,其对应特征值为1。于是
从而牛顿方向退化为
因此,在这个特殊的传播算子A的幅值误差模型下,牛顿法与单位步长的梯度下降在更新方向上完全等价。进一步代入梯度的显式表达式,便得到 Gerchberg–Saxton 算法中的幅值替换步骤。换言之,GS 迭代不仅可以理解为一种投影操作,也可以被看作该目标函数下 Newton 步长与单位步长梯度下降的统一表现。
如果损失函数退回到光强的形式,则前述关于 Hessian 与梯度之间的特殊关系一般不再成立。这一点从另一个角度说明,幅值域上的振幅更新之所以在经典相位恢复问题中表现出较好的局部收敛性质,并不仅仅是因为它执行了一个投影操作,更深层的原因在于:对于幅值误差模型,它恰好匹配了目标函数的局部几何结构,使得每次更新都具有类似 Newton 修正的性质。而一旦损失函数退回到光强形式,这种几何匹配关系便不再存在,算法更新也随之退化为更一般的一阶或近似二阶过程,其收敛速度与稳定性通常更依赖于步长、初始化以及具体的曲率条件。
因此,更准确地说,并不是“振幅更新”这一形式本身天然具有更好的收敛性,而是:在幅值误差模型下,振幅幅值替换恰好与目标函数的特殊 Hessian 结构相一致,从而赋予了 GS 类方法优于一般梯度更新的局部收敛特性;而在光强误差模型下,这种特殊结构消失,振幅更新的优势也随之减弱。因此Wirtinger流不再具有 GS 在幅值损失下那种“梯度方向即 Hessian 单位特征方向”的特殊性质。这也解释了为什么Wirtinger流需要显式选择步长、依赖谱初始化,并通过更标准的非凸优化框架来保证收敛,而不能像 GS 那样通过一次幅值替换直接获得有效更新。
Wirtinger导数用例2:叠层重建算法
叠层重建(ptychography)提供了一个很适合展示 Wirtinger 导数链式法则的例子。它的前向模型由几个简单的复变量运算串联而成:先用探针照明物体的一个局部区域,再传播到探测面,最后取模得到测量幅值。整个过程虽然包含复数乘法和取模运算,但只要把目标函数写成关于复变量及其共轭的函数,就可以直接使用\(\partial /\partial \bar z\)计算梯度。
设物体复透过率为\({\bf{O}}\),探针函数为\({\bf{P}}\)。在第\(m\)个扫描位置,记\({{\bf{S}}_m}{\bf{O}}\)为物体被照明到的局部区域,则出射波为
其中\(\odot\)表示逐元素乘法。探测面复振幅记为
这里\({\bf{A}}\)只是表示从出射波到探测面的线性变换。探测器记录幅值或强度。若采用幅值误差模型,观测幅值为\({{\bf{y}}_m}\),则损失函数可写为
先只看一个像素的标量形式。令\(u\)为预测复振幅,\(y\)为观测幅值,则局部损失为\(\ell (u,\bar u) = \frac{1}{2}\left( {\left| u \right| - y} \right)^2\)。由于\(\left| u \right| = \sqrt {u\bar u}\),对\(\bar u\)求 Wirtinger 导数得到
在向量形式下,这对应于
这个式子完全由 Wirtinger 导数给出:\({{\bf{u}}_m}\)保留当前估计的复相位,\(\left( {1 - {{\bf{y}}_m}/\left| {{{\bf{u}}_m}} \right|} \right)\)给出幅值误差的大小。接下来将\({{\bf{u}}_m} = {\bf{A}}{\boldsymbol{\psi}}_m\)代入链式法则。由于\({{\bf{u}}_m}\)是\({\boldsymbol{\psi}}_m\)的线性函数,对\({\boldsymbol{\bar \psi}}_m\)的导数可以写为
这里的\({{\bf{A}}^\dagger}\)不是额外引入的新物理过程,而是线性复函数在 Wirtinger 链式法则下自然出现的矩阵共轭转置。再利用\({\boldsymbol{\psi}}_m = {\bf{P}} \odot \left( {{{\bf{S}}_m}{\bf{O}}} \right)\),得到物体变量的梯度
其中\({\bf{S}}_m^{T}\)表示把局部区域的梯度放回全局物体坐标中。这一步同样来自普通的链式法则:局部出射波对局部物体的导数是探针\({\bf{P}}\),因此对共轭变量求导时出现\(\overline{\bf{P}}\)。如果探针也作为未知量联合估计,则有
因此,用 Wirtinger 导数看叠层重建时,算法结构非常清楚:先对测量幅值误差求\(\partial /\partial \bar{\bf{u}}\),再沿着复数链式法则依次传到\({\boldsymbol{\psi}}\)、\({\bf{O}}\)和\({\bf{P}}\)。许多 PIE、ePIE 类型的局部更新都可以理解为这种复梯度表达的归一化或近似形式。重点不在于额外定义某个传播概念,而在于:只要前向模型可写成复变量的复合函数,Wirtinger 导数就能直接给出每个复变量应该如何更新。
Wirtinger导数用例3:波长复用叠层重建算法
波长复用叠层重建是在叠层成像的基础上再加入一个波长维度。它的关键区别在于:单个探测器像素接收到的不是某一个波长的强度,而是多个波长通道强度的叠加。因此,损失函数同时依赖于多组复振幅\({{\bf{u}}_{m,\ell}}\)及其共轭\({{\bf{\bar u}}_{m,\ell}}\)。Wirtinger 导数在这里的作用,就是把“总强度残差”如何分配给每个波长通道写清楚。
设第\(m\)个扫描位置、第\(\ell\)个波长通道的出射波为
其中\({{\bf{O}}_\ell}\)表示第\(\ell\)个波长对应的物体复透过率,\({{\bf{P}}_{m,\ell}}\)表示该扫描位置与波长下的探针或照明函数,\(\odot\)为逐元素乘法。经过传播算子\({{\bf{A}}_\ell}\)后,探测面复振幅为
由于不同波长之间通常相互非相干,探测器记录的是各通道强度的叠加:
其中\(w_\ell\)为第\(\ell\)个波长的谱权重,\(L\)为复用波长数。若观测强度为\({{\bf{I}}_m}\),可以采用强度域平方误差作为损失函数:
记强度残差为\({{\bf{r}}_m} = {{\bf{\hat I}}_m} - {{\bf{I}}_m}\)。现在直接对\({{\bf{\bar u}}_{m,\ell}}\)求 Wirtinger 导数。由于\({{\bf{\hat I}}_m}\)中与第\(\ell\)个通道有关的部分为\({w_\ell}{{\bf{u}}_{m,\ell}} \odot {{\bf{\bar u}}_{m,\ell}}\),因此
该式就是波长复用问题的核心。它不是由额外假设得到的,而是直接来自\(\partial (u\bar u)/\partial \bar u = u\)。每个波长通道的梯度由三项相乘构成:谱权重\(w_\ell\)、所有波长共同造成的总残差\({{\bf{r}}_m}\),以及该通道自身的复振幅\({{\bf{u}}_{m,\ell}}\)。因此,多波长通道不是分别独立优化,而是通过同一个残差项被 Wirtinger 导数耦合在一起。
继续对\({{\bf{u}}_{m,\ell}} = {{\bf{A}}_\ell}{\boldsymbol{\psi}}_{m,\ell}\)应用复变量链式法则,得到
再由\({\boldsymbol{\psi}}_{m,\ell} = {{\bf{P}}_{m,\ell}} \odot {{\bf{O}}_\ell}\),得到物体和探针的 Wirtinger 梯度
所以,波长复用叠层重建并不需要引入一套新的求导规则。它只是把普通叠层重建中的单个复振幅\({{\bf{u}}_m}\)扩展为多组复振幅\({{\bf{u}}_{m,\ell}}\),并把强度预测改为\(\sum_\ell w_\ell {{\bf{u}}_{m,\ell}}{{\bf{\bar u}}_{m,\ell}}\)。Wirtinger 导数清楚地告诉我们:总残差先由\(\partial \mathcal{L}/\partial \bar{\bf{u}}_{m,\ell}\)分配到每个波长通道,再沿着\({{\bf{u}}_{m,\ell}}\rightarrow{\boldsymbol{\psi}}_{m,\ell}\rightarrow({{\bf{O}}_\ell},{{\bf{P}}_{m,\ell}})\)这一复变量链式结构继续传递。整个推导的核心始终是\(\partial /\partial \bar z\),而不是额外的物理解释。