深度学习(一)——深度学习概述
深度学习的定义和起源
我们谈论的深度学习(Deep learning),从某种意义上来说,是机器学习(Machine learning)领域的一个分支,它实际上就是使用了一类非常重要且功能强大的机器学习模型——人工神经网络(Artificial Neural Network,ANN)。其实把深度学习等同于神经网络也并无不可。深度学习具有以下的特点:
- 神经网络的层数往往比较多,可能会多达10多层。
- 深度学习非常注重特征的变换,明确了特征学习的重要性。实际上,深度学习的每一层就是一个特征变换,能够使得低维的数据自动地向高维转化。这一过程相当于自动的特征工程,使得原本在传统机器学习中非常复杂的特征过程变得程式化,也更科学。
神经网络的模型思路,来自于仿生学和神经科学。当人类第一次构思可编程的计算机时,就已经在思考如何让机器变得智能(即时当时距离第一台计算机的出现还有一百多年)。为了达成这个目标,当时的人们自然地想到,能否从人的大脑中获得一些启发,来设计一种方案,使得机器获得和人脑一样的智能呢?为此,神经科学家们进行了许多许多的实验(有的甚至非常残忍,至少在我看来),这里我讲一个我印象非常深刻的实验:
我们知道,人的大脑是由神经细胞组成的,神经细胞错综复杂地连接在一起,并且在神经细胞之间以简单的电信号传播。并且,不同的脑功能对应了不同的大脑皮层区域。于是科学家做了这样一个实验:他们把小鼠脑中负责听觉(具体是哪种感觉可能有差距)的脑细胞刨除,然后将负责传送听觉的神经细胞接到大脑皮层的其他位置。意想不到的是,经过一段时间的训练,小鼠产生了正常的听觉,并能对外界进行反应。这说明,大脑中负责不同功能的神经细胞其实并没有什么不同,它们很可能都是一样的简单的计算单元。它们将输入的信号进行一番运算后,再将运算结果传递给下一个或者下一层细胞,下一层神经细胞继续运算,直到最后一层神经细胞,得出判断。
模仿神经细胞逐层传递的过程,就形成了人工神经网络。
促使深度学习发展的原因
前面说过,深度学习其实只是机器学习的一个特殊模型而已,为什么它现在会作为一个特别的领域,单独独立开来呢?而且,目前在人工智能的两大分支领域——自然语言处理和计算机视觉中,深度学习得到了广泛的应用,甚至在计算机视觉领域,几乎完全舍弃了机器学习的传统模型,这又是为什么呢?这就要从传统机器学习发展过程中遇到的挑战说起。
传统机器学习主要遇到了下面几个问题:
- 特征工程方面的挑战;
- 维度灾难;
- 局部不变性和平滑正则化;
- 流形学习。
特征工程方面的挑战
特征工程方面的挑战主要在于对于传统机器学习来说,构造有效的特征是很不容易的。在机器学习领域有这样一句话:“数据决定上限,模型只不过是不断逼近这个上限而已”。而对于数据,最重要的就是它们的特征是否具有代表性,是否能更好地反应几类数据之间的差别。特征工程,是机器学习最重要的一方面,特征工程能否做好决定了你的模型是否优秀。而在实际操作中,特征工程是非常难操作的,人们往往只能依靠经验去解决特征工程的问题,并且工作量巨大。
而深度学习,通过增大深度的方式,实现了自动的特征工程。前面已经提过,深度学习中的每一层实际上都是一个特征变换。也可以理解为,前几层神经元,通过自动学习的方式,自动构造出了比较符合数据实际分布的特征。这种利用学习来构造特征的方式,要比人工做的特征工程更加科学,效果也更好。
维度灾难
当数据的维度很高时,很多机器学习问题变得相当困难,这种现象被称为维度灾难(Curse of dimensionality),一组变量不同的可能配置数量会随着维度的增加成指数级增长,这就导致了一些问题。
设想这样一种情况:假设我们有一组有一个特征的数据,该特征的可能取值仅仅有10个区间。假设我们有一亿个数据(这已经算是很大的数据集了),那么大部分情况下,我们的数据都能覆盖各种可能的取值,这时我们采用传统的机器学习模型去解决这个问题,能够得到不错的泛化能力。但是,当我们把数据进行扩维,扩充到二维时,可能的取值变成了100个,三维时,1000个,四维时,10000个……当维度不断增大,可能取值的情况也不断增多,例如数据的维度有30维时,我们即便有一亿个数据,也会有很多的取值情况无法覆盖,这还是在假设每个特征只有10个取值的情况下。换句话说,高维空间下,样本数目会远远小于参数配置数目,大部分的配置没有相关的样本,这时就会大大减小模型的泛化能力。
对于这个问题,许多传统机器学习模型只是简单地假设没有覆盖到的地方与离它最近的样本的输出相同,这显然不是一个很好的解决方案。
局部不变性和平滑正则化
为了更好地泛化,机器学习算法往往需要由先验信念引导应该学习什么样的函数。通俗地讲,在机器学习过程中,我们往往会根据样本的先验分布来选择使用什么样的模型,训练什么样的函数,而仅仅通过它们对函数的影响来间接改变参数。
其中使用最广泛的“先验”是平滑先验或局部不变性先验。这个先验表明我们学习的函数不应该在很小的范围内发生很大的变化。有的机器学习模型完全依赖这个先验达到良好的泛化,K最近邻算法是一个极端的例子,它在样本点的邻域内完全复制了该样本点的输出,即使是比较先进的核学习方法也不过是在样本点之间进行插值,但其结果是这个先验不能推广去解决人工智能级别的统计挑战。
流形学习
流形是数学上的一个概念,通俗地来讲,是指连接在一起的区域。比如我们熟悉的地球,实际上就是三维空间的球状流形。
知道了流形的概念,我们现在考虑这样一个情境:我们现在站在地球上,我们如何才能描述自己处在地球上的哪个位置呢?答案是用经度和纬度。但是,地球实际上是三维空间中的流形,应当用三个坐标才能描述,为什么在这里用两个坐标就可以了呢?这就是流形学习中最重要的流形假设:高维空间中的大部分区域都是无效的输入,有意义的输入只分布在包含少量数据点的子集构成的一组流形中,换句话说,高维空间数据位于低位空间中的流形中。回到刚才地球的例子,我们实际上就是假设整个三维空间(宇宙)的大部分区域都是无效的,人不可能停留在地心,也不可能在其他遥远的星球中,人实际上是在地球表面,这样一个二维球面上的,因此能够用二维数据来刻画。
再举一个抽象一点的例子,我们有下面这样的分布在三维空间中的数据,但我们可以把它近似看成分布在一个曲面上,然后利用这个曲面上的坐标来刻画这些点。
流形假设并不总是正确的,但在很多领域中,比如涉及图像、声音、文本的处理中,流形假设至少是近似正确的。提取流形坐标是很有挑战性的,但是很有希望能够改进一些机器学习算法。一些深度生成模型就可以达成这样的效果。
小结
本文主要介绍了深度学习的一些概念性以及理论性的知识。本专题计划涉及全连接神经网络、卷积神经网络、循环神经网络等多种神经网络模型。希望能给予读者一些启发,并给我自己作整理、复习用。文章主要内容参考自《深度学习》(人民邮电出版社)。
来源:CSDN
作者:石烨
链接:https://blog.csdn.net/qq_43371810/article/details/103925933