分子 分母排布
看了多篇文章,觉得此篇标量、向量、矩阵求导(两种布局方式)讲解的最形象易理解。其他文章对两种排布都只是照本宣科,让人费解。
总结如下:
- 先规定向量x默认为列向量,xt为行向量。在此规定下,存在2种矩阵求导的排布风格。
- 矩阵求导,元素众多,因此做法是:先排布再求导。即将矩阵的每个元素都排布好,再单个元素进行逐个求导。-
-
总规律:以x布局,则写结果时第一步优先对x进行元素分解的改写,而对另一个保持不变;
比如分子排布,则先将分子按元素排布:[dy1/dx;dy2/dx;]。之后第二步再对每个元素中的dx进行转置排布。
分子排布,
- 目标为分子为列向量,分母为行向量进行求导和排布,核心为按照分子的形状进行总排布。由于默认dy/dx中,y和x都是列向量,后续的子步骤中y不需要转置,x必须转置。
- 操作步骤入下:
1.如果y是向量或者矩阵,先对y作“分解”,保持x不变,将分子y写成按列的元素排布形式:即 dy1/dx;dy2/dx;dy3/dx;如果y本身是个标量,则跳过步骤1,直接进入步骤2。
2.对列向量中的每个元素dyn/dx,做进一步"x做转置后的元素分解":固定dyn不变,将dyn/dx写成 [dyn/dx1,dyn/dx2,dyn/dx3]行排列形式。矩阵也类似。
分母排布,
- 目标为分子y转置为行向量,x不变维持列向量,进行元素求导和排布。核心为按照分母x列向量的形状进行总排布。后续步骤中,分子要转置,分母x维持原形状。
- 操作步骤入下:
1.如果x是列向量或者矩阵,先维持x的形状对其做“分解”,将x写成子元素排布的形式:即dy/dx=[dy/dx1;dy/dx2;dy/dx3]的形式;如果x本身是个标量,则直接进入步骤2。
2.对分解后的列向量中的每个子元素进行“y转置后的分解”:固定dxn不变,改写dy:dy/dxn=[dy1/dxn,dy2/dxn,…]行向量的形式。
cookbook中的一些规律的分析
分母为一个行向量时,先对分母做分解
- 行向量对行向量求导:yt/xt,先对xt做子元素分解。将分子视为一个元素,不论y是行向量或者矩阵。
- 矩阵对行向量求导 dy/dxt,先对xt做子元素分解。
分母为一个列向量时,x视为一个单独元素。
- 列向量对列向量求导 :y/x,x视为一个单独元素,先对y做子元素分解
- 矩阵对列向量求导,dy/dx,是分母列向量为一个单独元素,不分解,而先对分子矩阵做分解。
向量对矩阵的求导
- 行向量对矩阵x,把矩阵当做列向量,因此为分母布局。固定行向量y,对列向量x的每个元素做分解。
- 列向量对矩阵x,把矩阵当做行向量,因此为分子布局。固定行向量x,对列向量y的每个元素做分解。
矩阵对矩阵的求导
- 将y视为列向量,x视为行向量。用分子布局。
- 将y视为行向量,x视为列向量,分母布局。