DBN/DNN/ANN/SNN

来源:互联网 发布:淘宝找不到自己的品牌 编辑:程序博客网 时间:2024/05/16 08:59

一、ANN与DNN区别

1、ANN与DNN背景

       传统的神经网络,也称为浅层神经网络SNN(shallow nerual network)。Deep Learning中重点研究的是深层神经网络,也称为DNN(Deep neural network,其中D是Deep的缩写。无论是SNN还是DNN都属于一类人工神经网络ANN。DNN也是机器学习(machine learning)或感知学习(perception learning)的一个分支。

下面是摘自网上对传统浅层ANN和DNN的描述。

1.1浅层学习是机器学习的第一次浪潮

 

       20世纪80年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。这个时候的人工神经网络,虽也被称作多层感知机(Multi-layer Perceptron),但实际是种只含有一层隐层节点的浅层模型。

        20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型无论是在理论分析还是应用中都获得了巨大的成功。相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。

1.2深度学习是机器学习的第二次浪潮

 

        2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

        当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)

 

        深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。

2、DNN的优点

相比传统的SNN,DNN由于具有更多的层次结果,因而对事物的建模或抽象表现能力更强,也能模拟更复杂的模型。

3、DNN与ANN的区别

其实DNN和ANN都是一种人工神经网络,所以可以说DNN属于ANN的一个分支。但是过去传统的神经网络ANN(Artifical Neural Network),都是层次较少的网络型结构,所以又被称为浅层网络(shallow neural network),DNN与传统SNN的区别就在于其网络层次结构更多,等复杂,因此由于其层次更多,在图论上说就是图的深度更深,所以被冠名为深度神经网络(Deep Neural Network)。

References

 

http://blog.csdn.net/zouxy09/article/details/8775518

 

一、DBN与DNN区别

  1 网络结构区别

   DBN最后的两层是一个RBM,并且除了最后两层,其他的层都是top-down结构的有向结构;

   DNN是一个bottom-up的结构,同时,在一般的文献中,将DNN作为一个DBN进行训练得到的模型还是称为DBN(这就是为什么我一直分不清这两种结构的原因)。



 

2.训练算法
    DBN在训练的时候,当做一个stack RBMs进行训练;
    DNN在预训练的时候,可以当做一个DBM进行预训练,也可以当做一个stack autoencoder进行预训练。在当做DBN进行预训练之后,还要在后面添加一个输出层,然后再使用BP算法进行训练;而当做stack autoencoder进行预训练之后,可以直接使用BP进行训练。

3.参考文献

1.Deep Neural Networks for Acoustic Modeling in Speech Recognition

总结:

DBN有一个非监督预训练的过程,使用RBM进行权重偏置的初始化。为dnn提供较好的初始参数

DNN也同样有使用自动编码机对神经网络的初始权重进行pre-training的过程啊。

0 0
原创粉丝点击