作者 | James Le
译者 | Sambodhi
编辑 | Vincent
出处丨AI 前线
AI 前线导读:孔子曾经说过,“学如不及,犹恐失之。”因此 AI 实践者学习深度学习也要“温故而知新”。James Le 跟我们分享了他总结的 AI 实践者需要用到的 10 个深度学习方法,小编觉得他这篇文章非常好,让我们跟着作者进行深度学习的归纳整理知识体系吧!只有进行知识梳理后,我们才能“吾道一以贯之”。
过去十年来,人们对机器学习的兴趣经历了爆炸式的增长。你几乎每天都能在计算机科学程序、行业会议和《华尔街日报》(Wall Street Journal)上看到机器学习的影子。在所有关于机器学习的讨论中,许多人都将机器学习能够做什么,与他们希望机器学习能够做什么混为一谈了。从根本上来说,机器学习就是使用算法从原始数据中提取信息,并在某种类型的模型中表示出来。我们使用这个模型来推断我们尚未建模的其他数据。
神经网络是机器学习中的一种模型;它们已经存在至少有 50 年了。神经网络的基本单元是一个节点,它的灵感源自哺乳动物大脑中的生物神经元。神经元节点之间的连接也模仿了生物大脑,也会像生物大脑那样不断演化(即通过“训练”的方式)。
许多重要的神经网络架构都是在上世纪八十年代中期和九十年代早期完成的。不过,要得到良好的结果,需要大量的时间和数据,当时计算机处理的能力尚不足以满足这些要求,人们因此对机器学习的热情也降低了。这一尴尬的局面直到 21 世纪初期才得以打破:这时候计算能力呈指数级增长。业界目睹了计算技术的“寒武纪大爆发”,而在此之前,这些都是不可想象的。在这十年中,深度学习以机器学习领域的重要竞争者的姿态,在计算能力爆炸式增长中脱颖而出。这种热度直到 2017 年仍未降温。今天,我们在机器学习中的每个角落,都能看到深度学习的身影。
为了能够跟上这一潮流,我选修了 Udacity 的“深度学习”课程(http://u6.gg/e6fJx),这门课程很好地介绍了深度学习的动机、在 TensorFlow 的复杂、大规模数据集中学习的智能系统的设计。在课堂作业中,我使用并开发了用于图像识别的卷积神经网络,用于自然语言处理的嵌入式神经网络,以及使用循环神经网络 / 长短期记忆的字符级文本生成。Jupiter Notebook 中所有代码都可以在这个 GitHub 存储库中找到:http://u6.gg/e6fMD
下图是其中一个作业的结果,词向量的 t-SNE 投影,通过相似性进行聚类。
后来我阅读了这方面的学术论文。据我的研究得出,下面是一些对机器学习领域发展产生巨大影响的出版物:
- NYU:《Gradient-Based Learning Applied to Document Recognition》,1998 年。将卷积神经网络引入机器学习领域。http://u6.gg/e6fNP
- Toronto:《Deep Boltzmann Machines》,2009 年。为玻尔兹曼机(Boltzmann Machines)提出了一种新的学习算法,该算法包含了许多隐藏变量层。http://u6.gg/e6fPd
- Stanford 和 Google:《Building High-Level Features Using Large-Scale Unsupervised Learning》,2012 年。解决了仅从无标记数据构建高级特定类别的特征检测器的问题。http://u6.gg/e6fPr
- Berkeley:《DeCAF — A Deep Convolutional Activation Feature for Generic Visual Recognition》,2013。发布了 DeCAF,一种深度卷积激活特征的开源实现,以及所有相关的网络参数,使视觉研究人员能够在一系列视觉概念学习范例中进行深度表征的实验。http://u6.gg/e6fP6
- DeepMind:《Playing Atari with Deep Reinforcement Learning》,2016 年。提出了第一个使用强化学习直接从高维感官输入中成功学习控制策略的深度学习模型。http://u6.gg/e6fPT
通过研究和学习这些学术论文,我学到了很多关于深度学习的知识。我想在本分中分享 10 个强大的深度学习的方法,AI 工程师可以将这些方法应用到机器学习的问题中。但首先,让我们先定义什么是深度学习。如何定义深度学习对许多人来说是一个挑战,因为在过去十年,深度学习的形式都在缓慢地发生变化。为了直观地解释深度学习,如下图所示,展示了人工智能、机器学习和深度学习之间关系的概念。
人工智能领域相当广泛,存在已久。深度学习是机器学习领域的一个子集,而机器学习是人工智能的一个子领域。深度学习网络与“典型”前馈多层网络的区别如下:
- 深度学习网络的神经元比以前的网络更多
- 深度学习网络的连接层的方式更为复杂
- 深度学习网络需要像“寒武纪大爆炸”的计算能力进行训练
- 深度学习网络具备自动特征提取的能力
上文提到的“更多的神经元”,意思是指神经元的数量随着时间的推移而增加,以表达更为复杂的模型。层也从多层网络中完全连接的各层演变为卷积神经网络中各层之间局部连接的神经元片段,以及在递归神经网络中同一神经元的循环链接(除了前一层的连接)。
因此,深度学习可以被定义为以下四个基本网络框架中具有大量参数和层数的神经网络:
- 无监督预训练网络(Unsupervised Pre-trained Networks)
- 卷积神经网络(Convolutional Neural Networks)
- 循环神经网络(Recurrent Neural Networks)
- 递归神经网络(Recursive Neural Networks)
在本文中,我主要对后三种架构感兴趣。
卷积神经网络(Convolutional Neural Network,CNN)基本上就是一种标准的神经网络,通过使用共享权重在空间中扩展。卷积神经网络旨在通过内部的卷积来识别图像,它可以看到图像上识别对象的边缘。
循环神经网络(Recurrent Neural Network)基本上也是一种标准的神经网络的扩展,它通过下一个时间步骤中,而不是同一个时间步骤中进入下一层。循环神经网络旨在识别序列,例如语音信号或文本。它内部有循环,这意味着网络中存在短时记忆。
递归神经网络(Recursive Neural Network)更像是一个分层网络,其中输入序列实际上没有时间方面,但输入必须以树形方式进行分层处理。
下面提到的 10 个方法可以应用于所有这些架构。
1 — 反向传播反向传播(Back-prop)简单来说就是计算函数的偏导数(或梯度)的一种方法,它具有函数组合的形式(如神经网络)。当你使用基于梯度的方法(梯度下降法只是其中之一)来解决最优问题时,需要在每次迭代中计算函数梯度。