理解深度学习

深度学习是机器学习的一个分支,采用众多类似但不同的深度神经网络架构来解决自然语言处理,计算机视觉和生物信息学等各种领域的各种问题。深度学习最近经历了巨大的研究复兴,并且已经被证明可以在众多应用中提供最先进的结果。

从本质上讲,深度学习是神经网络的实现,具有多个隐藏的神经元层。然而,这是一种非常简单的深度学习观点,而不是一致同意的观点。这些“深层”架构也有很大差异,不同的实现针对不同的任务或目标进行了优化。以如此恒定的速度进行的大量研究正在以越来越快的速度展示新的和创新的深度学习模型。

神经网络

神经网络的层次。

目前白热化的研究课题,深度学习似乎正在影响机器学习的所有领域,并进而影响数据科学。通过查看相关arXiv类别中的近期论文,可以很容易地看出正在发布的大量内容与深度学习相关。鉴于产生了令人印象深刻的结果,许多研究人员,从业人员和非专业人士都在怀疑深度学习是否是“真正的”人工智能的边缘

这一系列的阅读材料和教程旨在为深度神经网络新手提供一条途径,以便对这个庞大而复杂的主题有所了解。虽然我不假设对神经网络或深度学习有任何真正的理解,但我会在某种程度上假设你对普通机器学习理论和实践的熟悉程度。为了克服您在机器学习理论或实践的一般领域中可能存在的任何不足,您可以参考最近的KDnuggets发布的7个步骤来掌握使用Python的机器学习。由于我们还将看到用Python实现的示例,因此熟悉该语言将非常有用。前面提到的帖子中也提供了介绍和审查资源。

这篇文章将以有凝聚的顺序利用来自网络的免费资料,首先在理论层面上深入了解深层神经网络,然后继续进行一些实际的实施。因此,所引用材料的信誉仅限于创作者,他们将与资源一起被注意到。如果您发现某人没有得到适当的工作记录,请提醒我疏忽,以便我可以迅速纠正。

一个严谨而诚实的免责声明:深度学习是一个复杂且快速发展的广度和深度领域(双关语无意间?),因此这篇文章并不是一本全面的手册,可以成为一名深度学习专家; 这种转变需要更多的时间,更多的额外资源,以及大量的实践构建和测试模型。但是,我确实相信利用这里的资源可以帮助你开始这样的道路。

第1步:介绍深度学习

如果您正在阅读本文并对该主题感兴趣,那么即使在基本级别,您可能已经熟悉了深层神经网络。神经网络有着悠久的历史,但我们不会深入研究。但是,我们确实需要一个共同的高水平理解。

首先,看看DeepLearning.tv精彩的介绍性视频。在撰写本文时,有14个视频; 如果你愿意,可以观看它们,但绝对要注意前5个,包括神经网络的基础知识和一些更常见的架构。

接下来,阅读Geoff Hinton,Yoshua Bengio和Yann LeCun 的NIPS 2015深度学习教程,稍微介绍一下。

为了完善我们的第一步,请阅读神经网络和深度学习的第一章,迈克尔尼尔森的神奇,不断发展的在线书籍,它更进一步,但仍然保持相当轻松。

第2步:获得技术

深度神经网络依赖于代数和微积分的数学基础。虽然这篇文章不会产生任何理论数学家,但在继续学习之前获得对基础知识的一些理解会有所帮助。

首先,观看Andrew Ng的线性代数评论视频。虽然不是绝对必要,但对于那些发现他们想要更深入了解这一主题的人,请参阅由Zico Kolter和Chuong Do撰写的Ng斯坦福课程的线性代数评论和参考。

然后看看这个介绍一个函数导数的视频伦纳德教授。视频简洁,示例清晰,从数学角度提供了对反向传播过程中实际情况的理解。更多关于这一点。

接下来快速阅读维基百科条目中的Sigmoid函数,这是神经网络中各个神经元经常使用的有界可微函数。

最后,从数学中休息一下,阅读谷歌研究科学家Quoc Le的深度学习指南。

梯度下降,可视化。

第3步:反向传播和梯度下降

神经网络的一个重要部分,包括现代深层体系结构,是通过网络向后传播错误,以便更新靠近输入的神经元使用的权重。这是非常坦率的,神经网络因缺乏更好的术语而获得“权力”的地方。简称反向传播(或甚至“反向传播”)与优化方法配对,该优化方法用于最小化随后分配的权重(通过反向传播),以便最小化损失函数。深度神经网络中常见的优化方法是梯度下降。

首先,阅读斯图加特大学Marc Toussaint关于梯度下降的这些介绍性说明。

接下来,看一下Matt Mazur编写的这种逐步反向传播的例子。

继续阅读,阅读Jeremy Kun关于编码Python反向传播的博文。还建议查看完整代码,并尝试自己复制它。

最后,阅读的第二部分深度学习教程由富国乐,以适应介绍一些具体的共同深架构及其用途。

第4步:变得实用

深度学习蒙太奇将在以下步骤中引入的特定神经网络体系结构将包括使用当今研究中存在的一些最流行的Python深度学习库的实际实现。由于不同的库在某些情况下针对特定的神经网络架构进行了优化,并且已经在某些研究领域建立了立足点,因此我们将使用3个独立的深度学习库。这不是多余的; 跟上特定实践领域的最新图书馆是学习的关键部分。以下练习还允许您自己评估不同的库,并形成一个直觉来确定哪些问题。

此时,欢迎您选择任何库或库的组合进行安装,并继续实施与您选择相关的教程。如果您正在尝试使用一个库并使用它来实现以下每个步骤的教程之一,我会推荐TensorFlow,原因有几个。我将提到最相关的(至少在我看来):它执行自动区分,这意味着您(或者说,教程)不必担心从头开始实现反向传播,可能使代码更容易遵循(特别是对于新手)。

我在TensorFlow令人失望的帖子- Google Deep Learning Falls Shallow中首次出现时写了关于TensorFlow的文章,其标题表明我对它的失望比实际上更令人失望; 我主要关注的是缺乏支持GPU集群的网络培训(可能很快就会出现)。无论如何,如果你有兴趣阅读有关TensorFlow的更多信息而不参考下面列出的白皮书,我建议阅读我的原创文章,然后跟进Zachary Lipton的精心编写的文章,TensorFlow非常棒 - 深度学习加速。

TensorFlow

Google的TensorFlow是一个基于数据流图形表示的通用机器学习库。

通过访问此处安装TensorFlow

看看它的白皮书

试试它的入门教程

保持其文档方便

Theano

Theano由蒙特利尔大学的LISA小组积极开发。

通过访问这里安装Theano

试用一个入门教程

请参阅此处的文档

咖啡

Caffe由加州大学伯克利分校的伯克利视觉与学习中心(BVLC)开发。虽然Theano和TensorFlow可以被认为是“通用”深度学习库,但由计算机视觉小组开发的Caffe主要用于此类任务; 但是,它也是一个完全通用的库,用于为不同的领域构建各种深度学习架构。

去这里安装Caffe

阅读其介绍性教程演示文稿以熟悉自己

看看它的文档,以及

请记住,这些并不是当今唯一使用的流行库。事实上,有许多其他人可供选择,而这些是根据教学,文档和一般研究的接受程度来选择的。

其他深度学习库选项包括:

Keras - Theano和TensorFlow的高级,极简主义Python神经网络库

Lasagne - 用于Theano顶部的轻量级Python库

Torch - Lua机器学习算法库

Deeplearning4j - 用于Java和Scala的开源,分布式深度学习库

Chainer - 灵活,直观的Python神经网络库

摩卡 - 朱莉娅的深度学习框架

安装库后,我们现在继续实际实施。

第5步:卷积神经网络和计算机视觉

计算机视觉处理图像及其符号信息的处理和理解。该领域最近的大部分突破都来自于深度神经网络的使用。特别是,卷积神经网络最近在计算机视觉中发挥了非常重要的作用。

卷积神经网络。

首先,阅读Yoshua Bengio的计算机视觉教程深度学习,以获得对该主题的理解。

接下来,如果您安装了TensorFlow,请查看并实现本教程,该教程使用卷积神经网络对CIFAR-10图像进行分类。

如果安装了Caffe,作为上述教程(或旁边)的替代方案,在Caffe中实现卷积神经网络,用于对MNIST数据集图像进行分类。

这是一个Theano教程,大致相当于上面的Caffe练习。

之后,阅读Krizhevsky,Sutskever和Hinton 的开创性卷积神经网络论文,以获得更多见解。

第6步:经常性网络和语言处理

自然语言处理(NLP)是另一个从深度学习中受益的领域。由于对自然(人类)语言的理解,NLP已经通过递归神经网络(RNN)获得了许多最近的成功。

Andrej Karpathy有一篇名为“回归神经网络的不合理有效性 ” 的博客文章,其中概述了RNN在训练角色级语言模型方面的有效性。它引用的代码是用Luch用Lua编写的,所以你可以跳过它; 这篇文章在纯粹的概念层面上仍然有用。

本教程在TensorFlow中实现了一个用于语言建模的循环神经。

然后,您可以使用Theano并尝试本教程,该教程实现了一个带有单词嵌入的循环神经网络。

最后,您可以阅读Yoon Kim的用于句子分类的卷积神经网络,用于CNN在语言处理中的另一种应用。Denny Britz的博客文章标题为“ 在TensorFlow中实现CNN用于文本分类 ”,就像它建议使用电影评论数据一样。

第7步:更多主题

前面的步骤已经从深入学习的理论课程转向实践课程。通过在前两个步骤中安装和实现卷积神经网络和循环神经网络,希望人们已经初步了解它们的功能和功能。与CNN和RNN一样普遍存在,存在许多其他深层架构,并且定期从研究中进一步出现。

除了早期理论步骤中提供的深度学习之外,还有许多其他考虑因素,因此,以下是对这些额外架构和关注点的快速调查。

对于特定类型的适合时间序列预测回归神经网络的进一步的理解,长短期记忆网络,阅读这篇文章由克里斯托弗·奥拉。

Denny Britz撰写的这篇博文是使用LSTM和门控循环单元(GRU)的RNN的精彩教程。有关GRU和LSTM的进一步讨论,请参阅本文。

这显然不包括所有深度学习架构。 限制性玻尔兹曼机器是一个明显的排除现象,自动编码器和一系列相关的生成模型,包括生成对抗网络。但是,必须在某处绘制一条线,否则这个帖子将无限期地继续。

对于那些有兴趣了解各种深度学习架构的人,我建议由Yoshua Bengio撰写这篇冗长的调查报告。

对于我们的最终数字,以及有点不同的内容,请查看Google DeepMind的Shakir Mohamed对深度学习的统计分析。它比我们遇到的其他材料更具理论性和(惊人的,统计性的),但值得寻找一种熟悉物质的不同方法。Shakir在6个月的时间里写了一系列文章,并作为测试广泛的信念,强调统计联系和深度学习的看不见的含义。有一个组合PDF所有帖子的为好。

希望已经提供了足够的信息,以便向读者提供深度神经网络的介绍性概述,并提供一些动力来推进并更多地了解该主题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值