帖子

DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词

[复制链接]
  • TA的每日心情
    开心
    2018-11-27 10:57
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    11510  楼主| AI小助手 发表于 2018-12-3 15:12:17 1#
    「撞脸」一直都是娱乐圈一大笑梗。
    要是买火车票的时候碰上孙楠、杨臣刚、王大冶......脸盲症患者可以直接放弃回家,原地暴哭了。
    111.jpg
    当然,「撞脸」可不是娱乐圈的特有的,在AI界也有一些“长相相似”专业名词,让初学者傻傻分不清,比如我们今晚要科普的「相似三连」DNN、RNN、CNN。
    这3个名词其实是第三代神经网络里运用非常多3大算法:DNN(深度神经网络)、RNN(递归神经网络)、CNN(卷积神经网络)。
    222.jpg

    01
    1.三代神经网络的发展
    在正式开讲这3者的区别之前,我们先简单做个回顾,第一代和第二代神经网络到底是什么?
    第一代神经网络又称为感知器,在1950年左右被提出来,它的算法只有两层,输入层输出层,主要是线性结构。它不能解决线性不可分的问题,对稍微复杂一些的函数都无能为力,如异或操作。
    为了解决第一代神经网络的缺陷,在1980年左右Rumelhart、Williams等人提出第二代神经网络多层感知器(MLP)。和第一代神经网络相比,第二代在输入层之间有多个隐含层的感知机,可以引入一些非线性的结构,解决了之前无法模拟异或逻辑的缺陷。
    第二代神经网络让科学家们发现神经网络的层数直接决定了它对现实的表达能力,但是随着层数的增加,优化函数愈发容易出现局部最优解的现象,由于存在梯度消失的问题,深层网络往往难以训练,效果还不如浅层网络。
    2006年Hinton采取无监督预训练(Pre-Training)的方法解决了梯度消失的问题,使得深度神经网络变得可训练,将隐含层发展到7层,神经网络真正意义上有了“深度”,由此揭开了深度学习的浪潮,第三代神经网络开始正式兴起。
    333.jpg
    02
    2.深度神经网络最常用的三大算法
    说完了三代神经网络的大概发展,我们现在来看下第三代神经网络中经常让大家叫苦的3大名词:DNN、RNN、CNN。

    DNN:深度神经网络
    从结构上来说,DNN和传统意义上的NN(神经网络)并无太大区别,最大的不同是层数增多了,并解决了模型可训练的问题。
    简言之,DNN比NN多了一些隐层,但这些隐层的作用是巨大的,带来的效果是非常显著和神奇的。
    444.jpg
    当然第三代神经网络能够带来神奇的效果,并不仅仅是因为它的模型结构和训练方法更为优化、算法更加先进,最重要的是随着移动互联网的普及海量数据的产生和机器计算能力的增强。
    DNN中的“deep”意为深度,但深度学习中深度没有固定的定义或者衡量标准,不同问题的解决所需要的隐含层数自然也是不相同的,就大家比较熟识的语音识别来说,解决问题可能4层就够了,但一般图像识别需要达到20多层才能够解决问题。
    DNN最大的问题是只能看到预先设定的长度的数据,对于语音和语言等前后相关的时序信号的表达能力还是有限的,基于此提出了RNN模型,即递归神经网络。

    RNN:递归神经网络
    全连接的DNN存在着一个无法解决的问题:无法对时间序列上的变化进行建模。
    为了应对这种需求,业内提出了上文中提到的递归神经网络RNN。
    在普通的全连接网络中,DNN的隐层只能够接受到当前时刻上一层的输入,而在RNN中,神经元的输出可以在下一时间段直接作用到本身。换句话说,就是递归神经网络它的隐层不但可以接收到上一层的输入,也可以得到上一时刻当前隐层的输入。
    这一个变化的重要意义就在于使得神经网络具备了历史记忆的功能,原则上它可以看到无穷长的历史信息,这非常适合于像语音语言这种具有长时相关性的任务。
    555.jpg

    CNN:卷积神经网络
    卷积神经网络主要是模拟人的视觉神经系统提出来的。
    以CNN做人脸识别任务为例,先得到一些像素信息,再往上层得到一些边界信息,然后再往上提取就是一些人脸的部件信息,包括眼睛、耳朵、眉毛嘴巴等,最后是人脸识别,这整个过程和人的视觉神经系统是非常相似的。
    666.jpg
    卷积神经网络的结构依旧包括输入层、隐藏层和输出层,其中卷积神经网络的隐含层包含卷积层、池化层和全联接层3类常见构筑,接下来我们着重讲解下卷积和池化的相关知识点。
    卷积层的功能是对输入数据进行特征提取,其内部包含多个卷积核,一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。
    一次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算,这就是多层卷积。
    777.jpg
    在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。
    通过这种池化的操作,能够一定程度上克服图像的一些旋转和局部的细微变化,从而使得特征的表达更加稳定。

    好啦,今晚对DNN、CNN和RNN的简单科普到这里就结束了,关于每种网络的用法大家还需要在实际建模中努力探索。

    当然不论是哪种算法,它们往往都会混合在一起使用以达到效果的最优化,同学们要做的便是掌握好理论知识,在实践中找到最灵活的组合方式。


    888.jpg

    AI研究院副院长  王海坤博士

    111****11111111111111.jpg