学习深度神经网络,竟有如此简单的入门方法
深度神经网络(DNNs)是拥有多层感知器的架构,用来解决复杂的学习问题。然而,DNNs在训练和概括中面临挑战。传统的DNNs互联的大量数据可能会过拟合,需要不同的训练方法来提高泛化。神经网络权重的前训练(pretrain …
深度神经网络(DNNs)是拥有多层感知器的架构,用来解决复杂的学习问题。然而,DNNs在训练和概括中面临挑战。传统的DNNs互联的大量数据可能会过拟合,需要不同的训练方法来提高泛化。神经网络权重的前训练(pretrain)和神经网络新品种旨在克服这些问题。尤其是卷神经网络,被设计用于处理图像,通过最小化可训练的重量并提供强大的泛化能力。这些网络在多个领域复杂的学习任务中表现出良好的势头。
深神经网络(DNN)由辛顿等人定义为“一个前馈人工神经网络,其包含不止一个隐藏单位的隐藏层”。DNN有许多处理层,可用于学习多层的抽象数据的表示。生产非线性模块获得的不同层,用于将表示层从单层表示转换为更抽象的层表示。通过使用这些层、用于分类的数据的特征增强,而无关的特征被抑制。深卷积网和递归网络也属于DNN,使用它们的算法在处理文本,图片,视频,语音和音频等方面带来了突破。
起初,DNNs在1990年代的主要缺点是其计算能力有限。此外,由于受到早期有限大小数据集的限制,DNNs需要大量的培训模式才能达到良好的解决方案。这些问题导致了DNNs一开始并不受欢迎。
彼时,尚有很多其他竞争的模型,如Hidden Markov模型和支持向量机(Support Vector Machine)。尽管DNNs实现了和上述模型类似或更好的结果(取决于任务),但是它们更难训练。随机初始化没有得到一个很好的结果,而且使用者必须是专家,有着足够领域知识以进行手工提取。此外,他们缺乏训练使用未标记数据的能力,这是个头疼的问题,因为我们能接触到的大量现实世界的数据都是未标记的。
对那些有多隐藏层的学习网络而言,单独的反向传播(backpropogation,BP)并不能在实践中很好的工作,因为会遭遇到问题,如梯度消失和维数灾难。
维数灾难是指随着输入神经元数目的增加,输入值的数目的指数增加。没有更大的指数数据集来保持,大部分可能的组合是0,并且网络面临着训练稀疏数据。随着隐藏层总数的增加,学习时间将无法衡量。使用反向传播的其他问题还包括训练集的过度拟合和局部极小的问题。
DNNs有许多参数,非常强大,但容易过度拟合。过度拟合通常发生在模型非常复杂,有太多输入参数,相较于输出参数或观测次数或稀疏数据集的情况。该模型不能概括新模式,因为训练参数要和训练集匹配。提出过拟合解决方案的是Srivastava和其他一些人,被称为“dropout”。 这种技术的核心思想是把单位连同他们的连接随机弃用,防止单位形成过度依赖。
Hochreiter所示,算法依赖于一个完整的计算梯度,它会渐渐消失,最终在执行backpropogation的时候完全消失。变化率是由误差函数的导数计算的。从导数的链规则来看,梯度较低的层的会变得越来越小,最终重量太小,不足以作出重大调整。对此问题的解决方案之一是基于一种新梯度的方法,称为长短期记忆,由Sepp Hochreiter和J¨urgen Schmidhuber提出,能够记住较长时间的错误值。
基于参数随机初始化梯度优化方法如随机梯度下降法,DNNs有较高可能结束在一个局部最小值。网络会导致一个很差的局部最小值,如果参数不能智能初始化,这种情况将随着网络深度的增加而更为普遍。在误差空间局部最小值是次优的解决方案。在深度网络有许多隐藏层,有大量的局部最小值。除非权重在训练一开始就已经在全局最小值的区域,结果可能会陷入局部最小值不佳。
尽管由于表现不佳和数据集小DNNs最初不受欢迎,它最终投入广泛地使用。在2000年代末有一个指数级增长的无标号数据集。有一个需要使用更多的无监督方法,由辛顿和其他促进当深刻的信念网络(DBNs)。这是第一款的重大突破。关键的想法是使用“训练的” 而不必手工为了学习功能。这个改进使DNNs有更容易的自动学习功能。下一个重大事件是快速图形处理单元的出现,使得网络训练速度快10倍以上。很多使用DNNs创建的模型优于其他现有的模型。另一个突破是使用卷积网络的分类ImageNet数据库。DNNs的人气大增,被采用在计算机视觉和图像处理等各种领域,鼓励更多的研究人员探索DNNs和深度学习。
相关文章
- onlyoffice安装方法 http://k.sina.com.cn/article_1823348853_6cae1875020017v94.html
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- (《机器学习》完整版系列)第2章 模型评估与选择 ——2.7 (实战)具体的性能检验方法
- Google Earth Engine——GEE中主要监督分类方法介绍
- wkhtmltopdf参数详解及精讲使用方法
- 基于相空间重构的混沌背景下微弱信号检测方法仿真
- PostgreSQL 关闭session链接,删除数据库方法(转载)
- CSDN日报20170305——《谈谈学习方法》
- 什么是主动学习方法
- 《机器学习与数据科学(基于R的统计学习方法)》——2.11 R中的SQL等价表述
- 《机器学习与数据科学(基于R的统计学习方法)》——2.12 读取Twitter数据
- C++常用方法笔记资料
- iOS学习之Object-C语言继承和初始化方法
- DRF 3.x View and API 视图和API应用使用示例和配置方法
- Java学习-060-Springboot - 找不到或无法加载主类 com.fanfengping.FanfengpingNfsApplication 解决方法之一:JDK环境
- Dynamic CRM 2013学习笔记(二十七)无代码 复制/克隆方法
- 知识图谱入门学习笔记(四)-知识抽取之问题和方法
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- 华为云存储服务分享文件的方法
- 为什么你知道了学霸的学习方法分享还是不能够像学霸一样优秀
- scala编程第16章学习笔记(3)——List类的高阶方法
- Android学习之Menu显示图标,同时不覆盖ToolBar的方法
- pytest新版本(5.3.2)中收集测试方法规则不支持以test结尾的方法
- 常用数学符号及表达式的 LaTeX 表示方法