深度学习是指多层神经网络上运用各种机器学习算法解决图像、文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。深度学习是一个框架,包含多个重要算法:
Convolutional Neural Networks(CNN)卷积神经网络
AutoEncoder(AE)自动编码器
Sparse Coding 稀疏编码
Restricted Boltzmann Machine(RBM)限制玻尔兹曼机
Deep Belief Networks(DBN) 深度信念网络
Recurrent neural Network(RNN)多层反馈循环神经网络/递归神经网络
对于不同问题(图像、语言、文本),需要选用不同网络模型才能达到更好效果。此外,最近几年增强学习(Reinforcement Learning)与深度学习的结合也创造了许多了不起的成果。
1、卷积神经网络(CNN)
是一种深层神经网络模型。它的特殊性体现在两个方面:
a.相邻层的神经元之间的连接是非全连接的
b.同一层中某些神经元之间的连接的权重是共享的
前馈神经网络,各神经元从输入层开始,接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。每一层节点是一个线性的一维排列状态,层与层的网络节点之间是全链接的。假设一下,如果前馈神经网络中层与层之间的节点连接不再是全连接,而是局部连接的,这样,就是一种最简单的一维卷积网络。
局部连接:
CNN在网络的相邻两层之间使用局部连接来获取图像的局部特性。具体地说,第m层的隐藏单元只与第m-1层的局部区域有链接,第m-1层的这些局部区域被称为空间连续的接收域。
权值共享:
在CNN中,对整个图像进行一次卷积操作,不同局部区域使用的是同一个卷积核(即权重参数相同),由此生成了一个特征映射(feature map)。通过对不同的卷积核对整个图像进行卷积可生成不同feature map。
基本组成部分:
卷积层:
池化层:
是CNN的重要组成部分,通过减少卷积层之间的连接,降低运算复杂程度。以下是常用的几种池化算法:(1)Lp池化;(2)混合池化;(3)随机池化;(4)Spectral池化
激活函数:
常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全链接层,后者relu常见于卷积层。
1)Relu;2)Leaky Relu;3)Parametric Relu;4)Randomized ReLU;5)ELU;6)Maxout;7)Probout;
Loss函数:
1)Softmax loss;2)Hinge loss;3)Contrastive loss;
优化:
1)初始化权重;2)随机梯度下降;3)批量标准化;4)Shortcut连接