"); //-->
编者按:深度学习自诞生之日起,即面临着黑盒智能、可解释性差等质疑, 发展至今,不可否认地带来了一波人工智能的发展热潮,然而正面临研究热情渐褪、算法红利逐渐消失等问题,整个学术界都在讨论,后深度学习时代,谁将是主宰。
恰在此时,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》关于生成模型的工作,这项工作也是目前比较热门的研究。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。