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

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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven