彭玺作者

可微编程:打开深度学习的黑盒子

编者按:深度学习自诞生之日起,即面临着黑盒智能、可解释性差等质疑, 发展至今,不可否认地带来了一波人工智能的发展热潮,然而正面临研究热情渐褪、算法红利逐渐消失等问题,整个学术界都在讨论,后深度学习时代,谁将是主宰。

恰在此时,LeCun语出惊人地表示,“Deep Learning has outlived its usefulness as a buzz-phrase. Deep Learning est mort. Vive Differentiable Programming!” 一方面将对深度学习的质疑推向了高潮,另一方面奠定了可微编程的地位。

可微编程,作为衔接传统算法与深度学习之间的桥梁为深度算法提供可解释性,将成为打开深度学习黑盒子的一大利器。

本文中,来自四川大学的彭玺研究员,将为大家介绍后深度学习时代的新主宰:可微编程。

文末,大讲堂提供文中提到参考文献的下载链接。

今天的汇报将从上面四个部分展开。

第一部分,介绍一下可微编程的一些相关的概念。

第二部分,介绍我们的第一个工作。现在大多可微编程是把优化过程展开,转换成回复式神经网络。而我们这项工作也是把优化过程展开,发现能够得到新的长短期记忆,再从可微编程角度,找到与长短期记忆网络的连接。

第三部分,介绍我们的第二个工作。现有的绝大多数可微编程的工作都是基于优化的过程展开,然后寻找它和神经网络之间的关系。而我们这项工作是从目标函数进行变形得到一个前向式神经网络。

第四部分,是我们对于这些研究问题的一些思考。

首先介绍一下可微编程是什么呢?简单来说,就是把神经网络当成一种语言,而不是一个简单的机器学习的方法,从而描述我们客观世界的概念以及概念之间的关系。这种观点无限地提高了神经网络的地位。

LeCun曾在facebook的文章里说:”Deep Learning Is Dead. Long Live Differentiable Programming!” (深度学习已死,可微编程永生)。

具体的可微编程和现有的深度学习、机器学习又有什么关系呢?这里有一个简单的对比,在上图中显示的三个实体之间发生的三项关系。目前最流行的方法是用深度学习提取特征,然后结合机器学习的一些方法来解决实际当中的一些问题,也可以反过来用深度神经网络拿来直接生成数据,也就是目前最火的生成式对抗网络。

但我们可以发现缺失了一块,也是目前可微编程做的主流工作。缺失的就是把现有的机器学习的方法转化成等价的神经网络,使得同时具有传统的统计机器学习方法的可解释性强以及深度神经网络性能较优等优点。

针对现实世界中的一些问题,传统的机器学习的方法思路是首先基于一些假设或者先验知识(比如稀疏编码等),将其形式化成目标函数,再对其进行优化求解。但当得到一个新的目标函数时,我们还需要研究目标函数数学上的性质对其进行优化,如目前最流行的优化方法--凸优划。

但是这样做饱受诟病的一个原因就是可解释不强。那可微编程可以做什么?其实就把神经网络直接当成一种语言,直接用于替代问题的描述或者说抽象化问题。这样做的好处显而易见,首先,它易于优化。只需要一个SGD或者SGD的变种,而不需要发展出非常复杂的优化的算法。此外,它还易于计算。并且,它也能做端到端的学习。

在神经网络以深度学习为标志复出之后,最早的可微编程的工作应该是Yann LeCun的ISTA。求解稀疏编码这个目标函数的优化方法有非常多,ISTA是其中非常有名的一个。上图中间红框标注的公式就是ISTA的核心,具体细节可以阅读文章《Learning fast approximations of sparse coding》。

观察上图中红色方框的公式,可以看到Z是依赖于前一步的Z值。这在数学上就等价于一个动力学系统或者一个迭代过程,而动力学系统本质上就是回复式神经网络的数学本质。因此,进一步地把右下角公式简单地变形等价成RNN,这是神经网络复出以来最为知名的一个可微编程的工作。

随后有很多的进展,比如2016年NIPS上的文章《Attend, Infer, Repeat: Fast Scene Understanding with Generative Models》关于生成模型的工作,这项工作也是目前比较热门的研究。

另外,在2015的ICCV上《Conditional Random Fields as Recurrent Neural Networks》文章中提出,把条件随机场的求解变形成了循环神经网络的相关运算,在图像语义分割上实现了突破。

在2016的TPAMI上《Learning to Diffuse: A New Perspective of Designing PDEs for Visual Analysis》文章中,提出的PDE工作在多个任务视觉上取得很好的效果。

在2016的TIP《Learning Iteration-wise Generalized Shrinkage-Thresholding Operators for Blind Deconvolution》里,针对盲卷积这个问题,发展出能够实现稀疏编码的回复神经网络。

在2016的IEEE TPAMI的《Trainable Nonlinear Reaction Diffusion: A Flexible Framework for Fast and Effective Image Restoration》文章中,对图像重构工作进行了这方面研究。

在2016年的AAAI文章《Learning Deep ℓ0 Encoders》中对0范数的优化问题,进行变形和等价建议的回复式神经网络。

在2015年TPAMI文章《Learning Efficient Sparse and Low Rank Models》中,对使用深度神经网络来实现稀疏模型和非负矩阵分解之间建模的回复式神经网络。

将这些研究进行归纳总结,就是把一些现有的统计机器学习方法,特别是现有的优化过程展开,形成一个简单的神经网络,且其中大多都是一个简单的回复式神经网络。从而使它能享有传统机器学习的优点,比如端到端学习,同时兼具易于优化以及高可解释性等优点。

我相信这样介绍大家可以有一个直观的概念。目前可微编程就是对传统的机器学习的一个逆向的过程,由于传统的机器学习的结构非常清晰,对逆向过程可以产生的神经网络,就可以知道哪一个激活函数的作用是什么,每一层的输出、目的是什么,这也是现有的深度学习方法所不具备的优势。

下面给大家介绍一下我们的第一个工作。我们这项工作从可微编程出发,来研究稀疏编码的优化方法—ISTA 。

目前,常见的对L1范数优化的方法具有四个局限性:

第一,在优化过程中,对于每一个变量的更新都是采用固定的学习率。所以没有考虑优化变量的每个维度之间的不同。

第二, 这些优化过程并没有考虑历史信息。但是在优化这个研究邻域里已经有大量的工作证明如果考虑历史信息,能够加速算法的收敛。

基于这两点不足,我们提出了自适应的ISTA算法。

还有两个不足是什么呢?

第三,在稀疏编码推理过程中,计算代价很高。

第四,稀疏表示矩阵计算和字典学习是两个分隔开的步骤。但现在流行端到端的训练,也就是同时优化步骤,这样做可能会产生次优的解。

而这两个不足,正好是可微编程能够克服的问题。因此基于这些问题,我们对自适应的ISTA变形和展开提出新的神经网络——SC2Net。

左边是ISTA的关键的优化步骤,基于此,我们引进了动量向量(i(t),f(t))。这就是标准的受益于现代的优化的一些相关的方法,通过引入这两个量,从而解决非自适应更新问题和没有考虑历史信息的不足。更进一步来看,这里存在一个问题,i(t),f(t)如果是两个向量的话,只能确定它的值。使用传统的机器学习方法进行训练,我们人为指定它的值。在研究中,发现可以把这两个向量当成两个变量从数据中学习,就产生了我们提出的自适应ISTA。

同时,我们还发现这种自适应ISTA可以等价于新的长短期记忆神经网络。具体来看,我们可以认为i和f是等价于LSTM中的input gate 和output gate。但是需要注意的是,和经典的LSTM相比,自适应的ISTA是没有output gate。

基于以上,我们就组建了Sparse LSTM,并且构建了相应的神经网络结构。

接下来,展示我们的实验结果。在无监督和有监督的特征提取的情况下,对网络的分类性能进行验证。

接下来还进行图像重构,图中显示的是一个重构的误差,越黑就代表误差越小。

我们还做了视频当中的异常事件的检测,给定一个圈,在圈中的都是正常事件,不在圈中的就是异常事件。接下来使用稀疏重构系数作为指标,找到一定阈值,在这个范围内的都是正常事件,而不在其中的就是异常事件。

通过实验可以看到,我们的结果是目前是最好的异常事件检测算法。

最后简单地概括一下,相对现有的可微编程,我们是将优化的过程或者说具体的基于LSTM优化的过程和长短期记忆网络,最后掌握了他们之间关系。这对可微编程有一些促进的作用,也可以从另外一个角度理解长短期记忆网络。

刚才我们得到的网络和标准的只有一个区别,就是我们没有Output gate。

相关的代码公开,大家可以扫描上图中的二维码。

第二个工作较之前更进一步,是在聚类这个背景下来扩展,把k-means这个聚类算法转化成为一个前向式记忆网络。不同于现有的可微编程的方法,它是从优化的角度出发,我们直接把k-means聚类算法的目标函数直接进行变形,然后建立对应的神经网络模型。

K-means是什么?

它是在机器学习,计算机视觉,数据挖掘中最为知名的一个算法。主要是利用数据之间的相似性或者不相似性,将数据分为多个簇。最近一二十年,整个聚类的研究领域主要关注的是高维数据的聚类,本质上就是机器学习的共性问题­——线性不可分的问题。

为了解决这个问题,基于核聚类算法,谱聚类,子空间聚类方法,以及近期基于深度神经网络的聚类方法,这些方法都是在解决这个线性不可分的问题。

现有的高维聚类方法可以简单地概括成这个图。它们都是用表示学习的方法将不可分的数据投影到另外一个线性可分的空间中,然后再进行聚类。而且现有的研究工作主要都是关注在如何学到一个好的表示。大家都知道,目前深度学习已经成为最为有效的表示学习方法之一,一定意义上可以把“之一”去掉,特别是在数据量较多的情况下。

因此,我们就认为如果表示学习能够用深度神经网络来解决,我们是不是要考虑更多的研究能够实现聚类的神经网络。但是让我们惊讶的是,目前非常少的工作研究能以一个神经网络来实现聚类的,寥寥可数,比较知名一点的比如说自组织映射。

受这个观察的启发,我们思考计划从可微编程的角度对经典的算法进行变形,从而形成一个新的神经网络,从而解决上述的痛点。

这里的公式是k-means的目标函数,其中x是输入,Ω是第j个聚类的中心。我们最终的目标是最小化不同类别之间的相似性,最大化相同类别之间的相似性。

通过对k-means目标函数简单的变形,其实本质上只是把标签只能分配到某一个聚类空间的约束去掉,转变成了输入Xi在第j个聚类中心的概率。

如右图所示的简单变形得到公式(6)和(7),并且我们发现这两个公式是可以等价为一个简洁的前向式神经网络。

如果大家只看左边的神经网络,大家可能会觉得非常不稀奇,好像就是一个很简单的Sigmoid函数,再加上一个隐含层的神经网络。但是如果结合右边的公式来看,就会发现,这么简单的神经网络是等价于K-means的。

我们在相关的一些数据集上进行验证,比如说我们使用数据mnist和CIFAR10验证神经网络,取得了非常好的效果。

接着我们使用CIFAR100数据的20个子集进行验证,也是取得很不错的结果。

同时我们还考虑使用CNN来发现特征,可以得到超过93%的距离精确度。所以得出一个结论,我们的算法对于距离中心的初始化方法是非常棒的。

这个工作和现有的可微编程不同主要是两点:

第一,我们的研究思路是从目标出发,而不是从优化过程出发进行研究

第二,我们得到的是前向式神经网络,而不是回复式的神经网络。 

接下来给大家分享一下我和我的合作伙伴的一些思考。

目前,深度学习的研究主要是对通过对一些算法的性能指标不断地试错,最后确定整个网络的结构以及相关的超参,这也是深度学习最为诟病的一点。

现在深度神经网络已经占据了绝对的优势,可微编程提供了从高解释性的角度去做这件事,它是将神经网络作为一种语言,将传统的算法转化成神经网络以后,一定程度上缓解了一些深度学习的不足。

下一步可微编程做什么?现在的可微编程是对传统的继续学习方法的等价或者一种替代物。从问题的描述,再到问题的建模、求解,这是一个很复杂的过程。如果我们对传统的学习的方法,在一定的假设和前提下已经有建好的建模,我们建立等价的神经网络,其实就能走出最容易的一步。

在未来,如果我们真的要贯彻可微编程,就是把它当成一种语言。神经网络应该更进一步,应该直接对问题进行建模,也就是对我们的物理现象进行建模,并且传统的统计机器学习方法有一些先验知识,进而解决我们的一些实际问题。

可能这是更接近于做人工智能这个领域的一个更贴切的思路。

文中提到参考文献的下载链接为:

链接: https://pan.baidu.com/s/18qzJ9PjTb3zR01NDyc_XSQ 

密码: vxsi

深度学习大讲堂
深度学习大讲堂

高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息。

入门可微编程深度学习
23
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

可扩展标记语言技术

可扩展标记语言,是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用标记语言中简化修改出来的

范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

自组织映射技术

自组织映射(SOM)或自组织特征映射(SOFM)是一种使用非监督式学习来产生训练样本的输入空间的一个低维(通常是二维)离散化的表示的人工神经网络(ANN)。自组织映射与其他人工神经网络的不同之处在于它使用一个邻近函数来保持输入控件的拓扑性质。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

逻辑异或技术

在数字邏輯中,逻辑算符互斥或閘(exclusive or)是对两个运算元的一种邏輯分析类型,符号为XOR或EOR或⊕。与一般的逻辑或OR不同,当两两数值相同为否,而数值不同时为真。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

非定常多项式技术

非定常多项式(英语:non-deterministic polynomial,缩写:NP)时间复杂性类,或称非确定性多项式时间复杂性类,包含了可以在多项式时间内,对一个判定性算法问题的实例,一个给定的解是否正确的算法问题。 NP是计算复杂性理论中最重要的复杂性类之一。它包含复杂性类P,即在多项式时间内可以验证一个算法问题的实例是否有解的算法问题的集合;同时,它也包含NP完全问题,即在NP中“最难”的问题。计算复杂性理论的中心问题,P/NP问题即是判断对任意的NP完全问题,是否有有效的算法,或者NP与P是否相等。

谱聚类技术

在多元统计和数据聚类中,谱聚类技术利用数据相似度矩阵的谱(特征值)在较少维度聚类之前执行降维。 相似性矩阵作为输入提供,并由对数据集中每对点的相对相似性的定量评估组成。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

数据挖掘技术

数据挖掘(英语:data mining)是一个跨学科的计算机科学分支 它是用人工智能、机器学习、统计学和数据库的交叉方法在相對較大型的数据集中发现模式的计算过程。 数据挖掘过程的总体目标是从一个数据集中提取信息,并将其转换成可理解的结构,以进一步使用。

先验知识技术

先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

条件随机场技术

条件随机场(conditional random field,简称 CRF),是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。 如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。 条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的机率分布,没有如隐马尔可夫模型那般强烈的假设存在。 线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。

动量技术

优化器的一种,是模拟物理里动量的概念,其在相关方向可以加速SGD,抑制振荡,从而加快收敛

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
本文的很多图片都打不开了,求补
回复lockeh
可以打开~
回复lockeh
图片可以打开~