内存复杂度 - 正向、反向传播

在https://courses.d2l.ai/zh-v2/assets/pdfs/part-0_7.pdf 的最后一个Slides中,说到了正向传播的内存复杂度为O(n),反向为O(1)。

Q1:为什么两者的复杂度不一样?

Q2:如果正向传播需要存所有的中间计算过程,那么反向传播不需要存储中间的运算过程呢?

Q3:如果反向传播不需要存储中间的运算过程,那么正想传播能否也用相同的方法呢?

Hi @Qilong, 好问题!正向传播需要每一个neuron的值求下一层,反向传播只需要每层的平均gradient。 More details: https://papers.nips.cc/paper/2016/file/a501bebf79d570651ff601788ea9d16d-Paper.pdf

1 Like


@Qilong
@goldpiggy
我是这么理解的,你们怎么看?
正向传播相当于你在学习探索,神经元传播下去就说明积累的知识技能在下个环节有用,没传播就是积累的没有用。那到最后结果前,你必须把过程中积累的知识技能都保留下,比如考试前你需要背熟整本书。
而反向传播时相当于你考完试了,在对着试卷测试的错题找哪里没有学会,在可导的情况下(即一个结果对应一个原因时),你能一步步通过结果找到原因,那你最后只能获得一个关于错题的知识技能点。

那深度学习的限制是不是,不能对一果同时多因(不可导)的事情来同时反向传播,因为我们天真地认为反向传播一定能找到根上的问题,而可能这个问题本身就由于跃迁到高级所综合导致的?

2 Likes