你理解了梯度下降在二维直角坐标系的神奇现象吗?

简介: 最近在学习梯度下降的知识,可是怎么也跳不出对公式的理解。这是怎么回事呢?我们先来看看这个公式:

最近在学习梯度下降的知识,可是怎么也跳不出对公式的理解。

这是怎么回事呢?

我们先来看看这个公式:

ω:=ωαωj(ω,b)

从公式上直观理解,就是对ω \omegaω一直更新,∂ j ( ω , b ) ∂ ω \frac{\partial j(\omega,b)}{\partial \omega}

∂ω

∂j(ω,b)

是对ω \omegaω的偏导,是每次ω \omegaω走的长度,α是学习率,用来控制步长。


这就是梯度下降的公式,为什么这么减,很多很多的教程都告诉我们,因为梯度是变化率最大的方向,朝这个方向走,那么就能更快的到达最小值,这里我们就不过多讨论为什么了。


然后他们举三维的山脉例子,这种例子是可以理解的。


但是当你尝试用公式结合二维例子去理解,就会十分难受,不知道是否有人也是这样的疑惑看到我这篇博客,希望我的理解能够帮到你。

c26af859bda3e0fe3a86b80936bf6f1b.jpg

看到这个例子,你是否有以下疑惑:


首先公式会变成ω : = ω − α d j ( ω ) d ω \omega:=\omega-α\frac{d j(\omega)}{d \omega}ω:=ω−α

dj(ω)


在二维坐标系里,对ω \omegaω求导,梯度方向是切线方向,梯度大小是斜率大小。(实际上这种情况已经不能称为梯度了!)

那么梯度下降的话应该沿着切线方向

可是你细看这图,这橙色的线根本就不是切线方向,你也不要说这是放大效果,细想什么是切线,怎么样都和函数是只有一个交点的。

问题就出在这:从梯度的概念来看,梯度方向就是切线的方向,这样这不就和图冲突了吗?


如果是这样想,那么恭喜你入坑了!


首先,你需要理解一个概念,那么就是斜率是没有方向的,是一个标量,而梯度它的确是一个向量,有方向,我们所画的切线,会有人告诉你从上往下画和从下往上画是不一样的吗???


是吧,斜率是标量,但它有正负,这个符号只是代表正负,这个正负怎么来的,如上图所示,它与x轴正方向呈钝角,因此是负的。


当你理解好斜率是标量之后,我们再接着看。


因此,在二维下,怎么理解梯度下降?


Google的例子就很好,

d8b0531ad018303cd8372114fc0d6c2e.png

发现没有,Google的例子和其他人不一样的是,他的箭头是与x水平的。


因此,我们怎么理解呢?


梯度是变化率最大的方向,这从三维的图像来说,你从一点做切线,它的确有不止一个交点,从这方向走到最近的一个交点,就完成了一次的梯度下降。


对于二维坐标来说,切线的交点只有一个,梯度的大小是斜率,但方向不是切线的方向了,我们移动的方向只有x轴正,x轴负,因此移动的方向就是水平的。我们做了切线,只是告诉我们,切线与移动的方向总是呈钝角,这样的角能够让我们找到最小值。带着这个想法再去理解二维下的梯度下降公式,你是不是觉得舒服许多了呢?


目录
相关文章
|
算法 安全 网络安全
数据结构之网络攻击路径(深度优先搜索)
本文介绍了如何使用深度优先搜索(DFS)算法分析网络攻击路径。在网络安全领域,DFS用于检测网络中潜在的攻击路径,帮助安全人员及时发现并阻止威胁。文中详细描述了网络图的构建、节点间的连接关系以及DFS的实现过程。通过一个具体的例子,展示了如何检测从一个普通节点到关键节点的攻击路径,并讨论了DFS算法的优缺点。提供的C++代码实现了网络图的构建和攻击路径的检测功能。
252 24
|
3月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
870 10
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB资源隔离技术:在多租户环境中的应用与优化
【5月更文挑战第29天】PolarDB,阿里云的云原生数据库,在多租户环境中通过逻辑(Schema/Partition隔离)和物理(分布式存储计算节点)隔离保障数据安全和资源独占。它支持动态资源分配,适应不同租户需求,处理大规模并发,提供租户管理及数据访问控制功能。通过优化资源分配算法、提升事务处理能力和强化监控告警,PolarDB确保性能和稳定性,满足多租户的高效数据库服务需求。
460 1
|
缓存 监控 网络协议
计算机网络的常用的网络通信命令(Windows)
本文介绍了网络技术中常用的命令,如ping用于检测网络连通性,ipconfig查看TCP/IP配置,netstat监控网络状态,arp显示和修改ARP缓存,at安排任务执行,tracert追踪路由,以及nbtstat获取NetBIOS信息。
263 1
|
8月前
|
人工智能 编解码 API
刚刚,通义万相模型能力重磅升级!
刚刚,通义万相模型能力重磅升级!
|
安全 搜索推荐 机器学习/深度学习
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】在人工智能的推动下,个性化学习系统逐渐成为教育领域的重要趋势。深度学习作为AI的核心技术,在构建个性化学习系统中发挥关键作用。本文探讨了深度学习在个性化推荐系统、智能辅导系统和学习行为分析中的应用,并提供了代码示例,展示了如何使用Keras构建模型预测学生对课程的兴趣。尽管面临数据隐私和模型可解释性等挑战,深度学习仍有望为教育带来更个性化和高效的学习体验。
638 0
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
1187 1
|
消息中间件 Kafka 测试技术
Kafka常用命令大全及kafka-console-consumer.sh及参数说明
该文章汇总了Kafka常用命令,包括集群管理、Topic操作、生产者与消费者的命令行工具使用方法等,适用于Kafka的日常运维和开发需求。
4004 3
|
存储 Java 关系型数据库
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
2401 0
基于Java和MySQL实现的大学生学籍管理系统(毕业设计附完整项目代码)
|
存储
数字逻辑与模拟电子技术-部分知识点(4)——数电部分-组合电路的一般分析和设计方法、三人和四人表决器的设计、SR触发器、D触发器、JK触发器
数字逻辑与模拟电子技术-部分知识点(4)——数电部分-组合电路的一般分析和设计方法、三人和四人表决器的设计、SR触发器、D触发器、JK触发器
423 0