深度学习
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun等人提出的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练性能。 [1]
深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。 [2]
同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =》S1=》S2=》…。.=》Sn =》 O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失,设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。现在回到主题Deep Learning,需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设设计了一个系统S(有n层),通过调整系统中参数,使得它的输出仍然是输入I,那么就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。 [3]
对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。 [3]
另外,前面是假设输出严格地等于输入,这个限制太严格,可以略微地放松这个限制,例如只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。 [3]
把学习结构看作一个网络,则深度学习的核心思路如下:
①无监督学习用于每一层网络的pre-train;
②每次用无监督学习只训练一层,将其训练结果作为其高一层的输入;
③用自顶而下的监督算法去调整所有层
主要技术
线性代数、概率和信息论
欠拟合、过拟合、正则化
最大似然估计和贝叶斯统计
随机梯度下降
监督学习和无监督学习
深度前馈网络、代价函数和反向传播
正则化、稀疏编码和dropout
自适应学习算法
卷积神经网络
循环神经网络
递归神经网络
深度神经网络和深度堆叠网络
LSTM长短时记忆
主成分分析
正则自动编码器
表征学习
蒙特卡洛
受限波兹曼机
深度置信网络
softmax回归、决策树和聚类算法
KNN和SVM
生成对抗网络和有向生成网络
机器视觉和图像识别
自然语言处理
语音识别和机器翻译
有限马尔科夫
动态规划
梯度策略算法
增强学习(Q-learning)
转折点
2006年前,尝试训练深度架构都失败了:训练一个深度有监督前馈神经网络趋向于产生坏的结果(同时在训练和测试误差中),然后将其变浅为1(1或者2个隐层)。
2006年的3篇论文改变了这种状况,由Hinton的革命性的在深度信念网(Deep Belief Networks, DBNs)上的工作所引领:
Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithm for deep belief nets.Neural Computation 18:1527-1554, 2006
Yoshua Bengio, Pascal Lamblin, Dan Popovici and Hugo Larochelle,Greedy LayerWise Training of Deep Networks, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems 19 (NIPS 2006), pp. 153-160, MIT Press, 2007
Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra and Yann LeCun Efficient Learning of Sparse Representations with an Energy-Based Model, in J. Platt et al. (Eds), Advances in Neural Information Processing Systems (NIPS 2006), MIT Press, 2007
在这三篇论文中以下主要原理被发现:
表示的无监督学习被用于(预)训练每一层;
在一个时间里的一个层次的无监督训练,接着之前训练的层次。在每一层学习到的表示作为下一层的输入;
用有监督训练来调整所有层(加上一个或者更多的用于产生预测的附加层);
DBNs在每一层中利用用于表示的无监督学习RBMs。Bengio et al paper 探讨和对比了RBMs和auto-encoders(通过一个表示的瓶颈内在层预测输入的神经网络)。Ranzato et al paper在一个convolutional架构的上下文中使用稀疏auto-encoders(类似于稀疏编码)。Auto-encoders和convolutional架构将在以后的课程中讲解。
从2006年以来,大量的关于深度学习的论文被发表。
为什么要有深度学习?
深度学习可以用更多的数据或是更好的算法来提高学习算法的结果。对于某些应用而言,深度学习在大数据集上的表现比其他机器学习(ML)方法都要好。
性能表现方面,深度学习探索了神经网络的概率空间,与其他工具相比,深度学习算法更适合无监督和半监督学习,更适合强特征提取,也更适合于图像识别领域、文本识别领域、语音识别领域等。
为什么深度学习会如此被热衷,因为它不以任何损失函数为特征,也不会被特定公式所限制,这使得该算法对科学家们更为开放,它能以比其他传统机器学习工具更好的方式进行使用和扩展。
进一步地说,引用 《Deep Learning Book MIT》(免费电子书:http://www.deeplearningbook.org/)这本书上的某个观点,或许能进一步给出为什么要从机器学习到深度学习,
1960年后,线性分类器的局限性开始被认识到,它只能将输入空间切分为非常简单的区域,即由一个超平面分离的两个半区间。对于像图像和语音识别这类问题,需要输入-输出函数对输入的非相关变化(位置的变化,方向变化,光照变化,语音的高音和低音变化)不敏感,而对类别敏感(如白狼和萨摩耶犬)。
在像素级别,两张不同的姿态,不同环境下萨摩耶犬的照片会有极大的不同,而同样的背景,同样位置的萨摩耶犬和白狼的照片可能非常相似。对直接操作图像像素的线性分类器或者其他“浅层”分类器可能不容易区分后两张照片,同时将前两张放在同一类。这就是为什么浅层分类器需要好的特征提取器—有选择地产生图片中重要类别信息的表示,同时对无关信息如姿态具有不变性—-以解决选择无关的困境。
为了让分类器更强大,可以使用广义非线性特征以及核函数方法。但广义特征(如高斯核函数)泛华能力差,常规的方法是手动设计好的特征提取器,而这需要大量工程经验和领域专家才能完成。如果好的特征可以使用通过学习的方法自动学习得到,上述问题就可以避免,这是深度学习的核心优势。
由此可见,深度学习有它强于传统的机器学习算法的地方,并且有时候只能用深度学习借助训练神经网络来完成某些识别任务。
深度学习系统学习清单
有了对ML算法的基本认识后,有助于对深度学习的快速理解,根据 playground.tensorflow.org 给出的一本免费深度学习电子书,再结合相关的paper,可以快速了解其中的理论和算法,包括广泛使用的几套神经网络模型,先对这些内容做一个提纲,接下来再有重点的总结。
这本书的组织思路如下:
1. Perceptrons感知器,这是最简单的神经网络
2. Sigmoid neurons
3. The architecture of neural networks
4 A simple network to classify handwritten digits 手写字分类
对手写字分类任务中,涉及到深度学习非常重要的参数求解方法:梯度下降学习权重参数;书中给出了源码实现。
5 反向传播算法(BP)
6 提升神经元学习的方法
7 可视化地证明:神经网络可以表示任何函数
8 为什么深度神经网络难以训练,包括常见的梯度消失问题。
再分析总结几套常用的神经网络:
DNN,深度神经网络
特指全连接的神经元结构,并不包含卷积单元或是时间上的关联。
RNN,循环神经网络
训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段连续的语音,一段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。
但是 RNN有致命的缺陷,只能知道记忆短暂的信息,对于距离相距很远的信息记忆能力差。比如我们做完型填空时,可能需要整合全文来填某一个句子,比如 I grew up in China…。此处省略一万字。。.。.I speak fluent _____ 。 如果 RNN 只知道邻近的几个单词,可能它会知道此处需要填写一门语言,但至于应该填什么,就需要找到更远前的信息,直到 找到 China 才行。这种需要寻找相距很远信息的情况,实际上非常常见。
LSTM
它是 RNN 的一种特殊形式,它被广泛应用在语音识别、语言建模、机器翻译、为图像起标题。
CNN,卷积神经网络
是深度学习算法在图像处理领域的一个应用。CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。