人工智能算法数学基础之求导过程推导(单变量函数求导、多变量函数求导、向量求导、矩阵求导)

1、导数定义:

函数y=f(x)在点x0的某个邻域内有定义,当自变量x在x0处有增量Δx,(x0+Δx)也在该邻域内时,相应地函数取得增量Δy=f(x0+Δx)-f(x0);如果Δy与Δx之比当Δx→0时极限存在,则称函数y=f(x)在点x0处可导,并称这个极限为函数y=f(x)在点x0处的导数记作

需要指出的是:

两者在数学上是等价的。

导函数

如果函数y=f(x)在开区间内每一点都可导,就称函数f(x)在区间内可导。这时函数y=f(x)对于区间内的每一个确定的x值,都对应着一个确定的导数值,这就构成一个新的函数,称这个函数为原来函数y=f(x)的导函数,记作y'、f'(x)、dy/dx或df(x)/dx,简称导数。

导数是微积分的一个重要的支柱。牛顿莱布尼茨对此做出了贡献。 

几何意义

函数y=f(x)在x0点的导数f'(x0)的几何意义:表示函数曲线在点P0(x0,f(x0))处的切线的斜率(导数的几何意义是该函数曲线在这一点上的切线斜率)。


2、简单函数的导函数推导过程:求导数的公式(微分高阶无穷小等于0)

前提,当△x->0      △x^2 == 0(微分公式的定义)

f(x) = x^2

f'(x) = (f(x+△x) - f(x))/△x
f'(x) = ((x+△x)^2 - x^2)/△x
f'(x) = (x^2 + 2*△x*x + △x^2 - x^2)/△x   # 此处 △x^2 == 0 
f'(x) = 2*△x*x/△x  
f'(x) = 2*x

3、单自变量复杂函数求导

单自变量:f(x) = 2*x^2 + 2*x + 2*x^6
因变量:f(x)

4、多自变量复杂函数求偏导

多自变量:f(x,y,z) = 2*x + 2*y^2 + log2(z)(y=1,z=1)

偏导数:
f'(x) = 2
f'(y) = 4*y
f'(z) = (z*log(e)2)^-1

5、向量与向量的运算求导

对向量和向量的运算求偏导数(将向量的每个元素都认为是变量,因为两个向量的运算得到一个常量,所以函数f其实是常量对向量求偏导数):
f(w,x) = wx(dot)       因为两个向量的点积运算得到一个常量(一个数值)

f([w1,w2...wn],[x1,x2...xn]) = wx = c

f((w1,w2...wn),(x1,x2...xn))  = w1*x1 + w2*x2 + ... + wn*xn

f'(w1) = x1
f'(w2) = x2
...
f'(wn) = xn

f'(w) = x.T
f'(x) = w.T


6、矩阵和向量求偏导:


f(W,x) = Wx(dot)        矩阵和向量原酸得到一个向量,所以是向量对矩阵求偏导和向量对向量求偏导

f([[w11,w12...w1n],
  [w21,w22...w2n],
  .
  .
  .
  [wm1,wm2...wmn]],  [x1, x2,..., xn].T
)

f()1 = w11*x1 + w12 * x2 + w1n * xn 
f()2 = w21*x1 + w22 * x2 + w2n * xn 
.
.
.
f()m = wm1*x1 + wm2 * x2 + wmn * xn 

对W求偏导数的推导过程

f'1(w11) = x1
f'1(w12) = x2
...
f'1(w1n) = xn

f'1(w21) = 0
f'1(w22) = 0
...
f'1(w2n) = 0

f‘(W) = [[[x1,x2...xn],[0,0...,0]...[0,0...0]],...,[[0,0...,0]...[x1,x2...xn]]]  函数f(W,x)对W的导数是一个三维矩阵

f'1(x) = [w11,w12....w1n].T
f'2(x) = [w21,w22....w2n].T
.
.
.
f'm(x) = [wm1,wm2....wmn].T

f'(x) = W.T   # 得出对向量的偏导数是原矩阵的转置

7、矩阵和矩阵的求导 N*D  D*M:


f(W,X) = WX(dot)        矩阵与矩阵的运算得到得到一个结果矩阵,则是矩阵对矩阵求导,会得到一个4维导数矩阵

f([[w11,w12...w1d],          [[x11, x12...x1m],     
  [w21,w22...w2d],            [x21, x22...x2m],
  .                                        .
  .                              dot     .
  .                                        .
  [wn1,wn2...wnd]],           [xd1,xd2...xdm]]
)
N*M个计算公式,产生N*M个计算结果:
f11() = w11*x11 + w12*x21 + ... + w1d*xd1
f12() = w11*x12 + w12*x22 + ... + w1d*xd2
.
.
.
f1m() = w11*x1m + w12*x2m + ... + w1d*xdm
.
.
.
fnm() = wn1*x1m + wn2*x2m + ... + wnd*xdm

f'11(w11) = x11
f'11(w12) = x21
.
.
.
f'11(w1d) = xd1

f'11(w21) = 0
f'11(w22) = 0
.
.
.
f'11(wnd) = 0

f'11(W) = [[x11,x21,...,xd1],
          [0,0,.......,0]],
          .
          .
          .
          [0,0,.......,0]],
          ]]
          
f'12(W) = [[x12,x22,...,xd2],
          [,0,.......,0]],
          .
          .
          .
          [0,0,.......,0]],
          ]]

f'1m(W) = [[x1m,x2m,...,xdm],
          [,0,.......,0]],
          .
          .
          .
          [0,0,.......,0]],
          ]]
         
f'21(W) = 
f'22(W) = 
.
.
.
f'2m(W)
          
.
.
.
f'n1(W) = 
f'n2(W) = 
.
.
.
fnm'(W) = 

发布了34 篇原创文章 · 获赞 54 · 访问量 5023

猜你喜欢

转载自blog.csdn.net/nosprings/article/details/102705820
今日推荐