[线性代数]矩阵/向量求导为什么要区别分子布局和分母布局

概述

不同的应用领域,对"导数"用途的侧重点完全不同。

这就像在世界上有的国家靠左行驶,有的靠右行驶。两者没有绝对的对错,只是为了适应不同的交通(运算)需求。

原因如下:

1. 用途不同:"更新参数" 和 "线性映射"

这是造成分裂的最主要原因。

A. 优化与机器学习派(偏爱分母布局)
  • 目标: 我们求导的目的是为了利用梯度下降法(Gradient Descent)来更新参数。

  • 痛点: 假设你的神经网络权值矩阵 是一个 的矩阵。计算出损失 后,你需要更新 :

  • 需求: 为了能做减法,导数 的形状必须和 完全一样(也是 )。

  • 结论: 既然我要形状一样,那就强制规定:分母是什么形状,结果就是什么形状。这就是分母布局。如果不这样规定,每次更新参数前你都要手动转置一次,非常麻烦。

B. 纯数学与控制理论派(偏爱分子布局)
  • 目标: 我们求导的目的是为了研究函数局部的线性逼近(Taylor 展开)或者变量之间的变换关系。

  • 痛点: 考虑向量函数 。微分的核心思想是用矩阵乘法来模拟函数变化:

  • 需求: 根据矩阵乘法规则,如果 是 , 是 ,为了让乘法 成立,中间的导数矩阵 必须是 的。

  • 结论: 这种 的形式(行数等于分子维度,列数等于分母维度)就是雅可比矩阵(Jacobian) ,即分子布局。如果你用分母布局,这里的公式就要写成 ,数学家觉得这很不优雅。


2. 链式法则(Chain Rule)的顺滑度

当处理复合函数(层层嵌套)求导时,两种布局在书写公式时的体验完全不同。

  • 分子布局的优势:
    它让链式法则看起来和标量求导几乎一样,非常符合直觉。
    若 ,则:

(矩阵乘法直接相连,中间不需要转置,形式优美)。

  • 分母布局的劣势:
    由于维度的定义翻转了,链式法则通常需要颠倒顺序或者加转置符号:

这就造成了一个有趣的现象:

在推导复杂的数学理论时(如推导反向传播的公式本身),学者们可能倾向于用分子布局 (或混合布局)来保证推导过程的连贯性;但在编写代码库(如 PyTorch, TensorFlow)时,为了工程实现的便利,结果会强制转为分母布局


3. 行向量与列向量的历史遗留问题

这涉及到更底层的数学定义习惯。

  • 如果习惯把数据看作列向量(Column Vector,工程界主流),那么 对 求导最自然,产生雅可比矩阵(分子布局)。
  • 如果习惯把数据看作行向量(Row Vector,部分统计学和早期教材),那么 直接就在分母位置横着放,导数形式自然就变成了分母布局。

由于历史上不同学派的大师(如 Magnus & Neudecker vs. 其它学派)使用了不同的向量定义,导致后世教材一直没能统一。


总结

通过dydx=A⇒dy=Adx\frac{dy}{dx}=A \Rightarrow dy=A dxdxdy=A⇒dy=Adx判断

如果A的形状符合线代的数据习惯,那就是分子布局;如果是转置,那就是分母布局

通常来说,如果在做深度学习 ,默认分母布局 ,因为我们要的是梯度(Gradient)。如果在做纯数学推导或控制理论 ,默认分子布局,因为我们要的是雅可比矩阵(Jacobian)

相关推荐
却道天凉_好个秋1 天前
卷积神经网络CNN(七):感受野
人工智能·python·深度学习·神经网络·感受野
隔壁大炮1 天前
Day07-RNN介绍
人工智能·pytorch·rnn·深度学习·神经网络·算法·numpy
人工智能培训1 天前
规范实操筑牢防线,全域落地安全物理协作
人工智能·深度学习·神经网络·机器学习·生成对抗网络
数据牧羊人的成长笔记1 天前
认识深度学习_PyTorch入门+神经网络基础+卷积神经网络+迁移学习+生成对抗网络_GAN+CNN目标检测+循环神经网络与NLP
pytorch·深度学习·神经网络
茗创科技1 天前
Nature Neuroscience | 脑网络架构如何平衡分布式神经回路之间的合作与竞争?
python·神经网络·matlab·脑网络
机器学习之心HML1 天前
基于遗传算法优化BP神经网络的边坡稳定性预测Matlab
神经网络·matlab·边坡稳定性预测
南宫萧幕1 天前
基于 DQN 与 Python-Simulink 联合仿真的 HEV 能量管理策略实战
开发语言·python·matlab·汽车·控制
aWty_1 天前
实分析入门(2)-- 减法
数学·实变函数
ting94520001 天前
动手学深度学习(PyTorch版)深度详解(2)(模型入门:从理论到实操)
人工智能·深度学习·神经网络