深度学习能力出众,已经取得了很多亮眼的成绩;但深度学习也并非万能,以色列希伯来大学和威兹曼科学院的研究者对此进行了研究。机器之心技术分析师对相关论文进行了解读,本文为解读的中文版。
论文地址: https://arxiv.org/abs/1703.07950
GitHub:https://github.com/shakedshammah/failures_of_DL
现在,计算机视觉、音频处理和自然语言处理与生成等很多领域都在使用深度学习。深度学习创造了当前最佳。但人们也应该注意到深度学习仍然存在局限性。2015 年,Anh Nguyen 在 CVPR 发表的一篇论文 [1] 就已经找到了深度学习在计算机视觉领域的局限性,即通过人类难以察觉的方式修改图像也能够骗过深度神经网络(DNN),从而导致 DNN 将该图像标注成完全不一样的事物。
回到本文所要讨论的论文《Failures of Gradient-Based Deep Learning》,研究者描述了四大类问题。在这些问题上,常用的已有算法都会失败或会遇到很大的困难。
引言
这篇论文的目的是展示和讨论会导致常用的方法表现不佳的四类简单问题。第一节将讨论在目标函数上带有可忽略信息的梯度信息。第二节将讨论两种用于学习和优化问题的常用方法。第三节,研究者表明即使两种架构具有同样的表现能力,在优化它们的能力也可能会存在重大的差异。最后一节,研究者关注了一个简单案例,并以此质疑了深度学习的优化过程对“单纯”的梯度信息的依赖。
实验
因非信息梯度导致的失败
这个实验的目的是表明如果梯度中的信息很少,使用它来进行学习就无法成功。
研究者首先从学习随机奇偶校验的简单问题开始:首先选择某个 v* ∈ {0, 1}d,然后使用 y 指示 x 坐标(由 v* 指示)的一个特定子集中的 1 的数量是奇数还是偶数。(配置:hinge 损失、一个带有 ReLU 激活的全连接层、一个带有线性激活和单个单元的全连接输出层)。
我们可以从图 1 中看到,维度 d 的增大会导致学习难度增大。在大约 d=30 这个程度之后,经过合理时间后也没有观察到优于随机的表现。
研究者使用两个定理对此进行了详细的分析,最终得出了结论:基于梯度的方法确实不能学会随机奇偶校验和线性周期函数。此外,不管我们使用哪一类预测算法,只要使用了基于梯度的方法来进行训练,这个结果都成立。
总结一下,通过直接检查梯度在目标函数方面的方差,研究者简单地将基于梯度的方法与奇偶校验联系在了一起,并提出基于梯度的方法确实不太可能解决对统计查询式框架而言难以应对的学习问题,尤其是奇偶校验问题。
分解与端到端
在学习和优化过程中,人们所选择的方法主要可分为两类:端到端方法或分解方法。研究者在这一节试图搞清楚使用端到端方法是否划算。(研究者主要关注的是优化方面,结果表明“端到端”方法可能遭遇低信噪比的问题,这可能会影响训练时间。)这一节有两个实验。
实验 1
实验 1 在计算机视觉设置中对这两种方法进行了比较。研究者定义了一类问题,并表明随着 k (k ∈ N) 增大,端到端方法与分解方法之间的差距也会增大。
实验中,X1 表示 28×28 二元图像的空间,并使用某个函数来定义其中的分布。
图 2:原论文中 3.1 节的实验——来自 X1 的样本示例。上行和下行的 y 值分别为 1 和 -1.
这里省略实验中的详细配置部分,我们直接来看结果。当基于“主要”目标进行比较时,我们可以看到端到端方法相比于分解方法存在明显劣势。通过使用分解方法,我们可以快速得到优良的解。
图 3:原论文 3.1 节实验中两种方法的表现对比。红色和蓝色曲线分别对应端到端方法和分解方法。这些图展示了在一个留存测试集上,关于“主要”目标的 0-1 准确度随训练迭代次数的变化情况。端到端方法和分解方法分别训练了 20000 和 2500 次 SGD 迭代。
实验 2
这是一个训练预测器的问题:给定一只特定股票选择的一个“正面媒体参考”x 进行预测。预测器会以某种方式将我们的资产在标准普尔 500 指数中的 k=500 只股票上进行分配。如上所述,有两种训练方法:
- 端到端方法:训练一个深度网络 Nw,给定 x,输出在 k 只股票上的分布情况。训练目标是根据这一分布配给我们的资产,实现收益最大化。
- 分解方法:训练一个深度网络 Nw,给定 x,输出未来收益与 x 最正相关的单只股票。当然,根据这一指标,我们可能还需要收集额外的标签。
研究者在非真实的假设下进行了比较实验。详细配置情况请参阅论文。
图 4:分解方法与端到端方法的对比:对于维度 d=1000 的输入和不同的 k 值,损失随训练迭代次数的变化。红色和蓝色曲线分别对应端到端和分解方法训练的估计器的损失。
图 4 清楚地表明,使用端到端方法的表现不及使用分解方法。
研究者的分析方法是检查这两种随机梯度估计器的信噪比(SNR),结果表明端到端方法得到的结果要差很多。
图 5:原论文 3.1 节的实验:端到端方法(红色)和分解方法(蓝色)的信噪比随 k 的变化情况。当 k≥3 时,端到端方法的信噪比低于 32 位浮点数所能表示的精度。
我们可以轻松地在图 5 中看到端到端方法的信噪比明显更低,更重要的是,结果表明 k 有很大的影响——当 k 增大时,端到端方法的信噪比将很快降至机器精度之下,而分解方法的信噪比基本保持不变。
因此,研究者得到了直接监督的优势的进一步证据——不管其何时应用到问题上。
架构和条件
选择网络架构时,通常要考虑两点:一是在不显著增大样本复杂性的同时提升网络的表现能力;二是改善训练的计算复杂度。架构的选择通常都会影响到训练时间。
研究者实验了用于编码一维、连续、分段线性(PWL)曲线结构的多种深度学习方案。研究者考虑了条件数量很大的凸问题,并通过卷积架构改善条件数量。通过理论分析,研究者指出卷积架构的应用对设定条件的效率而言至关重要,而且更好的架构和更好的条件组合到一起,能让我们获得重大的提升。
研究者还实验了一种用于编码的更深度的架构。这两个网络中每一个都有三个带有 ReLU 激活的层,但 M 的输出层除外,其使用了线性激活。N 的各层的维度是 500、100、2000;M 的各层的维度是 100、100、n。
图 6:原论文第 4 节实验“学习编码 PWL 曲线”,解码后的输出的示例。蓝色的是原始曲线。红色的是解码后的曲线。从左至右,图中展示了两条曲线经过 500、10000 和 50000 次迭代后的输出结果。
平坦的激活函数
激活函数的饱和会造成损失表面的平坦,进而又会导致梯度消失问题和训练过程减速,这会给优化带来困难。研究者考虑了一类分段平坦且会放大“由于激活饱和导致梯度消失”问题的激活函数。
主要有四个实验:
图 7:原论文第 5 节实验:通过步骤函数的反向传播。水平轴的值是 r。绿色虚线是指标签 u(r)。红色曲线展示了所学习到的假设的输出。这些图在 r 的均值附近进行了缩放。在非平坦近似的图(a)中,紫色的曲线表示非平坦近似。注意多类别实验中类别之间边界的不准确性。所有图表都给出了经过 10000 次训练迭代后的结果,但图(e)除外,这是 5000 次迭代后的结果。
对于非平坦近似实验,研究者尝试使用一个非平坦函数来近似 u。尽管这个目标并不是完全平坦的,但它也会遭受平坦性的影响,并且使用这个目标的训练速度要慢得多。有时候还会失败。另外,研究者还表明其对偏置项的初始化很敏感。
对于端到端实验,这个方法能够找到一个合理的解,但正如研究者说的那样,这会将获取非连续点中的不准确性带到前端,并且由于要使用大得多的网络,所以还会有额外的代价。
对于多类别实验,研究者将该问题近似成了一个通用的多类分类问题,其中 u 的图像的每个值都被当作是一个单独的类。问题是类别边界处的不准确性。另外,我们忽视的排序会导致更高的样本复杂性。
对于“仅前向”实验,可被认为是用一个身份信息替换用于激活函数的反向传播信息。这种方法得到了最佳的结果,研究者还在附录中提供了证明。
总结
这篇论文提供了四种主要情况下最常见的失败用法。还提供了理论见解来解释这些问题的来源,以及如何补救这些问题的方式。论文唯一的不足之处是没有涵盖非常深度的网络,但老实说,非常深度的网络非常复杂,这篇论文所研究的条件也可能会发生改变。
参考文献
[1] Nguyen, Anh, Jason Yosinski, and Jeff Clune. "Deep neural networks are easily fooled: High confidence predictions for unrecognizable images." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.