深度学习(一)——对“深度学习”这一常见话题的基础认识

写这篇博客的冻鸡呢,是因为之前一直做的是传统机器学习的算法研究,对深度学习这块基本没用过,最近想了解了解,算是给自己的认识做个记录,因为我是从书里的章节先做个基础的了解,所以思路有点根据书里的来。


书里的介绍的“人工神经网络”放在第九章,而“深度学习概论”放在第十四章。但是,我目前的理解是几乎把两者等同了,深度学习其实形容的是人工神经网络的规模,也就是网络层数的庞大,但是当层数比较少,比如只有一个隐藏层,那么充其量也只能算是一个模仿人类大脑神经元处理方式的一个机制。但是因为目前,使用的都是层数庞大的人工神经网络,所以先把这两个概念用“深度学习”在下文做说明。

我自己做的一直是传统机器学习的算法研究,所以对于这种“人工特征+算法(比如分类器)”的机制感触挺深。就像书里说的那样,有三个比较明显的缺点:

  1. 特征的通用性差:针对不同的任务,需要提取的特征也不同。比如颜色直方图是描述图像颜色概率分布的计算机视觉特征,而HOG是描述图像边缘的特征。这些特征只对特定的任务有用,或者说不具有自适应的能力。想想看,每做一个不同的任务,都需要对图像做不同的特征提取,也是很累的;
  2. 特征的描述能力有限:既然是针对某个任务提取的特征,那么对图像的描述是不可能很全面,这个我觉得跟Multi-view Learning有关系,因为其目的就是为了提高任务的精度才使用的多种特征,目的就是弥补单个特征的不足;
  3. 维度灾难:这个词大家听得就多了。无非是因为特征维度太高导致的精度下降。但是为什么特征维度太高会导致下降呢。我觉得这么解释有一定的合理性:当描述数据的维度从一维,到二维,三维,想象一下是在坐标系中,容纳数据的空间是不是变大了,那么同样多的数据在三维的分布肯定是要比一维分布上的密度小得多,那么如果我现在做一个分类器,比如SVM把,是不是很容易找到一个超平面做一个线性分类。但是不要忘记了,我在三维空间的线性超平面在二维是不存在的,也就是说二维平面的分类是一个非线性的分类器,具体的表现就是一条弯弯曲曲的线把同一类的圈起来。这是什么意思呢,我在训练集上做一个这么精确、精准的分类,导致的是不是在训练集上的性能最好,那就是我们说的过拟合了。所以这里说的维度太高导致的精度下降,我觉得是过拟合引起的测试集上的泛化性能的下降。

所以针对“传统机器学习”的这三个缺点,有了深度学习,那么为什么说深度学习可以解决这三个问题呢,我把思路列成两点:

  1. 深度学习可以自动地学习复杂、有用的特征,把提取特征的步骤融入到学习框架中,避免了人工提取特征的步骤;
  2. 深度学习中的神经元数量除了输入输出层外,隐藏层的神经元数目是可以调节的,可以在实验中找到合适维度且保证精度的神经元个数,也就是隐藏层特征的维度,可以避免一部分维度灾难的问题。

然而,深度学习有优点,自然也有缺点,那么缺点从何而来:

深度学习为了能处理更复杂的实际问题,需要更多的层次,更多的神经元,只有这样建模的能力才越强。但是这也造成了其缺点,我分为两点讲,这里分两点主要是根据缺点的解决方法来分的:

一、第一类问题问题

  1. 在深度学习的参数训练方法中,使用的是反向传播算法,其中有个步骤需要乘上“激活函数的导数”,由于激活函数的特性,会出现“激活函数导数的绝对值小于1”的情况,那么多次乘以这个值后,需要更新的参数中“权重的梯度”会变成0,那么运用梯度下降法的更新,会使得权重得不到有效的更新;(这一点可以看看反向传播算法的步骤就了解了);
  2. 有关实验证明,深度学习的层数增大,会使得训练误差和测试误差增大;
  3. 由于神经网络的损失函数一般不是凸函数(这个原因还没搞清楚),所以经常会陷入局部极小值的情况;
  4. 除了局部极小值,还会出现梯度为0,但是Hessian矩阵不定的数据点,所以连局部极小值都不是,这些点是鞍点。

那么这四个点是深度学习的不足之处,那么解决了嘛,那是肯定的,很多厉害的学者已经提出解决方案:

比如为了解决第1、2问题,使用了新的激活函数,或者采用LSTM、Res-net(残差网络)这些新的网络结构;针对3、4也有一些论文是针对解决的,这里就不列出来了。

二、第二类问题(其实我也不知道为什么要分两类问题)

在深度学习的使用中,我们肯定是想解决复杂的任务,比如说想训练出复杂的网络以便更好地建模、避免过拟合为了更好的泛化性。那么会需要用到除了正则话手段(比如L2、L1、dropout)外的一个重点的点:运用大规模的训练集来训练网络。自然会引起一个严重的问题:计算量的爆爆爆炸式增长。这就是为什么要用GPU了,因为GPU可以并行计算,适合大规模的矩阵和向量乘法和卷积运算(在其他的逻辑运算上没有CPU好),而且CPU主要是串行计算,所以优势就没那么大了。

个人对这些硬件设备了解也不多,所以不再深究。分成两类可能是因为第一类问题的解决是在软件上,而第二类问题的解决是用了硬件把哈哈。


这篇博客呢,是为了记录了解深度学习和浅层机器学习的区别,权当小记skr.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值