机器学习里经常需要用到向量微积分。向量微积分其实并不难,但大学数学一般不提,导致在看机器学习的一些推导时常常感觉疑惑。
机器学习里经常用到标量和向量、向量和向量的求导,其实只是把向量对应位置的元素进行求导。但是,这些元素的组织方式有两种,分别是分子布局和分母布局,二者并无本质上的差别,只是结果相差个转置。这两种布局都存在,初学者常常混淆。
例如求∂x∂y,其中y是n维列向量,x是标量。这个求导就是把y里每个元素分别对x求导,但求导后是得到列向量还是行向量呢?
对于分子布局:
∂x∂y=∂x∂y1∂x∂y2⋮∂x∂yn
对于分母布局:
∂x∂y=[∂x∂y1∂x∂y2…∂x∂yn]
两种布局容易混淆,建议选择自己习惯的布局即可。这里我们选择分子布局进行后面的说明。
符号约定:小写粗体:值为向量;大写粗体:值为矩阵;小写斜体:值为标量。以a、b、c、d表示和x无关的函数,u=u(x),v=v(x),f、g、h是函数。
∂x∂y=[∂x1∂y∂x2∂y…∂xn∂y]
∂x∂y=∂x1∂y1∂x1∂y2⋮∂x1∂ym∂x2∂y1∂x2∂y2⋮∂x2∂ym⋯⋯⋱⋯∂xn∂y1∂xn∂y2⋮∂xn∂ym
这个矩阵又叫雅可比(Jacobi)矩阵。
∂X∂y=∂x11∂y∂x12∂y⋮∂x1q∂y∂x21∂y∂x22∂y⋮∂x2q∂y⋯⋯⋱⋯∂xp1∂y∂xp2∂y⋮∂xpq∂y
虽然看着挺复杂,但不难看出:分子布局的特点是,分子的编号排列和分子相同,分母的编号排列和分母的转置相同。
一些求导公式比较常用,在此列举一下:
∂x∂Ax=A
∂x∂x⊤X=A⊤
∂x∂x⊤x=2x⊤
∂x∂x⊤Ax=x⊤(A+A⊤)
若A为对称阵,则对于上式:
∂x∂x⊤Ax=x⊤(A+A⊤)=2x⊤A
和、积的导数:
∂x∂(u+v)=∂x∂u+∂x∂v
∂x∂(u⋅v)=∂x∂u⊤v=u⊤∂x∂v+v⊤∂x∂u
链式求导:
∂x∂f(u)=∂u∂f(u)∂x∂u
更多详细内容可以参考:Matrix calculus - Wikipedia