神经网络的“非直观属性”汇总

简介:

雷锋网按:本文由图普科技编译自《Summary of Unintuitive Properties of Neural Networks》,雷锋网(公众号:雷锋网)独家首发。

神经网络对解决很多问题都十分有效,包括语言识别、语音识别和图像识别等。然而要理解神经网络是如何解决这些问题却有一定的难度。本文将对神经网络的特殊和“非直观属性”进行总结整理。

神经网络是强大的学习模型,特别是用于解决视觉识别和语音识别问题的深度学习网络。之所以这么说,是因为它们具有表达任意计算的能力。但是我们现在仍然很难完全理解神经网络的属性,因此,我们不知道它们是如何在一个动态的环境下作出一个又一个决策的。受到Hugo Larochelle的启发,我们在本文总结了神经网络的“非直观”属性。

  • 这是一个“黑箱子”问题

网络的决策过程非常复杂,而且涉及到了许多的层,因此我们很难搞清楚其中的思路。为了一步步弄清神经网络是如何进行训练的,我们做出了很大的努力(比如,一个研究人员开发了一个“深度可视化工具包”)。尽管如此,这些层的内部对我们来说还是相当的复杂。

神经网络的非直观属性汇总

深度可视化工具包的截图

  • 它们也会犯一些低级错误

一个由“谷歌研究所”和纽约大学的研究人员组成的团队最近发现,一些具有对抗性的示例似乎会与网络的高度泛化性(也称“概括性”)产生矛盾。我们现在急需弄清网络是否能够很好地进行泛化,以及它是如何被这些对抗性例子所迷惑的。

神经网络的非直观属性汇总

神经网络的对抗性示例

  • 很奇怪,他们是非凸函数

在对神经网络进行优化时,损失函数可以有一些局部最大值和最小值,这就表示它一般既不是凸面也不是凹面。针对这个问题,一个研究小组提出了一种方法,这种方法能够识别和解决高维度非凸优化的鞍点问题。然而,谷歌和斯坦福大学的附属研究小组引入了一个简单的方案来寻找神经网络正克服局部优化难题的证据。他们发现,从初始化到最终的解决方案,各种各样的现代神经网络从未遇到过任何大的障碍。他们的实验是为了回答这些问题的:神经网络会进入和避开一些列局部最小值吗?在靠近和通过各种鞍点时,神经网络会以不同的速度移动吗?他们所找到的证据有力地证明了答案是否定的。

神经网络的非直观属性汇总

神经网络的损失函数是非凸函数

  • 他们在训练不佳时的工作表现最佳

一个“平底最小值”相当于低期望的过度拟合,它是承重空间内的一个大型连接区域,在此区域内的失误都会大致保持不变。在适用于股票市场预测的应用程序中,带有平底最小值搜索算法的网络表现要胜于传统的反向传播和重量衰减。然而,最近一篇关于深度学习大批量培训的报告发现,使用较大批量进行培训通常会找到较精确的最小值,并且泛化或概括表现比较差。换句话来说,如果我们将训练算法考虑在内,那么泛化就会完成得更出色。

  • 它们可以轻松地记住一些事情,也能轻易地被压缩

在2017年ICLR的一项研究中,一个简单的实验性框架被用于定义学习模型的高效率能力。这项工作暗示了几个先进的神经网络架构的高效率能力,足以对训练数据造成破坏,因此,这个模型有足够的能力记住这些训练数据。对于一个被Android语音搜索所使用的深度原声模型,一个谷歌研究团队表示,几乎所有通过深度神经网络训练得到的改进都能被浓缩至一个相同大小的神经网络,这样一来,我们就比较容易部署这些网络了。

  • 它们会受到初始化的影响

在视觉和语言数据集上,“深度信念网络”包含了普通的有监督学习模式之前的一个非监督学习阶段(预训练的组成部分)。一个关于预训练的实验,从模型能力、训练示例数量和网络架构深度等方面对预训练进行了实证分析。

  • 它们会忘记曾经学过什么

如果学习能够以一种循序渐进的方式进行,那么这将是非常重要和有意义的。然而,目前来说,神经网络还没有能力达到这一种循序渐进的属性。它们一般只会在一次性得到所有数据的情况下,完成多个任务的学习。在学习完一项任务之后,它们所获得的知识将会被改写,以适应一项新的培训任务。在“认知科学”中,这被称为“灾难性遗忘”,这也是神经网络众所周知的一个短板。 

以上这些都是神经网络“非直观属性”的典型例子。如果我们拿到了结果,但完全不理解为何模型会作出这样的决策,那么我们就很难在科学研究中取得进步,特别是在模型正变得越来越庞大和复杂的情况下,弄清楚模型工作原理和思路是非常必要且紧迫的。

本文作者:图普科技

本文转自雷锋网禁止二次转载,原文链接

相关文章
|
2月前
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
44 0
|
6月前
|
机器学习/深度学习 监控 算法
【tensorflow】连续输入的神经网络模型训练代码
【tensorflow】连续输入的神经网络模型训练代码
|
8月前
|
机器学习/深度学习 算法 数据挖掘
|
6月前
|
机器学习/深度学习 存储 自然语言处理
|
2月前
|
机器学习/深度学习 存储 算法
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
37 1
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
深入理解循环神经网络(RNN):案例和代码详解
深入理解循环神经网络(RNN):案例和代码详解
171 0
|
8月前
|
机器学习/深度学习 算法 计算机视觉
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
404 1
经典神经网络论文超详细解读(五)——ResNet(残差网络)学习笔记(翻译+精读+代码复现)
|
8月前
|
机器学习/深度学习 编解码 算法
经典神经网络论文超详细解读(四)——InceptionV2-V3学习笔记(翻译+精读+代码复现)
经典神经网络论文超详细解读(四)——InceptionV2-V3学习笔记(翻译+精读+代码复现)
80 0
经典神经网络论文超详细解读(四)——InceptionV2-V3学习笔记(翻译+精读+代码复现)
|
4月前
|
机器学习/深度学习 算法 TensorFlow
【Python机器学习】神经网络中误差反向传播(BP)算法详解及代码示例(图文解释 附源码)
【Python机器学习】神经网络中误差反向传播(BP)算法详解及代码示例(图文解释 附源码)
42 0

热门文章

最新文章