深度学习说白了就是机器学习中的神经网络。
相关知识:分类、回归
分类和回归是机器学习中两个非常重要的问题。
在分类任务中,希望能自动识别某种数据的类别。一般情况是这样,首先你通过已有数据,以及标记的分类,建立模型,然后通过模型预测新输入数据的类别。例如针对不同类别蔬菜的图像。我们首先为每种蔬菜照片指定了特定的标签,例如土豆,番茄,胡萝卜等,然后通过图像分类的算法建立了一个蔬菜识别的模型。针对新的蔬菜照片来说,可以通过这个模型输出对应的标签(蔬菜名)。
建立模型的过程叫做训练。在训练过程中,有个非常重要的工作就是调参。针对输入的图像,我们调整模型的参数,希望输出的标签类别尽可能正确可靠。为了测试模型的预测能力,可以针对不同的训练样本进行测试,判别其预测的准确度,当准确度最高或者达到需求时,参数就是最优的。
回归和分类问题类似,但是他处理的是连续数据,从特定的输入向量预测其指标值。例如,我们可以在一定经纬度与地形高度对应的样本的基础上,建立模型,从而预测不在训练样本内的经纬度下其地形高度是怎样的。
用于分类和回归的方法是相似的,都涉及到超纬数据的多纬泛化,只是一个针对离散数据,一个针对连续数据。那么它们都涉及到调参的问题。
为了解决调参的问题,研究者们尝试设计一个超级通用的黑盒子,它具有许多参数(可以联想到旋钮)可以调整,以便将输入映射到准确的输出。比较古老的梯度下降算法能自动的调整参数,以使得模型在特定的训练数据集上能达到最优的效果。大量机器学习的研究也是在优化这种涉及。神经网络就是其中一种。
神经网络
McCulloch和Pitts最早在他们感知器的相关工作中提出了神经网络的概念,其设计理念来源于人脑。在1975年,Werbos创建了反向传播学习算法,神经网络才开始应用到模型训练中。该方法通过链规则对网络的输入进行反向传播,更新其梯度从而实现梯度下降。
通常神经网络由很多层和节点组成。每一层从前面一层的每个节点中获取数据,将这些数据乘以权重并且将来自不同节点的数据相加,最后在通过非线性函数产生该层的结果。每一层会有很多节点,从而实现实现尺寸的缩减或扩展。
神经网络示意
最简单的神经网络如上图所示,一个输入层、一个隐藏层和一个输出层。输出层是输入层的连续函数,这样就完成了回归的功能。为了得到分类效果,可以将输出层的每个节点阈值化或者用来表征类别的概率,还一种做法则是借助另外的机器学习算法实现分类,例如SVM。
无监督训练
传统神经网络存在两个比较明显的问题。一是当处理的问题越来越复杂,所需要的层次越来越多,反向传播算法的效率会大大降低。二是在训练期间容易陷入饱和模式,特别是使用sigmoidal等函数时。最新研究成果就是结合无监督训练解决上述问题。
前面我们介绍分类和回归,都是说训练时候除了样本数据,还需要输入对应的标签。这种方法成为监督学习方法。而无监督训练指的是输入的样本不用包含样本对应的标签,只需要指定一个最大化的目标函数,用来表征分类的效果,算法通过样本训练出具体的分类。
借助无监督学习方法,可以让神经网络工作的更好。我们使用无监督学习算法,一层一层训练,一旦有了一个没有标记数据而训练出来的网络,再借助SVM等方法就可以达到分类效果。还有一种方法,在前面层次都使用无监督学习,但是为了保证分类的准确度,输出层使用带标记的样本数据进行训练,这中方法称为半监督学习方法。输出层使用的数据样本可以不用像前面那些无监督学习层次的多。
半监督学习和人脑是比较接近的。简单来说,小孩的大脑从各种感官数据中学习,形成自己对世界的认知模型,然后成人给提供少量带有标签的信息,从而最终“训练”出小孩自己的思维模式。当然人脑还有很多非常的功能和限制是当前理论所无法表征的。
深度学习
除了上面介绍的理论逐渐完善,还一个推动深度学习火热的因素是最近硬件技术的发展,特别是GPU和FPGA。深度学习的训练过程是非常耗时的,以往硬件来说往往要耗费几天甚至更长时间,而GPU和FPGA则非常适合进行相关并行计算,大大缩短了训练时间。训练时间的降低,对算法的迭代,模型的效果都大有裨益。
RBM是深度学习层次的常用架构,它是由可视单元和隐藏单元的概率无向图组成的。相关单元的权重是输入空间的特定的概率分布,模型训练就是为了计算出权重最优。多层次的RBM可以叠加,这样可以使用贪心算法,一层一层训练从而实现多层次的神经网络。
RBM架构
图像数据的统计规律往往具有平移不变性,另外一种架构卷积神经网络能大大需要学习的参数。卷积神经网络训练的权重往往能应用到图像的不同位置,也就是说不用针对左边图像和右边图像进行分别统计。使用稀疏数据进行训练的神经网络在图像分类上也取得了不错的结果,它减少了整个模型中同时活跃的unit的数量,并且能从中训练出非高斯分布的模型。