热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

梯度下降_梯度下降

篇首语:本文由编程笔记#小编为大家整理,主要介绍了梯度下降相关的知识,希望对你有一定的参考价值。梯度下降:应用最

篇首语:本文由编程笔记#小编为大家整理,主要介绍了梯度下降相关的知识,希望对你有一定的参考价值。



梯度下降:应用最广泛的求极小值算法。

假设一线性回归模型,它的代价函数为 J(θ01) 。我们的目标是最小化这个代价函数,而要得到最小的代价函数值关键就在于正确选取 θ0和θ1的值,于是我们引出梯度下降算法。

步骤:1. 初始化θ0和θ1的值,通常取0。

   2. 不断改变θ0和θ1的值,试图通过这种改变使得 J(θ01) 变小,直到找到 J(θ01) 的最小值(也可能是局部最小值)。

 


将上述步骤可视化

技术图片技术图片

 

 

左图中,我们初始化θ0和θ1的值得到第一个 J(θ01) 点 ,在左边红色区域。假设红色区域都是一个个小山峰,我们处于第一个点的位置,现在目标是用小碎步尽快下山,环顾四周后我们可以找到下一个点,注意是下降最快的方向(坡度最陡),以此方法一直下降,知道下降到深蓝色区域里的局部最低点。

右图中亦是如此,只是θ0和θ1的初始值不同,导致第一个J(θ01) 点 不同,下降速度最快的方向也不一样,因此到达的最低点也不同。

 


公式

 

技术图片

式子中,:= 符号是赋值运算符,表示把符号后面的值赋予给符号后面的值,α 表示学习率,以下山的例子就是步子的大小,α 越大,下山时步子迈得就越大,下降速度越快。

 

技术图片

在梯度下降中,我们使用公式更新 θ和 θ的值,在更新时,我们应当同时更新 θ和 θ的值。

 

技术图片

如果不同时更新,如上图,前一个更新后的 θ会影响到 temp1 的导数项技术图片,继而影响更新θ

 

 

为了更容易理解梯度下降过程,我们假定 hθ(x) = θ1x, 代价函数为 J(θ1) ,可以得到 J(θ1) 与 θ关系图如下

技术图片

 

梯度下降过程即:

首先选取 θ1 的值,得到对应的 J(θ1) ,标记在上图中红点位置处。现以红点作切线(上图中红色实线),此时切线的斜率即公式中的导数项,切线斜率再与学习率 α (正数)相乘  ,最后用θ1减去它们相乘后的值,计算出的值即第一次更新后的θ(向左移动),此时也可以发现对应的 J(θ1) 位置会往左边移动,直到运动到最小值(局部最小值)。移动速度跟学习率 α 有关,如果 α 过大,每次移动也会跳跃得越大,很容易越过最小值,无法收敛,甚至发散。而事实上,在梯度下降过程中,学习率 α 会自动调整,越靠近最小值, α 会越小,移动越慢。

如果初始化 θ后,得到对应的 J(θ1) 本身就处在最小值位置,再使用梯度下降算法, θ1 将不会更新,因为此时导数项为0,J(θ1) 也不会发生变化。

 


推荐阅读
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 深入理解Git与GitHub:分支管理与冲突解决
    本文详细探讨了Git中的分支管理技术,包括如何创建、切换和合并分支,以及如何有效解决分支合并时可能遇到的冲突。同时,文章还介绍了Git的基本原理,如哈希算法的应用和文件管理机制。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 如何在Eclipse中调整Tomcat启动超时设置
    本文详细介绍了在Eclipse开发环境中,如何有效地调整Tomcat服务器的启动超时时间,以解决长时间启动导致的问题。 ... [详细]
  • 本章节深入讨论了线性光与感知均匀性的概念,强调了灰度图像中每个像素值如何反映视觉亮度的主观性质。文章进一步解析了亮度与光强度、辐射等物理量的区别,并探讨了这些概念在数字图像处理中的应用。 ... [详细]
  • 本文探讨了如何通过积累团队管理经验、促进团队成员的学习成长、建立公正的绩效考核体系以及明确奖惩机制来提升团队的整体效能。同时,文章还强调了领导者应具备的关键能力和如何通过团队成员的表现来评估领导者的管理水平。 ... [详细]
  • 多用户密码验证与加密登录系统
    本文介绍了一种基于多用户密码文件的加密登录方法,通过读取用户密码文件并使用简单的加密算法实现安全登录。文中详细描述了程序的设计思路及其实现过程。 ... [详细]
  • 本文通过一个经典问题——使用最少的老鼠在限定时间内找出含有毒药的瓶子,深入探讨了二分法的应用及其背后的逻辑原理。不仅展示了二分法在非传统排序问题中的有效应用,还扩展讨论了三分法的可能性与限制。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • 有向无环图(DAG)的两种拓扑排序方法详解
    本文介绍了有向无环图(DAG)的两种拓扑排序方法。第一种方法通过不断移除没有前驱的顶点来实现排序;第二种方法则利用深度优先搜索(DFS),记录每个节点的首次和最后访问时间,最终根据这些时间的逆序得到拓扑排序结果。 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 深入解析链表成环问题:剑指Offer第22天的新视角
    本文将详细介绍链表成环问题的多种解法,包括哈希表法、JSON.stringify特殊解法及双指针法,并提供详尽的代码示例。阅读本文,你不仅能够掌握这一经典算法问题的核心技巧,还能了解到更多编程思维的拓展。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
author-avatar
峰吹云飞_974
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有