Deep learning系列(十五)有监督和无监督训练

2023-05-16

1. 前言

在学习深度学习的过程中,主要参考了四份资料:

  • 台湾大学的机器学习技法公开课;
  • Andrew NG的深度学习教程;
  • Li feifei的CNN教程;
  • caffe官网的教程;

对比过这几份资料,突然间产生一个困惑:台大和Andrew的教程中用了很大的篇幅介绍了无监督的自编码神经网络,但在Li feifei的教程和caffe的实现中几乎没有涉及。当时一直搞不清这种现象的原因,直到翻阅了深度学习的发展史之后,才稍微有了些眉目。

深度学习的发展大致分为这么几个时期:

  • 萌芽期。从BP算法的发明(1970s-1980s)到2006年期间。
  • 迅速发展期。从2006年栈式自编码器+BP微调提出之后。
  • 爆发期。2012年Hilton团队的Alexnet模型在imagenet竞赛取得惊人成绩之后。

2. 萌芽期

在Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述deep learning文章中提到,这段期间神经网络模型被主流的计算机视觉和学术界所抛弃。

这期间,学者们试图用有监督学习的方式训练深度神经网络,然而方法不是十分奏效,陷入了困境,在Andrew的教程中可以找到大概这几点原因:

  • 数据获取问题。有监督训练需要依赖于有标签的数据才能进行训练。然而有标签的数据通常是稀缺的,因此对于许多问题,很难获得足够多的样本来拟合一个复杂模型的参数。例如,考虑到深度网络具有强大的表达能力,在不充足的数据上进行训练将会导致过拟合。
  • 局部极值问题。使用监督学习方法来对浅层网络(只有一个隐藏层)进行训练通常能够使参数收敛到合理的范围内。但是当用这种方法来训练深度网络的时候,并不能取得很好的效果。特别的,使用监督学习方法训练神经网络时,通常会涉及到求解一个高度非凸的优化问题。对深度网络而言,这种非凸优化问题的搜索区域中充斥着大量“坏”的局部极值,因而使用梯度下降法(或者像共轭梯度下降法,L-BFGS等方法)效果并不好。
  • 梯度弥散问题。梯度下降法在使用随机初始化权重的深度网络上效果不好的技术原因是:梯度会变得非常小。具体而言,当使用反向传播方法计算导数的时候,随着网络的深度的增加,反向传播的梯度(从输出层到网络的最初几层)的幅度值会急剧地减小。结果就造成了整体的损失函数相对于最初几层的权重的导数非常小。这样,当使用梯度下降法的时候,最初几层的权重变化非常缓慢,以至于它们不能够从样本中进行有效的学习。这种问题通常被称为“梯度的弥散”。

因为一直没找到有效解决这些问题的方法,这期间,深度神经网络的发展一直不温不火。或者说在2001年Hochreiter的Gradient flow in recurrent nets: the difficulty of learning long-term dependencies(好像是这篇)提出了神经网络存在的几个问题后,在接下来的几年内神经网络的发展陷入了低谷。而那几年流行的机器学习算法是SVM和集成模型(随机森林、adaboost等),如下图所示。

3. 迅速发展期

06年Hilton在nature上发表了一篇文章Reducing the dimensionality of data with neural networks,针对上面提到的三个深度学习问题,提出了栈式自编码器+BP微调的解决方案。在一定程度上解决了上面的三个问题:

  • 栈式自编码神经网络是无监督学习算法。因而不需要规模很大的有标签样本。
  • 经过自编码神经网络训练后的参数已经落在一个较优的位置上,从这个位置开始BP微调,不用担心局部极值问题。
  • 自编码神经网络训练已经使深度网络的前几层参数具有表达能力了,比如可以提取出图片的边,局部组建等,即使有梯度弥散问题,前几层参数不再更新,也不会影响最终深度网络的表达能力。

因为上面的原因,在经历01年神经网络的低谷后,深度学习开启的崭新的浪潮,走上了发展的快车道,从上图的红线可以明显的看出。

4. 爆发期

在12年的ILSVRC竞赛中,Hilton团队的Alexnet模型Imagenet classification with deep convolutional neural networks将1000类分类的top-5误差率降低到了15.3%,碾压了第二名使用SVM算法的26.2%,开启了深度学习的革命,从此之后,深度学习走上了指数式的发展道路。在15年CVPR的文章中,我关注的两个方向场景语义标注和显著物体检测,有相当大比例的文章中涉及CNN或者deep的字眼,估计明年CVPR文章中深度学习的比例会更高。工业界的火爆就不用多提了,从Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头到颜水成、li feifei这样的视觉方向大牛都被挖到互联网公司就可见一斑。

回到Hilton团队的Alexnet模型上,仅仅使用了有监督的训练,貌似没涉及无监督的预训练。不是在之前说有监督的深度学习训练存在很多问题吗,大概是因为这几条原因,导致了有监督训练的可行:

  • 大规模标注数据的出现。在ILSVRC使用的数据集包括120万的训练图片,5万张验证图片和15万张测试图片。这些图片都是有标注的(属于1000类),而在imagenet出现之前,这样规模的标注数据是不存在的。
  • 对于局部极值的问题,nature综述中,三个大牛作者的说法是:对于深度网络来说,局部极值从来都不是一个问题,从任意的初始参数值开始训练网络,最后都能达到相似的分类效果。这也是被最近的理论和实践所证明的。
  • 对于梯度弥散导致的收敛速度慢问题。Alexnet模型的两大利器:ReLU激活函数和GPU并行加速。前者使SGD有6倍的加速,后者使用两块GTX580GPU也极大的加快了SGD的收敛速度,两者效果相乘,使得无监督预训练几乎是多余的了,梯度弥散问题也不再是一个很大的问题。

5. 总结

从上面介绍可以看出,Andrew NG的教程是06年到12年之间的产物,当时无监督训练是主流,Li feifei的CNN教程和caffe官网的教程是产生于12年之后,这时数据库足够大(上千万级别),模型足够先进(ReLU激活函数,dropout等等),同时计算速度足够快(GPU加速),使得无监督预训练(自编码神经网络)在很多应用场景中失去了存在的价值,有监督训练已足够完成任务。

一句话总结,06年的无监督预训练开启了深度学习的纪元,在之后深度学习快速发展的过程中,大数据的获得、计算机硬件的发展以及深度模型的升级使得有监督训练重新走上舞台,无监督预训练也算是完成了历史使命。

那预训练还有用吗?答案是肯定的,比如我们有一个分类任务,数据库很小,这时还是需要通过预训练来避免深度模型的过拟合问题的,只不过预训练是通过在一个大的数据库上(比如imagenet),通过有监督的训练来完成的。这种有监督预训练加小的数据库上微调的模式称为Transfer learning,在Li feifei的CNN教程和caffe官网的教程中都有详细的介绍。

除此之外,Andrew NG的教程也有其它几点常用于12年之前但现在很少用的细节,比如这个教程中介绍的激活函数是sigmoid,现在很少见了,几乎被ReLU激活函数取代,优化算法用的是L-BFGS,现在的优化算法主流是SGD+momentum。这些教程之间的不同点在当时学习之初是很困惑的,直到明白了深度学习的发展历程,才渐渐了解这些不同的来源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Deep learning系列(十五)有监督和无监督训练 的相关文章

随机推荐

  • automl中如何提升搜索效率

    前言 automl 简单来说 xff0c 就是将机器学习应用于现实问题的端到端流程自动化的过程 xff0c 其产生的主要原因就是因为机器学习的应用需要大量的人工干预 xff0c 这些人工干预表现在 xff1a 特征分析 模型选择 参数调节等
  • Linux操作系统下搭建VNC远程控制软件详尽教程

    摘自 xff1a http os 51cto com art 200802 65589 htm VNC简介 xff1a 虽然VNC 还有着在Linux下无法按热键呼出中文输入等等小小不足 xff0c 但仍然无法阻止其在Linux系统中的地位
  • automl工具入门介绍

    前言 自动化机器学习已经被广泛应用于各种 跨 业务场景的模型构建 xff0c 实验以及生产部署当中 automl领域中有各种各样的开源项目可以直接使用 xff0c 本篇文章尝试对一些主流的开源框架进行介绍 autogluon hypergb
  • Ensemble算法之GreedyEnsemble

    前言 我们常说三个臭皮匠顶个诸葛亮 xff0c 在机器学习领域中将这个理念应用到极致的技术是boosting xff0c 将N多的弱分类器组合到一起 xff0c 达到一个强分类器的效果 xff0c 主流代表的算法就是xgboost xff0
  • Hadoop URL数据读取操作

    hadoop可以从命令行上使用hadoop fs command 来读取文件系统中的文件 同时也可以使用java接口来实现这些功能 刚写好了一个权威指南上的例子 xff0c 附上代码 xff1a package baseOperation
  • ubuntu更改默认启动项顺序

    ubuntu更改默认启动项顺序 因为经常需要在ubuntu下调试openstack代码 xff0c 在windows下用虚拟机又会严重影响使用性能 xff0c 所以干脆将笔记本装了windows 43 ubuntu双系统 xff0c 曾多次
  • tensorflow学习笔记(十九):分布式Tensorflow

    最近在学习怎么分布式Tensorflow训练深度学习模型 看官网教程看的云里雾里 最终结合着其它资料 终于对分布式Tensorflow有了些初步了解 gRPC google remote procedure call 分布式Tensorfl
  • gcc安装教程(windows版本)

    windows下的gcc有两个版本mingw和cygwin xff0c 二选一就好 已学会C 43 43 xff0c 做工程 xff0c 建议用mingw 用cygwin编译后的二进制码在别人机器上用不了 xff0c 因为其他人的机器没有c
  • 华为以太网链路聚合Eth-Trunk实验

    链路聚合Eth Trunk 什么是链路聚合 xff1f 原理基本术语聚合模式负载分担的逐流转发和逐包转发负载分担的延伸链路聚合实验一 手工聚合链路聚合实验二 LACP STATIC聚合链路聚合实验的疑问思考补充 xff0c 三层Eth Tr
  • 关于Linux 下的错误路由产生火星包的问题

    关于linux下的错误路由产生火星包的问题 错误原理 linux 下的route表 xff0c 不仅负责包的转发路径选择 xff0c 还负责检验包的来源的合理性 xff0c 比如 ip r default via 10 0 2 2 dev
  • 配置SSH的对等性

    在所有节点配置SSH的对等性 在安装Oracle Real Application clusters之前 必须先配置所有节点的SSH对等性 因为在安装过程种Oracle Universal Installer 使用ssh和scp命令执行远程
  • apt-get下载安装本地包

    一 使用场景 xff1a Ubuntu系统 1 Computer A不能上网 xff0c 需通过Computer B将安装包下载后 xff0c 拷贝给Computer A进行本地安装 前提是 xff0c 2台机器上的操作系统环境相同 2 也
  • sklearn专题六:聚类算法K-Means

    目录 1 概述 1 1 无监督学习与聚类算法 1 2 sklearn中的聚类算法 2 KMeans 2 1 KMeans是如何工作的 2 2 簇内误差平方和的定义和解惑 2 3 KMeans算法的时间复杂度 3 sklearn cluste
  • 查找某个导师(博导、硕导)所带学生的学位论文的步骤

    怎么查找某个导师 xff08 博导 硕导 xff09 所带学生的学位论文呢 xff1f 一般经过这几个步骤就能找到 xff1a 第一步 xff1a 在浏览器中输入网址https www cnki net xff0c 进入中国知网 第二步 x
  • 我的三色2016

    2016年于我来讲是无疑是迄今为止最为多彩与丰富的一年 xff0c 在这一年里我完成了从象牙塔到职场的过渡 xff0c 经历过迷茫 xff0c 遭受过歧视 xff0c 遇到过挑战 xff0c 好在上帝虽然关闭了所有的门却为我 打开了一道窗
  • 图像处理之Haar特征

    Haar like 特征是计算机视觉领域一种常用的特征描述算子 也称为 Haar 特征 xff0c 这是因为 Haar like 是受到一维 haar 小波的启示而发明的 所以称为类 Haar 特征 xff0c 后来又将 Haar like
  • 任意大小汉字点阵字库(字模)的制作与生成 单片机GUI/STemwin

    1 首先介绍一下汉字点阵在汉字库中的地址计算公式 xff1a 汉字库种类繁多 xff0c 但都是按照 区位的顺序 排列的 前一个字节为该汉字的区号 xff0c 后一个字节为该字的位号 每一个区记录94个汉字 xff0c 位号则为该字在该区中
  • ubuntu下ifconfig找不到命令,packege ‘net-tools‘ has no installation candidate

    PS xff1a 首先要将网络适配器设置为NAT模式 刚用虚拟机安装完ubuntu后 xff0c 实用ifconfig提示找不到命令 xff1a 用sudo apt install net tools也提示错误 xff1a Package
  • caffe+opencv linux安装

    有gpu http blog csdn net leijiezhang article details 53688157 仅CPU http blog csdn net u010402483 article details 51506616
  • Deep learning系列(十五)有监督和无监督训练

    1 前言 在学习深度学习的过程中 xff0c 主要参考了四份资料 xff1a 台湾大学的机器学习技法公开课 xff1b Andrew NG的深度学习教程 xff1b Li feifei的CNN教程 xff1b caffe官网的教程 xff1