4 矩阵计算(求导方面)

57 阅读1分钟

4 矩阵计算(求导方面)

B站视频链接 4 矩阵计算


0 引言

这里所谓的矩阵计算并非简单的矩阵之间的加减乘除,而是利用矩阵进行求导的运算,这个运算在今后的设计以及编写过程是非常重要的。

首先 2 数据操作和数据预处理 中便已经知道了标量、向量以及矩阵的关系,现在就依靠这几个数据类型进行说明和运算。

定义:

  • 标量:全是小写的字母ab a、b
  • 向量:带箭头的小写字母 ab\vec{a} 、\vec{b}
  • 矩阵:大写的字母AB A 、B

1 标量的导数

标量就是一个数据,类似于1231、2、3,并非数组或是向、矩阵等。

y=f(x)xy = f(x)、x就是标量 、f(x)f(x)是对应法则 、 yy是自变量

yydydx\frac{dy}{dx}
aa00
xnx^nnxn1nx^{n-1}
exe^xexe^x
lnxlnx1x\frac{1}{x}
sinxsinxcosxcosx
u(x)+v(x)u(x)+v(x)dudx+dvdx\frac{du}{dx} + \frac{dv}{dx}
u(x)×v(x)u(x) \times v(x)dudx×v(x)+dvdx×u(x)\frac{du}{dx} \times v(x) + \frac{dv}{dx} \times u(x)
u(x)v(x)\frac{u(x)}{v(x)}uvuv(v)2\frac{u'v-uv'}{(v')^2}

对于不能求导的函数又该怎么办呢?

例如: f(x)=xf(x) = |x|

image-20250821134657097

不难看出该函数在x>0x>0时候f(x)=1x<0f'(x) = 1 , x<0时候f(x)=1x=0?f'(x) = -1 , x = 0?

这个函数在x=0x=0的位置明显不可导,对于这种不可导的函数又该怎么办呢?

这个时候有一个叫做亚函数,虽然我不知道他有啥用但是应该和偏导数应该类似,这个时候上面的导数可以写成为

xx={1,x<01,x>0a,x=0\frac{\partial |x|}{x} = \left \{ \begin{array}{l} -1 &, x<0\\ 1 &, x>0\\ a &, x=0\\ \end{array} \right.

这个时候便可以引入了一个新的数学定义-梯度grad

注意梯度是一个向量而非数据,梯度的方向一定是函数方向导数的最大值

在任意一点P(x1,x2,...,xn)P(x_1 , x_2 , ... ,x_n)的梯度为

gradf(p)=(fx1P(x1,x2,...,xn),...,fx2P(x1,x2,...,xn))=(y1,y2,...yn)gradf(p) = (\frac{\partial f}{x_1}|_{P(x_1 , x_2 , ... ,x_n)} , ...,\frac{\partial f}{x_2}|_{P(x_1 , x_2 , ... ,x_n)} ) = (y_1 , y_2,...y_n)

2 向量和标量的混合导数

向量和标量之间混合求导会出现下面四种情况

  1. yy是一个标量 ,xx也是一个标量 会得到yx\frac{\partial y}{\partial x }也是一个标量 。
  2. y\vec{y}是一个向量 ,也是一个标量 会得到yx\frac{\partial \vec{y}}{\partial x }是一个向量 。
  3. yy是一个标量 ,x\vec{x}也是一个向量量 会得到yx\frac{\partial y}{\partial \vec{x} }也是一个向量 ,但是是一个躺着的向量 。
  4. y\vec{y}x\vec{x}均为向量,那么yx\frac{\partial \vec{y}}{\partial \vec{x} } 就是一个矩阵A 。

image-20250821140334146

举个例子说明一下吧:

y=[y1y2yn],x=[x1x2xn]yx=[y1xy2xynx]=[ly1x1y1x2y1xny2x1y2x2y2xnynx1ynx2ynxn]\text{令}\overline{y}=\left[ \begin{array}{c} y_1\\ y_2\\ \vdots\\ y_n\\ \end{array} \right] \,\,,\,\,\overline{x}=\left[ \begin{array}{c} x_1\\ x_2\\ \vdots\\ x_n\\ \end{array} \right] \text{则}\frac{\partial \overline{y}}{\partial \vec{x}}=\left[ \begin{array}{c} \frac{\partial y_1}{\partial \vec{x}}\\ \frac{\partial y_2}{\partial \vec{x}}\\ \vdots\\ \frac{\partial y_n}{\partial \vec{x}}\\ \end{array} \right] =\left[ \begin{matrix}{l} \frac{\partial y_1}{\partial x_1}& \frac{\partial y_1}{\partial x_2}& \cdots& \frac{\partial y_1}{\partial x_n}\\ \frac{\partial y_2}{\partial x_1}& \frac{\partial y_2}{\partial x_2}& \cdots& \frac{\partial y_2}{\partial x_n}\\ \vdots& \vdots& \cdots& \vdots\\ \frac{\partial y_n}{\partial x_1}& \frac{\partial y_n}{\partial x_2}& \cdots& \frac{\partial y_n}{\partial x_n}\\ \end{matrix} \right]

3 总结

yy如果是向量的话这个是竖着的。

xx如果是向量的话这个是躺着的。