美文网首页
李沐-动手学深度学习(五)自动求导

李沐-动手学深度学习(五)自动求导

作者: minlover | 来源:发表于2022-06-16 10:14 被阅读0次

    1、向量链式法则

    内积<x,w>=x^T*w=[x1*w1,x2*w2,...xn*wn]是个标量,标量对向量求导,是向量的转置维度

    2、自动求导

    (1)神经网络动不动几百层,很难手动计算

    符号求导指把导数公式求出来。数值求导指不需要知道具体的f(x)形式。

    (2)自动求导怎么做的:计算图——本质上等价于用链式法则求导的过程。

    计算图是一个无环的图

    (3)显示构造:Tensorflow、Theano、MXNet

    (4)隐式构造:PyTorch、MXNet

    (4)有了计算图后,两种自动求导的方式

    前向需要把所有中间值存下来,反向时(那俩灰的导数如果不需要就可以不算了),需要把中间结果拿过来用

    反向累积前,需要先正着来一遍计算复杂度0(n),然后反向累积的计算复杂度O(n)。

    反向累积内存复杂度高O(n),因为需要把正向的中间结果储存下。所以深度神经网络很耗GPU资源。

    下图中,上面的正向只反向的第一步,下面的正向指正向累积。

    正向累积的好处是,内存复杂度O(1),不管多深,不用存储中间结果,但是缺点是,每计算一个变量的梯度需要扫一遍O(n)。所以神经网络中不太用,因为神经网络需要对每一层算梯度,正向累积计算复杂度太高。

    chapter_preliminaries/autograd.ipynb

    x是tensor([0., 1., 2., 3.])。y是一个向量,但是机器学习中很少对一个向量函数来求导,所以大部分情况都是对标量求导,绝大部分情况,会对y进行一个求和sum再求导。

    这是因为机器学习的loss经常是一个标量。

    相关文章

      网友评论

          本文标题:李沐-动手学深度学习(五)自动求导

          本文链接:https://www.haomeiwen.com/subject/cezxvrtx.html