当先锋百科网

首页 1 2 3 4 5 6 7

深度学习模型个人总结(DNN,CNN,RNN,LSTM,GCN,GAN)

深度学习类属于机器学习,机器学习又类属于人工智能,但是机器学习其实算不上我们普遍理解的人工智能,因为它不够“智能”,而深度学习为何越来越火,因为它已经触摸到了“智能”。深度学习最特别最厉害的地方就是能够自己学习特征提取,对于机器来说,可以说真正做到了自动化。本文介绍深度学习中常见模型的基本原理和区别,不作深入探究。

1 神经网络

神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。
神经网络的每个神经元如下
在这里插入图片描述
将上图的单个神经元组织在一起,便形成了神经网络,例如下图中的三层神经网络

在这里插入图片描述
无论有多少层,神经网络总体来说分为三层:输入层,隐藏层和输出层。输入输出层顾名思义,而隐藏层是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。

2 深度神经网络(DNN)

DNN又叫全连接网络,它是一个很广的概念,CNN(卷积神经网络)、RNN(递归神经网络)等都属于其范畴之内。CNN多用于网络结构数据类型的任务,如图像;RNN多用于时间序列类型的任务,如音频、文本(NLP)等。简单的DNN网络如下图

在这里插入图片描述
深度神经网络可以经过大量数据的训练之后,对一个未知事物进行预测。后面要介绍的网络原理与此大同小异,这里不再描述。

3 卷积神经网络(CNN)

例如,在识别手写数字或识别字母时,电脑本身时很死板的。假设我们现在需要识别字母x,那么电脑会讲事先存好的字母x的图片与待识别图片进行对比,这里对比是一个像素点一个像素点的对比,这会导致巨大的误差,例如下图
在这里插入图片描述
那我们当然不希望如此,这就是CNN要解决的问题。对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为特征。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,如下图
在这里插入图片描述
这就是卷积神经网络的作用。那么什么是卷积呢?首先看下图,我们可以将一张图片转换成一个矩阵

在这里插入图片描述
卷积就是将此像素矩阵依次与一个过滤器(带着一组固定权重的神经元)进行内积,如下图所示
在这里插入图片描述
最后再通过池化层进行选择,就是卷积神经网络的基本原理。

4 循环神经网络(RNN)

在这里插入图片描述
先看左半边图,如果不看隐藏层中的W,把它忽略,那么这其实就相当于是第二节介绍的深度神经网络的结构。那么从左图中就可以看出RNN呢其实就只是相当于在全连接神经网络的隐藏层增加了一个循环的操作。至于这个循环的操作具体是怎样的呢?单看左图可能有些懵逼,那么现在看上右图。上右图是RNN网络结构按照时间线展开图。
Xt是t时刻的输入,是一个[x0,x1,x2…xn]的向量
U是输入层到隐藏层的权重矩阵
St是t时刻的隐藏层的值
W是上一时刻的隐藏层的值传入到下一时刻的隐藏层时的权重矩阵
V是隐藏层到输出层的权重矩阵
Ot是t时刻RNN网络的输出
RNN可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开:
在这里插入图片描述
这就是循环神经网络的基本原理。

5 长短时记忆网络(LSTM)

人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件。这就是LSTM的优势,同时,它们可以学习只保留相关信息来进行预测,并忘记不相关的数据。简单说,因记忆能力有限,记住重要的,忘记无关紧要的。
从结构上来说,LSTM是一种RNN特殊的类型,可以学习长期依赖信息。所以,LSTM和RNN并没有特别大的结构不同,但是它们用了不同的函数来计算隐状态。具体区别呢?
这是RNN的结构:
在这里插入图片描述
这是LSTM的结构:
在这里插入图片描述
LSTM的关键就是细胞状态,类似于传送带,直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。就能记住相关性,

6 图神经网络(GCN)

在处理图结构的数据时,CNN、RNN效果不好甚至有时候无法解决。注意,这里说的图结构不是图片,我们做图像识别,对象是图片,是一个二维的结构,于是人们发明了CNN这种神奇的模型来提取图片的特征。CNN的核心在于它的kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享。这就是CNN的精髓所在。

再回忆一下RNN系列,它的对象是自然语言这样的序列信息,是一个一维的结构,RNN就是专门针对这些序列的结构而设计的,通过各种门的操作,使得序列前后的信息互相影响,从而很好地捕捉序列的特征。

上面讲的图片或者语言,都属于欧式空间的数据,因此才有维度的概念,欧式空间的数据的特点就是结构很规则。但是现实生活中,其实有很多很多不规则的数据结构,典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等;即使是语言,实际上其内部也是复杂的树形结构,也是一种图结构;而像图片,在做目标识别的时候,我们关注的实际上只是二维图片上的部分关键点,这些点组成的也是一个图的结构。

图的结构一般来说是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的CNN、RNN瞬间失效。这时GCN出现了,它也是一个神经网络层,它的层与层之间的传播方式是:
在这里插入图片描述
A波浪=A+I,I是单位矩阵
D波浪是A波浪的度矩阵(degree matrix),公式为
H是每一层的特征,对于输入层的话,H就是X
σ是非线性激活函数
这个公式不必要去理解,假设我们手头有一批图数据,其中有N个节点(node),每个节点都有自己的特征,我们设这些节点的特征组成一个N×D维的矩阵X,然后各个节点之间的关系也会形成一个N×N维的矩阵A,也称为邻接矩阵(adjacency matrix)。X和A便是我们模型的输入,然后用此模型提取出特征,效果嘎嘎好。
在这里插入图片描述
上图是原论文的附图,可以直观的了解GCN的基本原理。它实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。

7 生成对抗网络(GAN)

GAN其实是两个网络的组合:生成网络(Generator)负责生成模拟数据;判别网络Discriminator)负责判断输入的数据是真实的还是生成的。生成网络要不断优化自己生成的数据让判别网络判断不出来,判别网络也要优化自己让自己判断得更准确。二者关系形成对抗,因此叫对抗网络。下边图可以直观的感受:
在这里插入图片描述
这就是GAN的基本原理。

参考

1 DNN(全连接神经网络)
2 CNN笔记:通俗理解卷积神经网络
3 史上最小白之RNN详解
4 如何从RNN起步,一步一步通俗理解LSTM
5 理解 LSTM 网络
6 最通俗易懂的图神经网络(GCN)原理详解
7 一文看懂「生成对抗网络 - GAN」基本原理