【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

news/2024/9/19 18:40:55/ 标签: 机器学习, batch, 人工智能, 深度学习, python

梯度下降法,随机梯度下降法SGD,Mini-batch SGD

  • 梯度下降法
    • 凸函数(convex)和非凸函数
    • 梯度更新方向选择
    • 步长的选择
  • 随机梯度下降SGD(Stochastic Gradient Descent)
    • 梯度下降法:
    • SGD:
  • Mini-batch SGD

梯度下降法

  • 从一个随机点开始
  • 决定下降方向(重要)
  • 确定步长(重要)
    • 太小: 迭代太多次,消耗过多资源
    • 太大: 容易越界,不稳定
  • 不断更新,直到符合停止标准
    • e.g. 变化足够小
      ∣ f ( w 0 ) − f ( w 6 ) ∣ < e = 1 0 − 3 |f(w0) - f(w6)| < e = 10^{-3} f(w0)f(w6)<e=103

凸函数(convex)和非凸函数

凸函数:最小二乘,岭回归,逻辑回归…
在这里插入图片描述
非凸函数:会在第一个最小的拐点停止,但是实际上还有更低点。

在这里插入图片描述

梯度更新方向选择

更新规则:
w i + 1 = w i − α i d f d w ( w i ) w_{i+1} = w_i - α_i\frac{df}{dw}(w_i) wi+1=wiαidwdf(wi)
-dw : 斜率的负数,决定更新的方向
如果 -dw > 0 则往左走
如果 -dw < 0 则往右走
α : 步长

公式推导:
Loss :
f ( x ) = ∣ ∣ w x − y ∣ ∣ 2 2 f(x) = ||wx - y||^2_2 f(x)=∣∣wxy22
求导:
d f d w ( w ) = 2 ∣ ∣ w x − y ∣ ∣ 2 \frac{df}{dw}(w) = 2||wx-y||_2 dwdf(w)=2∣∣wxy2
梯度更新:
w i + 1 = w i − α ∣ ∣ w x − y ∣ ∣ w_{i+1} = w_i - α||wx -y|| wi+1=wiα∣∣wxy∣∣

2 包含在α里

步长的选择

α i = α n i α_i = \frac{α}{n\sqrt{i}} αi=ni α

α : 常量
n : 训练集数量
i : iteration 迭代次数
随着迭代次数增加,步长越来越小。

随机梯度下降SGD(Stochastic Gradient Descent)

梯度下降法:

w i + 1 = w i − α i ∑ j = 1 n ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i\sum^n_{j=1}(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαij=1n(wiTx(j)y(j))x(j)
空间复杂度: O(nk)

SGD:

随机样本计算梯度,如果全部样本都计算梯度,计算量过大
w i + 1 = w i − α i ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαi(wiTx(j)y(j))x(j)
空间复杂度: O(k) 【取消了sum】
w i + 1 = w i + α i ▼ f j ( w i ) w_{i+1} = w_i + α_i▼f_j(w_i) wi+1=wi+αifj(wi)

j 表示随机抽取的样本

  • 优点:
    • 每次更快,计算量更少
  • 缺点:
    • 需要迭代更多次

batch_SGD_57">Mini-batch SGD

w i + 1 = w i − α i ∑ j ∈ B n ( w i T x ( j ) − y ( j ) ) x ( j ) w_{i+1} = w_i - α_i\sum^n_{j∈B}(w^T_ix^{(j)} - y^{(j)})x^{(j)} wi+1=wiαijBn(wiTx(j)y(j))x(j)

只计算最小batch的梯度更新

  • 优点
    • 比SGD更大的计算量
    • 比GD更小的计算量
  • 缺点
    • 多了一个参数 batch size

http://www.ppmy.cn/news/1516108.html

相关文章

【docker】使用github action来自动发布项目到dockerhub

本文首发于 ❄️慕雪的寒舍 使用github action来自动发布项目到dockerhub。参考 https://msdemt.github.io/p/github-action-build-docker/ 博客 1.准备工作 1.1 dockerhub token https://hub.docker.com/settings/security 登录dockerhub&#xff0c;在用户的account settin…

Ubuntu清除缓存的方法--防止系统崩溃

前情提要&#xff1a;虚拟机出现过好几次的崩溃&#xff0c;终于同事发给了一个可以清除缓存的 1&#xff09;崩溃1&#xff1a;之前将虚拟机放置在某盘中&#xff0c;该盘后续一直有别的东西存入&#xff0c;导致ubuntu直接打不开&#xff0c;后续就将虚拟机直接放在电脑单独…

以简单的例子从头开始建spring boot web多模块项目(五)-thymeleaf引擎

继续向里面加&#xff0c;这次是引入thymeleaf渲染引擎。 使用这个引擎的很多&#xff0c;主要是以下几个优点&#xff1a; Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 -HTML可以在浏览器中正确显…

如何安装和高级 AMP for WP

当 WordPress 是支持 AMP 的 WEB 站点时&#xff0c;主要通过两个插件支持 AMP。 一个是AMP插件。 这个插件也参与谷歌的开发&#xff0c;并被确认为AMP项目的官方插件。 我最初也安装了这个AMP插件&#xff0c;但我不知道是否能够共存的常规网站和AMP兼容网站&#xff0c;很难…

【功能自动化】WebTours实现订票流程并设置检查点

环境搭建&#xff1a; 1.需要配置WebTours网站 代码实现&#xff1a; # 导入包 from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep# 打开浏览器 driver webdriver.Chrome() driver.get("http://127.0.0.…

Python新手必看!这个模块让Python的重试更加便捷灵活!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Python重试 📒📝 安装📝 使用📝 进阶使用⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,网络请求、数据库操作或任何可能因外部因素而失败的场景中,错误重试显得尤为重要。它能有效减少因暂时性问题导致的程序崩溃…

java接口 controller层接收list集合传参,postman 调用接口时required parameter XXX is not present

开发过程中开发一个java接口 controller层接收list集合传参&#xff0c;然后postman调用一直不成功&#xff0c;报错 使用RequestParam方式&#xff0c;如果postman 调用接口时报错required parameter XXX is not present 可能是&#xff08;value“items”&#xff09;跟你输…

理解与推导贝叶斯滤波算法

很多时候一些算法看起来极其复杂,极其难懂,不是因为我们愚不可及,而是因为我们看到的是别人省略过很多步骤和脑海中思考过的思路最后呈现出来的公式和文字,而好的博客就应该尽量还原这些思考过程及省略掉的步骤。 像卡尔曼滤波(Kalman filters)、粒子滤波(Particle filt…

七、Centos安装LDAP--Docker版--已失败

参考博客&#xff1a; docker 安装 OpenLDAP 及 LdapAdmin桌面版、页面版(osixia/openldap)_docker安装ldap-CSDN博客 LDAP使用docker安装部署与使用_memberof ldap docker-CSDN博客 目录 一、安装Docker Docker基本使用 管理镜像 二、拉取LDAP镜像 配置docker国内的镜像…

Android笔试面试题AI答之Kotlin常见考点总结

Kotlin面试题主要涵盖了Kotlin语言的基础、特性、高级用法以及与其他编程语言的比较等多个方面。以下是Kotlin常见面试考点的总结&#xff1a; Kotlin基础&#xff1a; 定义与特性&#xff1a;简述Kotlin是什么&#xff0c;以及它的主要特性&#xff0c;如空安全、扩展函数、协…

3.5mm耳机插头制作手机内录线电路图

1.背景 无人直播或录屏直播手机mic会对外界声音的录入&#xff0c;而且很嘈杂。 2.实现功能 手机酷狗播放音频&#xff0c;同时手机内打开录音软件录音&#xff0c;同一台手机操作。 3.电路图 接线分为2种&#xff0c;国标和美标&#xff0c;自己尝试&#xff0c;肯定有一…

OpenCV几何图像变换(5)旋转和缩放计算函数getRotationMatrix2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算二维旋转的仿射矩阵。 该函数计算以下矩阵&#xff1a; [ α β ( 1 − α ) ⋅ center.x − β ⋅ center.y − β α β ⋅ center.x ( …

校园供水系统智能管理丨全国大学生数学建模竞赛E题

课程特色 新技术&#xff1a; 新知识、新方法、新技术层出不穷&#xff0c;学习实战专家的课程&#xff0c;让自己持续保持竞争力。 新教学&#xff1a;师傅带练教学模式&#xff0c;全方位在线答疑辅导学习 新思路&#xff1a;培养创新思维和实践能力&#xff0c;…

Github 2024-08-22 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1精选Go框架、库和软件列表 创建周期:3700 天开发语言:Go协议类型:MIT LicenseStar数量:127377 个Fork数量:11751 …

安泰功率放大器参数怎么选型号

选择功率放大器的型号是一个重要的决策&#xff0c;特别是在设计电子系统时。不同的应用需要不同类型的功率放大器&#xff0c;因此选型是至关重要的。以下是关于如何选择功率放大器型号的详细文章&#xff0c;包括了相关的参数和考虑因素。 在选择功率放大器型号之前&#xff…

CSS中的Flexbox布局和Grid布局有什么区别?适用场景

CSS中的Flexbox布局和Grid布局是现代Web设计中两种极其重要且强大的布局模型。它们各自解决了不同的布局挑战&#xff0c;提供了前所未有的灵活性和控制力。下面将详细探讨Flexbox和Grid布局的区别以及它们各自适用的场景&#xff0c;以确保理解全面且深入。 Flexbox布局 基本…

贪心算法---跳跃游戏(2)

题目&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…

【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十六)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

适合大学生用的笔记本电脑?

适合大学生用的笔记本电脑&#xff1f; 李升伟 以下是一些适合大学生的笔记本电脑推荐&#xff1a; 1. 联想 thinkbook14 2023轻薄本 &#xff1a;thinkpad系列定位商务场景&#xff0c;thinkbook系列为商务、家庭两用轻薄本&#xff0c;性价比不错。2023款沿用全金属机身&…

vue最早可以读取this的生命周期函数

在Vue中&#xff0c;最早可以安全地读取到this&#xff08;即Vue实例及其属性&#xff0c;如data、methods等&#xff09;的生命周期函数是created。 created 钩子在实例创建完成后被立即调用。在这一步&#xff0c;实例已完成以下配置&#xff1a; 数据观测&#xff08;data…