是的!你应该了解反向传播

作者:Andrej Karpathy (OpneAI联合创始人)
发表时间:2016年12月
翻译者:Dorothy,翻译过程中参考了这个翻译
当我们在斯坦福大学提供CS231n时(CS231n: Convolutional Neural Networks for Visual Recognition,是顶级院校斯坦福出品的深度学习与计算机视觉方向专业课程),我们在最基础的反向传播课程中特意设计了包含显示计算的编程作业。学生们必须用原始numpy(用于科学计算的Python库)实现每一层的正向和反向传播。难免有学生在课堂留言板上抱怨: “为什么我们要手动编写反向传播,而在现实世界中的框架(如TensorFlow)会自动计算它们?”
这似乎是一个非常合理的呼吁——一旦课程结束后你再也不会编写反向传播,为什么还需要练习呢?我们只是为了自娱自乐而折磨学生吗?一些简单的回答或许可以勉强解释:“出于对知识的好奇,你值得知道”或者“万一以后你想改进核心算法”,但是以下是更有力更实际的论据,我想专门写一篇文章来阐述一下。
向传播的问题在于它是一个抽象漏洞。The Law of Leaky Abstractions 是一个有关程式的定律。最早是由Joel Spolsky在其blog中提出,其定义为“所有非不证自明的抽象概念,都有某种程度的疏漏”)
换句话说,很容易陷入抽象化学习过程的陷阱—觉得自己可以简单地将任意层堆叠在一起,然后反向传播会在你的数据上“神奇地发挥作用”。那么让我们来看一些明显的例子,而事实并非如此,以非常不直观的方式。
附件不支持打印

加载失败,