深度学习是否已经足够成熟,可以在高中进行教学?
对这个问题的思考源于我前段时间收到的一封电子邮件,它来自一家大公司的产品经理:
你如何指导年轻的团队测试自己的想法,或产生直觉呢?
我的团队里的工程师经常“直接”使用来自其他研究人员的超参数值,他们对需要自己调参的任务十分害怕....
我对着这封邮件想了好几天,还是没能给出一个有建设性的答案。
如果非要回答的话,我想回复她说,也许她的工程师们本来就应该害怕。
一个神经网络的架构
想象一下,你是一名工程师,现在给你一个这样的网络,并要求你在数据集上让这个网络工作得更好。你可能会认为网络中的的每一个层在那儿都是有原因的。但就一个研究领域来说,我们对于这些原因的描述还没有形成共识。我们教学深度学习的方式与教授其他技术学科的方式截然不同。
几年前,我开始接触光学。在光学领域,你也需要像深度学习一样构建一个用于处理输入的组件堆栈。下图是一个镜头的堆栈图:
为了设计这样一个结构,你需要从基本的堆栈开始(通常以它的发明人命名),然后模拟它,以找到那些达不到性能要求的情况,然后插入额外的组件来纠正缺点。
然后通过数字优化器运行这个系统来进行调参,例如曲面的形状、位置和倾斜度,从而最大化某些设计目标。然后,再次进行模拟,修改,优化,重复这样的过程。
就像深度神经网络一样。
堆栈中的36个部分都是专门添加进去以纠正某种类型的成像误差。这需要有一个非常清晰的思维模型,确定每个组件对于通过它的光线起什么作用。这个思维模型通常依据光线的某个行为,例如折射、反射、颜色、色散或波前校正。
人们不会害怕这个设计过程。每年,美国有数百名光学工程师毕业并继续从事镜头设计工作。他们并不害怕自己的工作。
这不是因为光学很容易。这是因为光学的思维模型组织得很好。现代光学的教学方式是像下图这样抽象的。
最简单的一层是射线光学(ray optics)。射线光学是波动光学(wave optic)的简化,射线代表波动光学中波前的法向量。波动光学是麦克斯韦方程的近似解。而麦克斯韦方程可以从量子物理推导,这些我实际上并不懂。
金字塔的每一层都是通过简化的假设从它的下面一层推导的。因此,每一层都可以解释比它的上面的层更复杂的现象。
我设计系统的大部分时间都花在金字塔最上面的四个抽象层上。
以上就是现代光学教学的方式。但是这些理论并不是一直都是这样以堆栈的方式组织的。直到一百年前,这些理论都还有一些矛盾的部分共存着。当时的从业者只能依靠一些民间的光学理论工作。
这并没有阻止伽利略在牛顿正式提出射线光学理论将近一百年前建造出一台很好的望远镜。伽利略对如何制造一台能放大10倍的望远镜有一个很好的光学思维模型。但他的理解还不足以指导他纠正色差,或获得更广的视野。
在这些光学理论被统一进一个金字塔形的抽象堆栈之前,每一个理论都必须从光的基本概念开始推导。这导致出现一系列不切实际的假设。牛顿的射线光学将光线模拟为可能被固体物质吸引或排斥的粒子雾。惠更斯将光模拟为一种纵向压力波,通过被称为“以太”(ether)的神秘媒介传播。惠更斯把光像声波一样建模。麦克斯韦也假设光线通过以太传播,麦克斯韦方程的系数名称中还能看到这个想法的痕迹。
模型很傻,是的。但它是定量的、预测性的。
尽管上述的光学假设在今天听起来可能很愚蠢,但这些模型是定量的,并且具有预测能力。你可以向其中代入数字,并获得数值化的预测。 这对于工程师来说非常有用。
目标:一种用于描述深度学习每一层的行为的模块化语言
如果我们能够像讨论光线穿过光学元件时该元件的作用一样讨论深度学习中每一层的作用,那么深度神经网络的设计将会变得更容易。
我们将卷积层作为对输入进行匹配的过滤器,随后的非线性作为pooling。这是一个相对底层的描述,类似于用马克斯韦方程描述镜头的作用。
也许有更高层次的抽象可以依赖,例如通过一个网络的层而被修改的量(quantity),类似于透镜在弯曲射线方面的作用。
如果这个抽象是定量的,那会很好,你就可以在一个公式中代入数字来进行背后的分析,以帮助你设计网络。
有关深度学习的六个现象
我们目前离这种语言远。从简单的事情开始吧。
但我的想法正变得天马行空起来。
让我们从简单的事情开始吧。我们有很多关于深度网络的训练如何工作的思维模型。我收集了一些值得解释一番的现象。 让我们看看这些思维模型是如何解释这些现象的。
在我的思考走得太远之前,我得承认这样的练习是必须的。光学用了300年的时间才做到这一点。而我只花了一个周六的下午。我只在博客上报告我的发现。
现象1:SGD一个随机初始化程序就已经足够。但之后的一些小的数值错误,或者不好的步长大小,都会破坏SGD的效果。
一些从业人员已经观察到,如何累积梯度的微小变化会导致测试集性能出现很大差异。例如,当你使用GPU而不是CPU进行训练,就会出现这种情况。
你认为这是值得解释的合理观察吗?
还是你认为这是一个建立在错误观念之上的观察,可能是不真实的?
还是你认为这个观察存在什么问题,比如逻辑上自相矛盾,或者是错误的说法?
我敢肯定,感情是复杂的,但让我把这些作为一种现象记录下来,然后继续讨论。
现象2:浅的局部极小值泛化性比深的更好。
这种说法很流行。有些人坚持说这是对的,其他人,包括我自己,都认为这在逻辑上不可能是真的。其他人则以经验为由驳斥这一说法。还有一些人提供了这个说法的细化的变体。这些说法仍然没有得到统一。
我注意到这个现象可能会有争议,但是先记录下来。
现象3:插入批量归一化层(Batch Norm layers)会加快SGD。
Batch Norm 的工作大多是无可争议的。我只提供一个比较严重的例外,并无保留地将其作为一个现象记录。
现象4:尽管有许多局部最优点和鞍点, SGD仍然是有效的。
关于这一现象有多个说法。通常认为,深度学习的训练损失表面充满了鞍点和局部最小值。此外,也有不同的说法认为,梯度下降可以遍历这些危险,或者不需要遍历这些危险来产生一个可以很好地泛化的解决方案。同样也有一些说法认为,深度模型的损失表面是完全良性的。
现象5: Dropout效果比其他随机化策略更好。
我不知道把Dropout类的操作分到哪一类,所以暂且称之为“随机策略”。
仅仅是记录,不讨论。
现象6:深度网络可以记住随机的标签,然而,这些标签可以推广。
证据很显然,已经得到一些人的证实和支持。
我把它作为一个现象记录下来,尽管和我们的目的有冲突。
解释
我们收集了一些现象。从我上面提到的论文中,我也收集了一些理论,我认为这些理论有很大机会解释这些现象。
让我们看看这些理论和现象的对应关系:
但是先不要高兴太早,还有几点需要考虑的:
1 首先,我们无法就我们最初试图解释的一些观察达成一致意见。2 其次,我不能把解释分解成抽象的层次。让光学易于学习的东西在这里都没有体现出来。
3 第三,我怀疑我所引用的一些理论是不正确的。
我的观点
有大批新人正在涌入深度学习的领域,而我们给他们提供的仅仅是预训练的深度网络,并要求他们进行创新。我们本该解释的上文提及的那些现象,我们自己都无法得出一致的结论。我认为我们距离在高中教学深度学习还太远。
那么怎么到达可以教高中生深度学习的阶段呢?
如果我们能够在各种抽象层上提供有关深度网络层的行为的思维模型,那将是非常好的事情。在深度学习理论中,什么是相当于光学中的折射、散射和衍射的概念呢?也许你已经能从这些角度思考了,但是我们还没有围绕这些概念形成标准化的语言。
让我们收集一系列得到一致认同的现象,然后可以试着解释它们。我们可以得到哪些相当于光学中的牛顿环、克尔效应和法拉第效应的理论?
我和一小组同事已经开始了一项大规模的实证研究,试图对深度学习领域中的思维模型进行分类,将其形式化,然后用实验进行验证。这有很多工作要做。我认为如果要构建一个可以在高中教授的层次化的思维模型,这些工作是第一步。
原文发布时间为:2018-02-11
本文作者:Ali Rahimi
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号
原文链接:【让高中生掌握深度学习】掀起DL炼金术之争的Ali,这次要像教物理那样教深度学习