0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

科普主流的神经网络模型及应用场景

ml8z_IV_Technol ? 2018-12-01 09:18 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

深度学习大热以后各种模型层出不穷,很多朋友都在问到底什么是DNN、CNN和RNN,这么多个网络到底有什么不同,作用各是什么?

在本文我也想介绍一下主流的神经网络模型。因为格式问题和传播原因,我把原回答内容在这篇文章中再次向大家介绍。

大部分神经网络都可以用深度(depth)和连接结构(connection)来定义,下面会具体情况具体分析。

笼统的说,神经网络也可以分为有监督的神经网络和无/半监督学习,但其实往往是你中有我我中有你,不必死抠字眼。

有鉴于篇幅,只能粗略的科普一下这些非常相似的网络以及应用场景,具体的细节无法展开详谈,有机会在以后深入解析。

文章中介绍的网络包括:

1. 有监督的神经网络(Supervised Neural Networks) 1.1. 神经网络(Artificial Neural Networks)和深度神经网络(Deep Neural Networks)

追根溯源的话,神经网络的基础模型是感知机(Perceptron),因此神经网络也可以叫做多层感知机(Multi-layer Perceptron),简称MLP。单层感知机叫做感知机,多层感知机(MLP)≈人工神经网络(ANN)。

那么多层到底是几层?一般来说有1-2个隐藏层的神经网络就可以叫做多层,准确的说是(浅层)神经网络(Shallow Neural Networks)。随着隐藏层的增多,更深的神经网络(一般来说超过5层)就都叫做深度学习(DNN)。

然而,“深度”只是一个商业概念,很多时候工业界把3层隐藏层也叫做“深度学习”,所以不要在层数上太较真。在机器学习领域的约定俗成是,名字中有深度(Deep)的网络仅代表其有超过5-7层的隐藏层。

神经网络的结构指的是“神经元”之间如何连接,它可以是任意深度。以下图的3种不同结构为例,我们可以看到连接结构是非常灵活多样的。

需要特别指出的是,卷积网络(CNN)和循环网络(RNN)一般不加Deep在名字中的原因是:它们的结构一般都较深,因此不需要特别指明深度。想对比的,自编码器(Auto Encoder)可以是很浅的网络,也可以很深。所以你会看到人们用Deep Auto Encoder来特别指明其深度。

应用场景:全连接的前馈深度神经网络(Fully Connected Feed Forward Neural Networks),也就是DNN适用于大部分分类(Classification)任务,比如数字识别等。但一般的现实场景中我们很少有那么大的数据量来支持DNN,所以纯粹的全连接网络应用性并不是很强。

1. 2. 循环神经网络(Recurrent Neural Networks)和递归神经网络(Recursive Neural Networks)

虽然很多时候我们把这两种网络都叫做RNN,但事实上这两种网路的结构事实上是不同的。而我们常常把两个网络放在一起的原因是:它们都可以处理有序列的问题,比如时间序列等。

举个最简单的例子,我们预测股票走势用RNN就比普通的DNN效果要好,原因是股票走势和时间相关,今天的价格和昨天、上周、上个月都有关系。而RNN有“记忆”能力,可以“模拟”数据间的依赖关系(Dependency)。

为了加强这种“记忆能力”,人们开发各种各样的变形体,如非常著名的Long Short-term Memory(LSTM),用于解决“长期及远距离的依赖关系”。如下图所示,左边的小图是最简单版本的循环网络,而右边是人们为了增强记忆能力而开发的LSTM。

同理,另一个循环网络的变种 - 双向循环网络(Bi-directional RNN)也是现阶段自然语言处理和语音分析中的重要模型。开发双向循环网络的原因是语言/语音的构成取决于上下文,即“现在”依托于“过去”和“未来”。单向的循环网络仅着重于从“过去”推出“现在”,而无法对“未来”的依赖性有效的建模。

递归神经网络和循环神经网络不同,它的计算图结构是树状结构而不是网状结构。递归循环网络的目标和循环网络相似,也是希望解决数据之间的长期依赖问题。而且其比较好的特点是用树状可以降低序列的长度,从O(n)降低到O(log(n)),熟悉数据结构的朋友都不陌生。但和其他树状数据结构一样,如何构造最佳的树状结构如平衡树/平衡二叉树并不容易。

应用场景:语音分析,文字分析,时间序列分析。主要的重点就是数据之间存在前后依赖关系,有序列关系。一般首选LSTM,如果预测对象同时取决于过去和未来,可以选择双向结构,如双向LSTM。

1.3. 卷积网络(Convolutional Neural Networks)

卷积网络早已大名鼎鼎,从某种意义上也是为深度学习打下良好口碑的功臣。不仅如此,卷积网络也是一个很好的计算机科学借鉴神经科学的例子。卷积网络的精髓其实就是在多个空间位置上共享参数,据说我们的视觉系统也有相类似的模式。

首先简单说什么是卷积。卷积运算是一种数学计算,和矩阵相乘不同,卷积运算可以实现稀疏相乘和参数共享,可以压缩输入端的维度。和普通DNN不同,CNN并不需要为每一个神经元所对应的每一个输入数据提供单独的权重。

与池化(pooling)相结合,CNN可以被理解为一种公共特征的提取过程,不仅是CNN大部分神经网络都可以近似的认为大部分神经元都被用于特征提取。

以上图为例,卷积、池化的过程将一张图片的维度进行了压缩。从图示上我们不难看出卷积网络的精髓就是适合处理结构化数据,而该数据在跨区域上依然有关联。

应用场景:虽然我们一般都把CNN和图片联系在一起,但事实上CNN可以处理大部分格状结构化数据(Grid-like Data)。举个例子,图片的像素是二维的格状数据,时间序列在等时间上抽取相当于一维的的格状数据,而视频数据可以理解为对应视频帧宽度、高度、时间的三维数据。

2. 无监督的预训练网络(Unsupervised Pre-trained Neural Networks) 2.1. 深度生成模型(Deep Generative Models)

说到生成模型,大家一般想到的无监督学习中的很多建模方法,比如拟合一个高斯混合模型或者使用贝叶斯模型。深度学习中的生成模型主要还是集中于想使用无监督学习来帮助监督学习,毕竟监督学习所需的标签代价往往很高…所以请大家不要较真我把这些方法放在了无监督学习中。

2.1.1. 玻尔兹曼机(Boltzmann Machines)和受限玻尔兹曼机(Restricted Boltzmann Machines)

每次一提到玻尔兹曼机和受限玻尔兹曼机我其实都很头疼。简单的说,玻尔兹曼机是一个很漂亮的基于能量的模型,一般用最大似然法进行学习,而且还符合Hebb’s Rule这个生物规律。但更多的是适合理论推演,有相当多的实际操作难度。

而受限玻尔兹曼机更加实际,它限定了其结构必须是二分图(Biparitite Graph)且隐藏层和可观测层之间不可以相连接。此处提及RBM的原因是因为它是深度信念网络的构成要素之一。

应用场景:实际工作中一般不推荐单独使用RBM…

2.1.2. 深度信念网络(Deep Belief Neural Networks)

DBN是祖师爷Hinton在06年提出的,主要有两个部分: 1. 堆叠的受限玻尔兹曼机(Stacked RBM) 2. 一层普通的前馈网络。

DBN最主要的特色可以理解为两阶段学习,阶段1用堆叠的RBM通过无监督学习进行预训练(Pre-train),阶段2用普通的前馈网络进行微调。

就像我上文提到的,神经网络的精髓就是进行特征提取。和后文将提到的自动编码器相似,我们期待堆叠的RBF有数据重建能力,及输入一些数据经过RBF我们还可以重建这些数据,这代表我们学到了这些数据的重要特征。

将RBF堆叠的原因就是将底层RBF学到的特征逐渐传递的上层的RBF上,逐渐抽取复杂的特征。比如下图从左到右就可以是低层RBF学到的特征到高层RBF学到的复杂特征。在得到这些良好的特征后就可以用第二部分的传统神经网络进行学习。

多说一句,特征抽取并重建的过程不仅可以用堆叠的RBM,也可以用后文介绍的自编码器。

应用场景:现在来说DBN更多是了解深度学习“哲学”和“思维模式”的一个手段,在实际应用中还是推荐CNN/RNN等,类似的深度玻尔兹曼机也有类似的特性但工业界使用较少。

2.1.3. 生成式对抗网络(Generative Adversarial Networks)

生成式对抗网络用无监督学习同时训练两个模型,内核哲学取自于博弈论…

简单的说,GAN训练两个网络:1. 生成网络用于生成图片使其与训练数据相似 2. 判别式网络用于判断生成网络中得到的图片是否是真的是训练数据还是伪装的数据。生成网络一般有逆卷积层(deconvolutional layer)而判别网络一般就是上文介绍的CNN。自古红蓝出CP,下图左边是生成网络,右边是判别网络,相爱相杀。

熟悉博弈论的朋友都知道零和游戏(zero-sum game)会很难得到优化方程,或很难优化,GAN也不可避免这个问题。但有趣的是,GAN的实际表现比我们预期的要好,而且所需的参数也远远按照正常方法训练神经网络,可以更加有效率的学到数据的分布。

另一个常常被放在GAN一起讨论的模型叫做变分自编码器(Variational Auto-encoder),有兴趣的读者可以自己搜索。

应用场景:现阶段的GAN还主要是在图像领域比较流行,但很多人都认为它有很大的潜力大规模推广到声音、视频领域。

2.2. 自编码器(Auto-encoder)

自编码器是一种从名字上完全看不出和神经网络有什么关系的无监督神经网络,而且从名字上看也很难猜测其作用。让我们看一幅图了解它的工作原理

如上图所示,Autoencoder主要有2个部分:1. 编码器(Encoder) 2. 解码器(Decoder)。我们将输入(图片2)从左端输入后,经过了编码器和解码器,我们得到了输出….一个2。但事实上我们真正学习到是中间的用红色标注的部分,即数在低维度的压缩表示。评估自编码器的方法是重建误差,即输出的那个数字2和原始输入的数字2之间的差别,当然越小越好。

和主成分分析(PCA)类似,自编码器也可以用来进行数据压缩(Data Compression),从原始数据中提取最重要的特征。认真的读者应该已经发现输入的那个数字2和输出的数字2略有不同,这是因为数据压缩中的损失,非常正常。

应用场景:主要用于降维(Dimension Reduction),这点和PCA比较类似。同时也有专门用于去除噪音还原原始数据的去噪编码器(Denoising Auto-encoder)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    3827

    浏览量

    138443
  • 神经网络
    +关注

    关注

    42

    文章

    4814

    浏览量

    104111

原文标题:主流的深度学习模型有哪些?

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无刷电机小波神经网络转子位置检测方法的研究

    摘要:论文通过对无刷电机数学模型的推导,得出转角:与三相相电压之间存在映射关系,因此构建了一个以三相相电压为输人,转角为输出的小波神经网络来实现转角预测,并采用改进遗传算法来训练网络结构与参数,借助
    发表于 06-25 13:06

    基于FPGA搭建神经网络的步骤解析

    本文的目的是在一个神经网络已经通过python或者MATLAB训练好的神经网络模型,将训练好的模型的权重和偏置文件以TXT文件格式导出,然后通过python程序将txt文件转化为coe
    的头像 发表于 06-03 15:51 ?474次阅读
    基于FPGA搭建<b class='flag-5'>神经网络</b>的步骤解析

    BP神经网络与卷积神经网络的比较

    BP神经网络与卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈神经网络
    的头像 发表于 02-12 15:53 ?737次阅读

    如何优化BP神经网络的学习率

    优化BP神经网络的学习率是提高模型训练效率和性能的关键步骤。以下是一些优化BP神经网络学习率的方法: 一、理解学习率的重要性 学习率决定了模型参数在每次迭代时更新的幅度。过大的学习率可
    的头像 发表于 02-12 15:51 ?996次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 ?989次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural N
    的头像 发表于 02-12 15:15 ?917次阅读

    如何训练BP神经网络模型

    BP(Back Propagation)神经网络是一种经典的人工神经网络模型,其训练过程主要分为两个阶段:前向传播和反向传播。以下是训练BP神经网络
    的头像 发表于 02-12 15:10 ?978次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个神经元组成,
    的头像 发表于 01-23 13:52 ?564次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络 ? 人工神经网络
    的头像 发表于 01-09 10:24 ?1313次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法

    ANN神经网络——器件建模

    随着半导体行业的新材料、新工艺、新器件的不断发展,人工神经网络作为一种替代方法已经被引入器件建模领域。本文介绍了ANN神经网络建模的起源、优势、实现方式和应用场景。 ? 随着半导体行业的新材料
    的头像 发表于 01-06 13:41 ?1076次阅读
    ANN<b class='flag-5'>神经网络</b>——器件建模

    卷积神经网络与传统神经网络的比较

    在深度学习领域,神经网络模型被广泛应用于各种任务,如图像识别、自然语言处理和游戏智能等。其中,卷积神经网络(CNNs)和传统神经网络是两种常见的模型
    的头像 发表于 11-15 14:53 ?1947次阅读

    RNN模型与传统神经网络的区别

    神经网络是机器学习领域中的一种强大工具,它们能够模拟人脑处理信息的方式。随着技术的发展,神经网络的类型也在不断增加,其中循环神经网络(RNN)和传统神经网络(如前馈
    的头像 发表于 11-15 09:42 ?1189次阅读

    LSTM神经网络的训练数据准备方法

    : 一、数据收集与清洗 数据收集 : 根据LSTM神经网络的应用场景(如时间序列预测、自然语言处理等),收集相关的时间序列数据或文本数据。 数据可以来自数据库、日志文件、传感器读数、用户行为记录等多种来源。 数据清洗 : 去除数据中的噪声和异常值,例如去除缺失值、
    的头像 发表于 11-13 10:08 ?2189次阅读

    【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-车牌识别

    LPRNet基于深层神经网络设计,通过轻量级的卷积神经网络实现车牌识别。它采用端到端的训练方式,不依赖字符分割,能够直接处理整张车牌图像,并输出最终的字符序列。这种设计提高了识别的实时性和准确性
    发表于 10-10 16:40

    matlab 神经网络 数学建模数值分析

    matlab神经网络 数学建模数值分析 精通的可以讨论下
    发表于 09-18 15:14