深度学习(Deep Learning)

1. 深度学习(Deep Learning)简介

  • deep learning是unsupervised feature learning,让机器自动学习良好的特征,而免去人工选取过程

2. 浅层学习和深度学习

2.1 浅层学习(Shallow Learning)

  • 常用模型:Boosting、最大熵方法(Logistics Regression)、SVM、BP网络

2.2 深度学习(Deep Learning)

  • Deep Learning本身算是Machine Learning的一个分支,简单可以理解为neutral network的发展

3. 深度学习和神经网络

3.1 深度学习和神经网络的联系

  • 深度学习的概念源于人工神经网络的研究。含有多隐层的多层感知器就是一种深度学习结构。深度学习通过组合底层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示
  • 深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络

3.2 传统神经网络的训练方法为什么不能用在深度神经网络

  • BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源
  • BP算法存在的问题
  1. 梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;
  2. 收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

4. Deep Learning的常用模型或者方法

  • AutoEncoder 自动编码器
    1. Sparse AutoEncoder 稀疏自动编码器
    2. Denoising AutoEncoders 降噪自动编码器
  • Sparse Coding 稀疏编码
  • Restricted Boltzmann Machine(RBM) 限制波尔兹曼机
  • Deep Belief Networks 深信度网络
  • Convolutional Neural Networks 卷积神经网络
  • RNN 递归神经网络

5 深度学习中关键技术

5.1 Data Augmentation数据增强

  • Data Augmentation数据增强:人工增加训练集的大小。通过平移、翻转、加噪声等方法从已有数据中创造出一批新数据

5.2 Regularization正则化

  • Regularization正则化:数据量比较小会导致模型过拟合,使得训练误差很小而测试误差很大。通过在Loss Function后面加上正则项可抑制过拟合的产生。缺点是引入了一个需要手动调整的hyper-parameter
  • 对于数据集数量有限的情况下,防止过拟合的一种方式就是降低模型的复杂度
  • 一种降低复杂度的方式就是在cost函数中加入正则化项,正则化项可以理解为复杂度,cost越小越好,但加入正则化项后,为了使cost小,就不能让正则化项变大,也就是不能让模型更复杂,就降低了模型复杂度,也就降低了过拟合。正则化有多种,常见的有L1和L2

    在神经网络中,正则化网络更倾向于小的权值,在权重小的情况下,数据随机的变化不会对神经网络的模型造成太大的影响,所以受数据局部噪音影响的可能性更小
  • 而未加入正则化的网络,权重大,容易通过较大的模型改变来适应数据,更容易学习到局部的噪音

5.3 Dropout

5.3.1 Dropout

  • Dropout:也是一种正则化手段,不过跟以上不同的是它通过随机将部分神经元的输出置零来实现
  • Dropout的目的也是用来减少overfitting(过拟合)
  • 和L1,L2 Regularization不同的是,Dropout不是针对cost函数,而是改变神经网络本身结构

5.3.2 Dropout基本思路

  1. 在开始,随机删除掉隐藏层一部分的神经元,如图虚线部分为开始时随即删除的神经元
  2. 然后,在删除后的剩下的神经元上正向和反向更新权重和偏向
  3. 再恢复之前删除的神经元,再重新随机删除 一半的神经元,进行正向和反向更新w和b
  4. 重复上述过程
  • 一般情况下,对于同一组训练数据,利用不同的神经网络训练之后,求其输出的平均值可以减少overfitting。Dropout利用该原理,每次丢掉一半的隐藏层神经元,相当于在不同的神经网络上进行训练,这样就减少了神经元之间的依赖性,即每个神经元不能依赖于某几个其他的神经元(指层与层之间相连的神经元)

5.4 Batch Normalization(批规范化)

  • Internal Covariate Shift(ICS):在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化。即参数的变化导致每一层的输入分布会发生变化,进而上层的网络需要不停地去适应这些分布变化,导致网络学习速度降低,使模型训练困难
  • BP算法反相传播式中有W的存在,所以W的大小影响了梯度变化,造成梯度消失或者爆炸,减缓网络收敛速度
    因此我们可以通过固定每一层网络输入值的分布来减缓问题

5.4.1 如何确定吗每一层网络输入值的分布




5.5 Transfer learning 迁移学习

  • 在实践中因为数据库大小的限制,我们通常不会从头开始(参数随机初始化)训练卷积神经网络。相反,通常会在一个大的数据库上(比如ImageNet,包含1000类总数为120万的图像分类数据库)进行CNN的训练,得到训练好的网络(下面简称ConvNet)
  • 然后ConvNet以下面两种方式用到我们的项目中:
    1. 将ConvNet作为特征提取器。去掉ConvNet最后一层全连接层,将ConvNet剩下的部分当作特征提取器用到我们的分类任务中。对于AlexNet来说,这将生成个4096维的特征向量,用这得到的特征向量,训练一个线性分类器(线性SVM或者softmax分类器),用在我们的分类任务中。
    2. 用新数据库的数据微调ConvNet。对于在ImageNet预训练的网络ConvNet,我们可以在新的数据库上使用反向传播算法微调它的权重参数。在微调过程中,既可以调整所有层的参数,也可以将前几层的参数固定,微调后面几层。这样做的原因在于预训练的网络前几层通常是通用的特征(比如边缘提取器),而网络的后几层则是与数据库和分类任务相关的,因而可以在给定新的数据库和分类任务时仅调整后面几层

5.6 Unsupervised Pre-learning

  • Unsupervised Pre-learning:用Auto-Encoding或者RBM的卷积形式一层一层地做无监督预训练,最后加上分类层做有监督地Fine-Tuning
  • fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型需要考虑的因素有许多,其中最重要的两条是新数据库的规模和它与预训练数据库的相似程度,根据这两条因素的不同配置,存在四种场景:
  1. 新数据库小,和预训练数据库相似。因为数据库比较小,fine-tune的话可能会产生过拟合,比较好的做法是用预训练的网络作为特征提取器,然后训练线性分类器用在新的任务上。
  2. 新数据库比较大,和预训练数据库相似。这种情况下,不用担心过拟合,可以放心地微调整个网络。
  3. 新数据库小,和预训练数据库不相似。这时,既不能微调,用预训练网络去掉最后一层作为特征提取器也不合适,可行的方案是用预训练网络的前面几层的激活值作为特征,然后训练线性分类器
  4. 数据库大,和预训练数据库不相似。这时可以从头开始训练,也可以在预训练的基础上进行微调。

Deep Learning(深度学习)学习笔记整理系列之(四)

posted @ 2024-11-11 10:41  awei040519  阅读(181)  评论(0)    收藏  举报