这篇文章介绍了深度学习的知识脉络,将CNN,RNN,GAN等引导此次机器学习潮流的深度学习技术做了整理和概括。文章共2600余字,阅读需要8分钟。
审核:齐佳
本文的目的是让读者对深度学习的算法有一个全面的认识,读者朋友们可以先看看Asimov Institute 的Fjodor vanVeen 绘制的一幅几乎包含所有NN 模型的拓扑图。
在这张图中展示了超过20种经典的神经网络,我们将挑选目前深度学习比较经典的网络进行介绍,一共包括以下五种:
感知机和前馈网络
Hopfield网络
卷积神经网络CNN
循环神经网络RNN
对抗神经网络GAN
一 感知机和前馈网络
Feed forward neural network and Perceptron
这两个古老的模型在之前的
Deep Learning 基础
中已经介绍。感知机(上图左)接收输入求和并通过激活函数,只能处理简单的线性分类。前馈网络和全连接网络(上图右),可以实现复杂的非线性函数,大多数情况下由向后传播算法进行训练。
二 Hopfield 网络
Hopfield Network
Hopfield Network (HN)是循环人工神经网络的一种形式,由John Hopfield 于1982 年提出。与信息只能单向传播(从输入单元到输出单元)的前馈网络不同,HN 允许信息传递回输入,即HN网络是一个反馈型网络。
在HN中,每个神经元都与其他的神经元相连。每个神经元在训练之前都可以作为输入单元,在训练过程中又可以作为隐藏单元,最后使用过程中又可以被看做输出单元使用。网络中的每个单元都只有一个阈值,两种不同的值代表阈值上下的两种不同的状态。大多数情况下,这两个值会设为-1 和1,不过有时也会是0 和1。下图是一个4单元HN网络的图示,你会发现HN可以用完整的无向图来表示。
A Hopfield net with four units
HN网络中每个单元的更新都遵从下面的规则:
对于HN网络来说,网络中的每一个状态都可以用网络的能量E的值来表示
HN系统包含很多个稳定的状态,这时网络中的能量都到达了局部极小值。而HN网络有一个性质,当网络从某一初始状态开始运动,网络系统总可以收敛到某一个稳定的平衡状态。系统稳定的平衡状态可以通过设计网络的权值而被存储到网络中。但是这些权值不是通过反复学习得到,而是通过一些特定规则设定的。
1985年Hopfield和Tank共同用模拟电子线路实现了Hopfield网络,并成功的求解了优化组合问题中最具有代表性的旅行商TSP问题,从而开辟了神经网络用于智能信息处理的新途径,它被运用到VLSI(大规模集成电路)中。
当我们在随机Hopfield网路中引入隐藏单元的时候,这个网络就变成了玻尔兹曼机。
三 卷积神经网络CNN
CNN的介绍可以参见ARGO之前的文章CNN初探。CNN一般由以下部分组成:
• 卷积层:输入经此层传入。通过设定不同的步长,深度和卷积核,可以从原始数据中提取出不同的特征,生成特征图像。
• 非线性变换:在卷积层之后使用,给网络带来非线性特性。由于大部分情况下ReLU 激活函数的效果最好,它是如今使用最多的函数之一。
• 池化层(也可以叫下采样层):可以对信息进行筛选。最常见的一种池化方式是最大池化法,同时也有平均池化法等。它旨在减少特征图像的维度的同时保留最重要的信息。因此池化层既可以减少输入特征的维度,减少网络中计算的参数数量,同时可以缓解过拟合。
• 全连接层:使用卷积和池化层的结果将输入分类。Softmax经常在这一步使用,用来计算划分到不同种类的概率大小。
四 循环神经网络RNN
RNN
RNN在前馈网络上引入了时间,RNN的网络中前一个状态与后一个状态之间是有相连关系的。神经元不仅仅可以从它之前的层获得信息,还可以从自身前一个状态获得输入。由于RNN的这个特性,它常被用来处理在时间上有相关关系的序列性数据,比如视频和自然语言处理领域。
比如我们想让计算机完成下面句子的填空:
我早上上学迟到了,老师惩罚了_____ .
在这个例子中,空格内最可能填的字就是“我”, 而不是“学校”或者“老师”。在RNN被应用到NLP之前,N-Gram 算法经常被运用到类似例子中。N是一个数字,代指N个字之前范围内的某个字在当前位置出现的概率。理论上,我们可以把N值增加,从而让模型考虑更远的字词。但设置很大的N值并不是一个合适的方式,要知道,在这个例子里需要填的字“我”距离空位相差13个字那么远,这么大的N值下,N-Gram算法的耗时将大大拉长。但此时用RNN就非常适合了。
RNN 展开
RNN可以用下面的函数等式代表其输入到输出的变化
RNN也会遇到神经网络训练的噩梦--梯度消失问题。 基于此,RNN模型在出现之后不久,就开始出现了两种著名的对于RNN结构进行优化的网络结构:LSTM和GRU
a)LSTM(Long short-term memory)
LSTM长短期记忆神经网络引入了门的概念。门和记忆单元两者一起将尝试解决RNN的梯度消失的问题。LSTM 由Hochreiter 和Schmidhuber 在1997 年提出。
LSTM units
LSTM的核心在于单元状态,它贯穿整条链,即系统的长期记忆。LSTM 引入的三个门(遗忘门,输入门和输出门)都被包含在网络中重复多次的模块之内,它们选择性地让信息通过,以此来保护和控制单元状态。
遗忘门:决定要从单元状态中扔掉那些信息。决策由一个sigmoid函数实现。
LSTM Forget Gate
输入门:决定有什么新信息需要存储到单元状态中。这一门由两个部分组成。输入门第一部分决定输入中哪些需要存储到单元状态里,第二部分是用tanh函数创建一个新的候选向量,将它加入到单元状态中。
LSTM Input Gate
输出门:决定单元状态中的哪些部分需要输出。其内部逻辑是,输入的数据经过sigmoid层处理来决定单元状态的哪些部分会被输出,而后将把单元状态输入给一个tanh层(把值映射到某个区间内),并乘上sigmoid层的结果,这就是最终的输出。
LSTM Output Gate
b) GRU( Gated Recurrent Unit )
GRU是LSTM的一个稍好的变体,于2014 年提出。GRU有两个门,其中一个门是将遗忘门和输入门结合成为“更新门”(下图中的zt) , 同时还有一个“重置门”(下图中的ht)。GRU同时将单元状态和输出整合到一起。
“更新门”的数值越大意味着前一状态的输入携带来越多的信息。而“重置门”则是控制需要遗忘多少前一状态的信息,它的数值越小意味着忘记的越多。
建议阅读这篇阐述LSTM的文章:
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
五 生成对抗网络GAN
GAN
GAN (Generative Adversarial Network)由Ian Goodfellow 于2014 提出。它是由两个网络构成(通常是一个前馈网络和一个卷积神经网络),一个是(G:生成网络) 用于生成数据,另一个(D:判定网络) 则是负责判定。这是一个非监督学习模型。
GAN 框架
例子
GAN 的基本理念即是生成算法和判定算法的对抗,如同博弈论中的零和博弈赛局。下面用一个例子来解释GAN:
假设我们有一个可以生成图像的生成网络。同时我们还有一个判定网络,它的工作是尽量正确判断所接收的图像到底是真实拍摄的还是机器生成的。接下来整个模型将如下运转:
生成网络接收到一些随机数据,并生成一张图片。
生成网络所产生的图片和数据集中的一张真实的照片一同被传给判定网络。
判定网络接收到两张图片之后,返回一个0到1之间的数字,用来表示这张图片是真实图片的概率。0代表图片是假的,1代表是真实的。
生成网络和判定网络根据判定网络判断正确与否进行相应的调整优化。直到两个达到一个最终平衡的状态。
GAN 的问题
• 难收敛。模型振荡不稳定,导致永远无法收敛。
• 模式崩溃。一般出现在训练不稳定时。生成结果非常差,即使加长训练时间后也无法得到很好改善。
• 梯度消失。判定网络能力太强导致生成网络的梯度消失,几乎无法有效学习。
•难训练。GAN的原理是找到纳什均衡点。但是现在没有有效的获得纳什均衡点的方式,导致训练占用很长时间。
• 不适用于离散数据。
几乎每周都有新的GAN的变种模型的论文产生来尝试解决以上的问题。在此提供一个链接,你可以看到目前所有基于GAN的优化模型:
https://github.com/hindupuravinash/the-gan-zoo
在这些论文之中,有一些网络脱颖而出,比如:
•DCGAN(深度卷积生成对抗模型)
•WGAN/WGAN-NP(Wasserstein Gan)
•CGAN(Conditional GAN)
总结
深度学习是此次AI领域耀眼的明珠,吴恩达曾说过,理论上说现在所有的学习模型都能用深度学习模型替代。在开始我们的深度学习之旅前,读者朋友可以将这些框架和概念建立起来,ARGO之后会在深度学习领域对这些模型做更加深入的介绍。RNN ,CNN和GAN这些网络的设计体现了人类的灵感和智慧,而这些可能是机器学习现在还不可及的。
领取专属 10元无门槛券
私享最新 技术干货