梯度下降(Gradient Descent)

2023-10-30

  • 基本思想
    梯度下降是一个用来求函数最小值的算法,本次,我们将使用梯度下降算法来求出代价函数在这里插入图片描述的最小值。
    梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
    在这里插入图片描述
    想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。
  • 公式
    批量梯度下降(batch gradient descent)算法的公式为(tip:α后面的内容是偏微分):
    在这里插入图片描述
    其中α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
    如果α太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。
    如果α太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。
    故此,α(学习率)要选的合适。
  • 总结
    这就是梯度下降算法,你可以用它来最小化任何代价函数,不只是线性回归中的代价函数。
    在接下来的内容中,我们要用代价函数,回到它的本质,线性回归中的代价函数。也就是我们前面得出的平方误差函数,结合梯度下降法,以及平方代价函数,我们会得出第一个机器学习算法,即线性回归算法。

参考内容:
机器学习-吴恩达
机器学习笔记

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

梯度下降(Gradient Descent) 的相关文章

  • C++学习(三八八)Doxygen

    Doxygen 是一个 C C Java Objective C Python IDL CORBA 和 Microsoft flavors Fortran VHDL PHP C 和D语言的文档生成器 可以运行在大多数类Unix系统 以及Ma
  • Java中,定时任务Timer使用缺陷

    缺陷主要有2点 1 管理并发任务的缺陷 timer有且仅有一个线程去执行定时任务 如果存在多个任务 且任务时间过长 会导致执行效果与预期不符 2 当任务抛出异常时的缺陷 如果TimerTask抛出RuntimeException Timer
  • Flutter Card踩坑经历

    Card包含的Column的Text文本显示居中 且设置textAlign TextAlign start无效 在Column添加属性 crossAxisAlignment CrossAxisAlignment start

随机推荐

  • Python的MySQL库,fetchone,fetchall,fetchmany的比较

    fetchone 返回一条记录 row 一维元组 如 小李 21 如果没有结果 则返回 None 再次调用fetchone 则继续返回下一条记录 直到为空 fetchmany 返回指定的前n条记录 二维元组 如fetchmany 3 获取前
  • JavaWeb项目运维部署

    一 项目部署介绍 Web项目网络拓扑图 部署目录介绍 项目目录 home projectName 启动文件目录 home projectName bin 后端项目 home projectName target Web前端资源 home p
  • HTML实现3D相册

    今天 我给大家分享一个3D相册的代码 废话不说先上效果图 先新建两个文件夹 一个叫css 另一个叫img 如下图 先新建一个文本文档 输入下面的代码 div ul li img src img 1 jpg li ul div
  • 性能测试 —— jmeter计数器

    jmeter计数器 如果需要引用的数据量较大 且要求不能重复或者需要递增 那么可以使用计数器来实现 如 新增功能 要求名称不能重复 1 新增计数器 计数器 允许用户创建一个在线程组之内都可以被引用的计数器 计数器允许用户配置一个起点 一个最
  • 西瓜书-2习题

    文章目录 2 习题 2 1 2 2 2 3 2 4 2 5 有待解决 2 6 2 7 2 8 2 9 有待解决 2 10 有待解决 2 习题 2 1 数据集1000个样本 其中500个正例 500个反例 将其划分为包含70 样本的训练集和3
  • 笔记:pycharm中ModuleNotFoundError:No Module named ‘sklearn‘ 解决办法

    windows10 Anaconda tensorflow2 1 python3 7 开发环境 pycharm 错误 代码 from sklearn import datasets 报错 ModuleNotFoundError No Mod
  • HTTPS:确保Web安全

    参考书籍 图解HTTP HTTP的不足 1 通信使用明文可能会被窃听 HTTP本身不具备加密的功能 无法对通信整体加密 即HTTP使用的是明文方式发送 加密技术可以防止被窃听 加密对象 通信的加密 HTTP和SSL的组合被称为HTTPS 内
  • 字节跳动开源神器:btrace 2.0 技术原理大揭秘

    项目 GitHub 地址 https github com bytedance btrace 1 背景介绍 在一年多前 我们对外正式开源了 btrace AKA RheaTrace 它是基于 Systrace 的高性能 Trace 工具 目
  • Unmapped Spring configuration files found找到未映射的spring配置文件

    在以下位置配置即可
  • 基于Arduino的智能小车-代码部分

    紧接上篇Arduino智能小车 这篇主要是智能小车的代码部分 首先 定义相关模块引脚 注 这里只是粘贴了部分代码 int sp1 8 定义舵机接口数字接口8 int pulsewidth 定义脉宽变量 int v int val1 int
  • DateFormat类:日期格式化的便捷工具

    系列文章目录 文章目录 系列文章目录 前言 一 什么是DateFormat类 二 格式化日期和时间 三 解析字符串为日期和时间 四 本地化支持 总结 前言 在软件开发中 处理日期和时间是一个常见而重要的任务 为了满足不同的需求 Java提供
  • ubuntu操作系统学习笔记之NFS安装

    1 安装 nfs 服务版 机器一 机器二都要装 服务器端安装 sudo aptitude install nfs common nfs kernel server portmap 在客户端则需要安装 sudo aptitude instal
  • 2022高教杯思路 数模思路

    三年比赛经验 国一美赛F 公众号 千千小屋grow 首先切记获奖的前提是要完成论文模型的全部内容 如果A B题玩成编程和建模难度较大 可以选择C题 注 但选择C题 如果中规中矩的完成大概率与国一国二无缘 但很大概率可以省奖保底 A题 物理类
  • 机器学习-定序回归及python实现

    参考链接 深入浅出机器学习算法 定序回归 机器学习 保序回归 IsotonicRegression 一种可以使资源利用率最大化的算法 scikit learn一般实例之一 保序回归 Isotonic Regression
  • MySQL子查询

    子查询指一个查询语句嵌套在另一个查询语句内部的查询 这个特性从MySQL 4 1开始引入 SQL 中子查询的使用大大增强了 SELECT 查询的能力 因为很多时候查询需要从结果集中获取数据 或者需要从同一个表中先计算得出一个数据结果 然后与
  • 微信小程序和百度的语音识别接口

    介绍 因为项目需要 使用到了微信小程序和百度的语音接口 现在将项目中的一个小模块拿出来单独分享 技术关键字 微信小程序 百度语音接口 nodejs express fluent ffmegp 环境 windows 10 vs code 1
  • adb inputswipe shell_adb shell 基本使用

    连接远程设备 adb connect ip host 端口 获取设备 adb devices 显示adb连接设备列表 adb e d s xxx shell e 模拟器 d 外置设备 s 输入序列号 进入shell后 adb shell 就
  • Qt之NSIS打包

    一 Qt发布方式 Qt发布的时候 通常使用两种方式 1 静态编译 把相关联的库一并引入可执行程序 虽然发布简单 但可执行程序较大 2 动态编译 把相关联的库 以dll的形式引用 不包含到可执行程序 发布不方便 但可执行程序较小 二 NSIS
  • leectode 合并二叉树 -- 递归

    0 题目描述 leetcode原题链接 617 合并二叉树 1 递归解法 可以使用深度优先搜索合并两个二叉树 从根节点开始同时遍历两个二叉树 并将对应的节点进行合并 两个二叉树的对应节点可能存在以下三种情况 对于每种情况使用不同的合并方式
  • 梯度下降(Gradient Descent)

    基本思想 梯度下降是一个用来求函数最小值的算法 本次 我们将使用梯度下降算法来求出代价函数的最小值 梯度下降背后的思想是 开始时我们随机选择一个参数的组合 计算代价函数 然后我们寻找下一个能让代价函数值下降最多的参数组合 我们持续这么做直到