最近在处理一些优化问题时,我才注意到,在不同的书籍、资料中函数 f ( x ) : R n → R m f(x):\R^n \rightarrow\R^m f(x):Rn→Rm 的导数 ∂ f ∂ x \frac {\partial{f}} {\partial{x}} ∂x∂f形式并不一样。如下图,二者在雅各比矩阵的定义上显然不一样(很明显矩阵维度不同)。这一下子就把我弄糊涂了,之前还没从没注意到这个问题。
|
这两种表达不同的原因是其采用的表达形式不同,一种称为Numerator layout(分子布局),一种称为Denominator layout(分母布局)。
如果要方便地区分二者,这里我们记为 Numerator layout: ∂ y ∂ x T \frac {\partial{y}} {\partial{x^T}} ∂xT∂y,Denominator layout: ∂ y T ∂ x \frac {\partial{y^T}} {\partial{x}} ∂x∂yT。为了方便记忆,我们可以记为未转置的向量在那个位置,就是什么布局。
那么两种形式的区别和联系是什么呢?这里我们来看一个最简单的例子(注意!对于标量,转置和不转置没有区别。粗体为列向量):
∂ y ∂ x T = [ ∂ y 1 ∂ x T ⋮ ∂ y m ∂ x T ] ∂ y T ∂ x = [ ∂ y 1 T ∂ x … ∂ y m T ∂ x ] \frac {\partial{\mathbf{y}}} {\partial{\mathbf{x}^T}}=\begin{bmatrix} \frac {\partial{y_1}} {\partial{\mathbf{x}^T}} \\ \vdots\\ \frac {\partial{y_m}} {\partial{\mathbf{x}^T}} \end{bmatrix} \quad \frac {\partial{\mathbf{y}^T}} {\partial{\mathbf{x}}}=\begin{bmatrix} \frac {\partial{y_1^T}} {\partial{\mathbf{x}}} & \dots &\frac {\partial{y_m^T}} {\partial{\mathbf{x}}} \end{bmatrix} ∂xT∂y= ∂xT∂y1⋮∂xT∂ym ∂x∂yT=[∂x∂y1T…∂x∂ymT]
通过这个例子,这两种表达的规律大家应该就很清晰了,并且也应该会觉得这两种写法导致结果的不同是很自然的。接下来,我们继续探究,我们先来回忆一下对标量函数导数的一个定义 d y = f ˙ ( x ) d x dy=\dot{f}(x)dx dy=f˙(x)dx(这里不写为除法形式,是因为对于向量来说除法并不存在)。在进行高维推广时,我们自然而然的想要得到相同的形式。可是我们会发现,实际情况会略微变复杂一些。我们还是看一个简单的例子:
A ∈ R m × n , y ∈ R m , x ∈ R n y = f ( x ) = A x according to figure.2 → ∂ y ∂ x T = A , ∂ y T ∂ x = A T d y = A d x = ∂ y ∂ x T d x , d y = ( d x T A T ) T = ( ∂ y T ∂ x ) T d x A \in \R^{m\times n}, y\in \R^m, x\in\R^n \\ y=f(x)=Ax \\ \text{according to figure.2 } \rightarrow \frac {\partial{y}} {\partial{x^T}}=A,\frac {\partial{y^T}} {\partial{x}}=A^T \\ dy=Adx=\frac {\partial{y}} {\partial{x^T}} dx, \quad dy=(dx^TA^T)^T=(\frac {\partial{y^T}} {\partial{x}})^Tdx A∈Rm×n,y∈Rm,x∈Rny=f(x)=Axaccording to figure.2 →∂xT∂y=A,∂x∂yT=ATdy=Adx=∂xT∂ydx,dy=(dxTAT)T=(∂x∂yT)Tdx
所以我们可以直观地看到,分子布局的结果,我们可以直接使用;而对于分母布局的结果,我们需要转置后再使用。
如想更进一步理解,请看如下好文:
矩阵求导术(上)
矩阵求导术(下)
矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式