为什么梯度反方向是函数下降最快的方向

转载自  为什么梯度反方向是函数下降最快的方向

为什么梯度反方向是函数下降最快的方向?

刚接触梯度下降这个概念的时候,是在学习机器学习算法的时候,很多训练算法用的就是梯度下降,然后资料和老师们也说朝着梯度的反方向变动,函数值下降最快,但是究其原因的时候,很多人都表达不清楚。所以我整理出自己的理解,从方向导数这个角度把这个结论证明出来,让我们知其然也知其所以然~

下面我一开始不提梯度的概念,完全根据自己的理解进行下文的梳理,一步一步推出梯度的来历:

  • 导数

导数的几何意义可能很多人都比较熟悉: 当函数定义域和取值都在实数域中的时候,导数可以表示函数曲线上的切线斜率。 除了切线的斜率,导数还表示函数在该点的变化率

将上面的公式转化为下面图像为:

(来自维基百科)

直白的来说,导数代表了在自变量变化趋于无穷小的时候,函数值的变化与自变量变化的比值代表了导数,几何意义有该点的切线。物理意义有该时刻的(瞬时)变化率...

注意在一元函数中,只有一个自变量变动,也就是说只存在一个方向的变化率,这也就是为什么一元函数没有偏导数的原因。

 

  • 偏导数

既然谈到偏导数,那就至少涉及到两个自变量,以两个自变量为例,z=f(x,y) . 从导数到偏导数,也就是从曲线来到了曲面. 曲线上的一点,其切线只有一条。但是曲面的一点,切线有无数条。

而我们所说的偏导数就是指的是多元函数沿坐标轴的变化率.

指的是函数在y方向不变,函数值沿着x轴方向的变化率

指的是函数在x方向不变,函数值沿着y轴方向的变化率

对应的图像形象表达如下:

那么偏导数对应的几何意义是是什么呢?

  • 偏导数就是曲面被平面所截得的曲面在点处的切线对x轴的斜率

  • 偏导数就是曲面被平面所截得的曲面在点处的切线对y轴的斜率

可能到这里,读者就已经发现偏导数的局限性了,原来我们学到的偏导数指的是多元函数沿坐标轴的变化率,但是我们往往很多时候要考虑多元函数沿任意方向的变化率,那么就引出了方向导数.

 

  • 方向导数

终于引出我们的重头戏了,方向导数,下面我们慢慢来走进它

假设你站在山坡上,相知道山坡的坡度(倾斜度)

山坡图如下:

假设山坡表示为,你应该已经会做主要俩个方向的斜率.

y方向的斜率可以对y偏微分得到.

同样的,x方向的斜率也可以对x偏微分得到

那么我们可以使用这俩个偏微分来求出任何方向的斜率(类似于一个平面的所有向量可以用俩个基向量来表示一样)

现在我们有这个需求,想求出u方向的斜率怎么办.假设为一个曲面,定义域中一个点,单位向量的斜率,其中是此向量与x轴正向夹角.单位向量u可以表示对任何方向导数的方向.如下图:

那么我们来考虑如何求出u方向的斜率,可以类比于前面导数定义,得出如下:

 

为一个二元函数,为一个单位向量,如果下列的极限值存在

此方向导数记为

则称这个极限值是沿着u方向的方向导数,那么随着的不同,我们可以求出任意方向的方向导数.这也表明了方向导数的用处,是为了给我们考虑函数对任意方向的变化率.

在求方向导数的时候,除了用上面的定义法求之外,我们还可以用偏微分来简化我们的计算.

表达式是(至于为什么成立,很多资料有,不是这里讨论的重点)

那么一个平面上无数个方向,函数沿哪个方向变化率最大呢?

目前我不管梯度的事,我先把表达式写出来:

,

那么我们可以得到:

(α为向量与向量之间的夹角)

那么此时如果要取得最大值,也就是当为0度的时候,也就是向量I(这个方向是一直在变,在寻找一个函数变化最快的方向)与向量A(这个方向当点固定下来的时候,它就是固定的)平行的时候,方向导数最大.方向导数最大,也就是单位步伐,函数值朝这个反向变化最快.

好了,现在我们已经找到函数值下降最快的方向了,这个方向就是和向量相同的方向.那么此时我把A向量命名为梯度(当一个点确定后,梯度方向是确定的),也就是说明了为什么梯度方向是函数变化率最大的方向了!!!(因为本来就是把这个函数变化最大的方向命名为梯度)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaweb中实现分页,持续更新……

大家好,欢迎来到雄雄的小课堂,昨天分享了个分页工具类一个简单的分页工具类,其实,也是为今天的分享做的铺垫,今天,给大家带来的是javaweb实现分页的全过程!前言:为什么需要分页&…

Redis(入门)

文章目录一、 Redis简介二、 基于Docker安装Redis单机版三、 Redis常用命令1 Key操作2 字符串值(String)(值的长度不超过512MB)3 哈希表(Hash)4 列表(List)5 集合(Set)6 有序集合(Sorted Set)四、 Redis持久…

浅析神经网络为什么能够无限逼近任意连续函数

转载自 浅析神经网络为什么能够无限逼近任意连续函数 神经网络为什么能够无限逼近任意连续函数? 下面通过一个分类例子一步一步的引出为什么神经网络能够无限逼近任意函数这个观点,并且给出直观感觉! 我们首先有这个需求,需要将下面的数据…

前端模块化工具--webpack学习心得

话说前头 webpack前段时间有听说一下,现在已经到了3.x的版本,自己没去接触。因为之前使用gulp来作为自己的项目构建工具。现在感觉gulp使用的趋势在减少。现在这段时间去接触了webpack,感觉很不错,它的模块化打包机制&#xff0c…

基于.NET CORE微服务框架 -谈谈surging的服务容错降级

一、前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation 以方便国内.net core开源项目的推广,我果断接受邀请加入了队伍进行互相交流学习,最近也更新了surging新的…

java中部的分页实现(二)

大家好,欢迎来到雄雄的小课堂,昨天分享了关于分页查询的理论知识,今天我们就来结合代码和案例实际的应用一下,方便大家理解。前言:我们都知道,实现分页需要三个步骤。第一,确定页大小&#xff0…

SpringSecurity授权(访问控制)

一、 访问控制url匹配 在前面讲解了认证中所有常用配置,主要是对httpSecurity.formLogin()进行操作。而在配置类中httphttpSecurity.authorizeRequests()主要是对url进行控制,也就是我们所说的授权(访问控制)。httpSecurity.autho…

剥析surging的架构思想

1、前言 前面第一篇阐述了采用基于.NET CORE微服务架构,应用surging服务端与客户端之间进行通信的简单示例以及对于surging服务化框架简单介绍。在这篇文章中,我们将剥析surging的架构思想。 surging源码下载 2、通信机制 2.1 简介 在单体应用中&am…

javaweb实现分页(二)

前言:我们都知道,实现分页需要三个步骤。第一,确定页大小(每页显示的数据量)。第二,计算显示的总页数。第三,写分页的sql语句。这三步已经在昨天的推文中详细说明,需要的可以点击这里…

滴滴出行基于RocketMQ构建企业级消息队列服务的实践

转载自 滴滴出行基于RocketMQ构建企业级消息队列服务的实践 本文整理自滴滴出行消息队列负责人 江海挺 在Apache RocketMQ开发者沙龙北京站的分享。通过本文,您将了解到滴滴出行: 1. 在消息队列技术选型方面的思考; 2. 为什么选择 RocketMQ…

[信息安全] 1.密码工具箱

0. 何谓安全? 对于信息安全性的重要性,我想大家都不会否认。那么具体来说应该具有哪些特性才能称之为安全呢?举个简单的例子:我给你发送一条消息“借给我100元”,当你收到这条消息并且处理后你的账户里面会少出来100块…

深入理解TCP/IP协议-TCP建立与终止连接

转载自 深入理解TCP/IP协议-TCP建立与终止连接 一、引言 TCP 是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。连接创建与终止的状态变化图如下: 二、三次握手建立连接 过程如下: 客户端发送一个 SY…

在Docker中运行asp.net core 跨平台应用程序

概述 Docker已经热了有一两年了,而且我相信这不是一个昙花一现的技术,而是一个将深远影响我们日后开发和部署、运营应用系统的一种创新(很多人将其作为devops的一种非常重要的基石)。学习docker的最好方式,莫过于它的…

java中的Queue队列的用法

大家好,欢迎来到雄雄的小课堂,今天给大家分享的是“java中的Queue队列的用法” 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用的,殊不知,java中还有个Que…

SpringCloud Netflix Eureka

文章目录一、 Eureka简介Eureka组件二、 Eureka和Zookeeper 对比1 什么是CAP定理2 基于CAP定理比对Eureka和Zookeeper三、 搭建Eureka注册中心1 POM文件2 配置文件application.yml3 启动类4 访问Eureka Server WEB服务管理平台四、 Eureka 服务管理平台介绍1 Eureka Server服务…

使用枚举定义常量更好点儿

大家好,欢迎来到雄雄的小课堂,昨天给大家分享的是“java中的Queue队列的用法示例”,今天,分享的主题是“java中,推荐使用枚举定义常量”。 前言:常量,相信大家多不会陌生,常量值一般…

SpringCloud Netflix Ribbon

文章目录一、 Ribbon简介二、 使用Ribbon开发微服务1 创建springcloud工程 和 commons子模块2 开发服务提供者 - ribbonappservice3 开发服务消费者 - ribbonappclient三、 集中式与进程内负载均衡区别四、 Ribbon常见的负载均衡策略1 Ribbon中的常用负载均衡简介2 配置负载均衡…

Entity Framework Core 生成跟踪列

注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final)。正式版发布时,功能可能存在变动。 当您设计数据库时,有时需要添加列以跟踪记录何时更改,以及谁进行了更改。例如,您添加以下列: Cre…

老师,我们想看到您的笑容!

“老师,你可以对我们笑笑吗?”今天偶然遇见一位学生在吃饭的路上和我说道。我冲他点了点头,笑道:“好呀”!是啊,我是好久没有把笑声带回班级中了。1目前,4班都在倾尽全力的做项目,试…

阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设

转载自 阿里巴巴开源 Spring Cloud Alibaba,加码微服务生态建设 本周,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cloud Alibaba,并发布了首个预览版本。随后,Spring Cloud…