深度学习为何起作用——关键解析和鞍点

2023-12-13 10:38

本文主要是介绍深度学习为何起作用——关键解析和鞍点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对深度学习,包括分布式表示,深度架构和易避免鞍点的理论驱动力的讨论。

 

这篇文章总结了Rinu Boney最近一篇博客的关键点,基于今年蒙特利尔深度学习暑期学校上Yoshua Bengio的讲座,讲座是关于深度学习理论驱动力的讨论。

 

“为了局部泛化,我们需要所有相关变化的典型范例。”

 

深度学习是学习多层次的表示,相当于是多层次的抽象。如果我们能够学习这些多层次的表示,那么我们可以很好地对其泛化。

 

在上述(释义)总领全文陈述之后,作者提出了一些不同的人工智能(AI)策略,从以规则为基础的系统到深度学习系统,并指出在哪个层次它们的组件能够起作用。之后,他给出了从机器学习(ML)向真正人工智能迁移的3个关键点:大量数据,非常灵活的模型,强大的先验,而且,因为经典ML可以处理前两个关键点,所以他的博客是关于如果处理第三个关键点的。

 

在从如今的机器学习系统迈向人工智能的道路上,我们需要学习,泛化,避免维度灾难的方法,以及解决潜在解释因素的能力。在解释为什么非参数学习算法不能实现真正的人工智能之前,他首先对非参数下了详细的定义。他解释了为什么以平滑作为经典的非参数方法在高维度下不起作用,之后对维度做了如下解释:

 

“如果我们在数学上更深入地挖掘,我们学习到的是函数变种的数量,而不是维度的数量。在这种情况下,平滑度就是曲线中有多少上升和下降。”

 

“一条直线是非常平滑的。一条有升有降的曲线没那么平滑,但还是平滑的。”

 

所以,很显然,单独使用平滑度并不能避免维度灾难。事实上,平滑度甚至不适用与现代的,复杂的问题,比如计算机视觉和自然语言处理。在讨论完这种有竞争力的方法(如高斯核)的失败后,Boney将目光从平滑度上转移,并解释了它的必要性:

 

“我们想要达到非参数,在这个意义上,我们希望随着数据的增多所有函数能灵活地扩展。在神经网络中,我们根据数据量来改变隐藏单元的个数。”

 

他指出,在深度学习之中,使用了2个先验,即分布式表示和深度架构。

 

为什么使用分布式表示?

 

“使用分布式表示,可以用线性参数来表示指数数量的区域。分布式表示的奇妙之处在于可以使用较少的实例来学习非常复杂的函数(有很多上升和下降的曲线)。”

 

在分布式表示中,特征的意义是单独而言的,无论其他特征如何都不会改变。它们之间或许会有些互动,但是大多特征都是独立于其他特征学习得到的。Boney指出,神经网络非常善于学习表示来捕捉语义方面的东西,它们的泛化能力来源自这些表示。作为本主题的应用实例,他推荐Cristopher Olah的文章,来获取关于分布式表示和自然语言处理的知识。

 

对于深度的含义有许多误解

 

“更深的网络并不意味着有更高的生产力。更深并不意味着我们能表示更多的函数。如果我们正在尝试学习的函数有特定的特征,这些特征由许多操作的部分组成,那么使用深度神经网络来逼近这些函数可以得到更好的效果。”

 

之后Boney又回到原话题。他解释说,90年代后期神经网络研究被搁置(再次)的一个原因是优化问题是非凸的。80和90年代的工作成果中,神经网络在局部最小化中得到了一个指数值,同时还有内核机器的诞生,导致了神经网络的衰败,网络可能会由于不好的解决方案而失效。最近,我们有证据证明非凸问题可能不是个问题,这改变了它与神经网络的关系。

 

“上图展示了一个鞍点。在全局或局部最小区域,所有方向都上升,在全局或局部最大区域,所有方向都下降。”

 

鞍点

 

“我们来考虑低维度和高维度下的优化问题。在低维度中,确实存在许多局部最小。但是在高维度情况下,局部最小并不是临界点,也就是对全局来说不是关键点。当我们优化神经网络或任何高维度函数的时候,对于我们大多数优化的轨迹,临界点(点的导数是0或接近0)都是鞍点。鞍点,不像局部最小,很容易退避。”

 

关于鞍点的直觉是,对于靠近全局最小的局部最小,所有方向都应该是上升的;进一步下降可能性极小。局部最小存在,但是对于目标函数而言,它非常接近全局最小,理论研究结果表明,一些大函数可能集中于指标(临界点)和目标函数之间。指标相当于是各个方向上,下降的方向占所有方向的比例;如果指标不是0或1(分别是局部最小和局部最大)的,那么它是一个鞍点。

 

Boney继续说道,已经有经验可以验证指标和目标函数之间的关系,而没有任何证据表明神经网络优化可以得到这些结果,一些证据表明,所观察到的行为可能只是理论结果。在实践中,随机梯度下降几乎总是避开不是局部最小的表面。

 

这一切都表明,事实上因为鞍点的存在,局部最小可能不是问题。

 

Boney继续他关于鞍点的讨论,提出了一些与深度分布式表示工作的其他先验;类人学习(human learning),半监督学习,多任务学习。然后他列出了一些关于鞍点的论文。

 

Rinu Boney写了篇文章详细阐述深度学习的驱动力,包括对鞍点的讨论,所有的这些都很难通过简单的引用和总结来公正说明。如果想对以上讨论点进行更深的讨论,访问Boney的博客,自己读读这些具有洞察力和良好构思的文章吧。

END

碧茂课堂精彩课程推荐:

1.Cloudera数据分析课;

2.Spark和Hadoop开发员培训;

3.大数据机器学习之推荐系统;

4.Python数据分析与机器学习实战;

详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂

现在注册互动得海量学币,大量精品课程免费送!

这篇关于深度学习为何起作用——关键解析和鞍点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488152

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

SpringBoot 中 CommandLineRunner的作用示例详解

《SpringBoot中CommandLineRunner的作用示例详解》SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的... 目录1、CommandLineRunnerSpringBoot中CommandLineRunner的作用

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依