向量链式法则
说明:
1.第一个式子, y是标量,u是标量,x是n维向量
2.第二个式子,y是标量,u是k维向量,x是n维向量,所以y对u求导是k维的行向量,u对x求导是k行n列的矩阵(u在分母,所以有k行)
3.同上
例1
说明:
1.a对w的导数:a是x与w的内积,<x,w> = xTw,即x的转置乘以w,所以就是xTw对w求导,得到xT
例2
说明:
1.L2范数的定义是向量元素平方和的平方根
2.向量a对向量a本身求导,是一个主对角线为1的矩阵(根据向量对向量求导的定义可知)
自动求导
- 自动求导计算一个函数在指定值上的导数
- 它有别于
- 符号求导
- 数值求导
计算图
- 将代码分解成操作分子
- 将计算表示成一个无环图
- 显示构造
- Tensorflow/Theano/MXNet
- 隐式构造
- Pytorch/MXNet
\
自动求导的两种模式
例1
反向累计总结
- 构造计算图
- 前向:执行图,存储中间结果
- 反向:从相反方向执行图
- 去除不需要的枝
复杂度
- 计算复杂度:O(n),n是操作子个数
- 通常正向和反向的代价类似
- 内存复杂度:O(n),因为需要存储正向的所有中间结果
- 跟正向累计对比:
- O(n)计算复杂度用来计算一个变量的梯度
- O(1)内存复杂度