前言
深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。 实际中,根据设计好的模型,系统会构建一个计算图(computational graph), 来跟踪计算是哪些数据通过哪些操作组合起来产生输出。 自动微分使系统能够随后反向传播梯度。 这里,反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。
链式法则
链式法则拓展到向量:
- 当y是标量,u为标量,x为向量时(标量对向量求导后为行向量)
- 当y是标量,u为向量,x为向量时(向量对向量求导后是一个矩阵)
- 当y是向量,u为向量,x为向量时(向量对向量求导后是一个矩阵)
- 详细运算规则可以看 https://editor.csdn.net/md/?articleId=136784551
下面的例子展示了如何做链式求导,这里需要注意的是<x,w>表示的是求向量x与向量w的内积,实际上是(x的转置)× w,故求导后为x的转置。
这个例子中b是一个向量,b的第二范数表示的是b的内积,是一个标量,标量对向量求导则是一个行向量,也就是b的转置。