1-2 动手学深度学习v2-基础优化方法-笔记

最常见的算法——梯度下降

当一个模型没有显示解的时候,该怎么办呢?

  1. 首先挑选一个参数的随机初始值,可以随便在什么地方都没关系,然后记为 w 0 \pmb{w_{0}} w0
  2. 在接下来的时刻里面,我们不断的去更新 w 0 \pmb{w_{0}} w0,使得它接近我们的最优解

具体来说:

  • 挑选一个初始值 w 0 \pmb{w_{0}} w0
  • 重复迭代参数 t = 1 , 2 , 3 t = 1,2,3 t=123 w t = w t − 1 − η ∂ ℓ ∂ w t − 1 \pmb{w}_{t}=\pmb{w}_{t-1}-\eta \frac{\partial \ell}{\partial \pmb{w}_{t-1}} wt=wt1ηwt1 η \eta η是一个标量(学习率,步长的超参数), ∂ ℓ ∂ w t − 1 \frac{\partial \ell}{\partial \pmb{w}_{t-1}} wt1是损失函数关于 w t − 1 \pmb{w_{t-1}} wt1处的梯度。
    梯度是使得函数的值增加最快的方向,那么负梯度就是使得这个函数的值减少最快的方向
    学习率是指每次我沿着这个负梯度的方向走多远
    请添加图片描述
    直观的从图上来看,这个类似一个地理中的等高线,在同一条等高线上的函数值是相同的。 − η ∂ ℓ ∂ w t − 1 -\eta \frac{\partial \ell}{\partial \pmb{w}_{t-1}} ηwt1表示的是由 w 0 \pmb{w_{0}} w0 w 1 \pmb{w_{1}} w1的这条向量(或者是由 w 1 \pmb{w_{1}} w1 w 2 \pmb{w_{2}} w2的这条向量)。把 w 0 \pmb{w_{0}} w0和这个向量一加,就会到 w 1 \pmb{w_{1}} w1的位置。

学习率是指的步长,是我们人为选定的超参数。不能选的太小,也不能选的太大。
请添加图片描述

  • 选的太小:每一次走的步长很有限,我们到达一个点需要走很多步,这不是一个很好的事情。计算梯度是一件很贵的事情,是整个模型训练中最贵的部分,所以我们要尽可能的少去计算梯度。
  • 选的太大:一下子步子迈得太大,会使得我们一直在震荡,并没有在严格下降。

更常见的算法——小批量随机梯度下降

  • 在整个训练集上算梯度太贵了
    一个深度神经网络模型可能需要数分钟至数小时

  • 我们可以随机采样 b b b个样本 i 1 , i 2 , . . . , i b i_{1},i_{2},...,i_{b} i1,i2,...,ib来近似损失(用 b b b个样本的平均损失来近似所有 n n n个样本的平均损失
    1 b ∑ i ∈ I b ℓ ( x i , y i , w ) \frac{1}{b}\sum_{i\in I_{b}}\ell(\pmb{x}_{i},y_{i},\pmb{w}) b1iIb(xi,yi,w)
    b b b是批量大小,另一个重要的超参数。
    b b b很大的时候,近似很精确,当 b b b很小的时候,近似不那么精确,但是计算它的梯度很容易,梯度计算的复杂度与样本的个数线性相关。

  • 批量不能太小:每次计算量太小,不适合并行来最大化利用计算资源(深度学习模型会用GPU来计算,但批量太小不能有效利用GPU并行计算)

  • 批量不能太大:内存消耗增加,浪费计算,例如如果所有的样本都是相同的


总结

  1. 梯度下降通过不断沿着反梯度方向更新参数求解
  2. 小批量随机梯度下降是深度学习默认的求解算法
  3. 两个重要的超参数是批量大小和学习率

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

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

相关文章

我在代码随想录|写代码Day25 |回溯算法|93.复原IP地址 , 78.子集 , 90.子集II

学习目标: 博主介绍: 27dCnc 专题 : 数据结构帮助小白快速入门 👍👍👍👍👍👍👍👍👍👍👍👍 ☆*: .。. o(≧▽≦)…

C系列-动态内存管理

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 为什么要有动态内存分配 malloc和free malloc free calloc和realloc calloc realloc 常见的动态内存的错误 对NULL指针的解引用操作 ​编辑 对动态开辟空间的越界访问…

ES6-const

一、基本用法 - 语法:const 标识符初始值;注意:const一旦声明变量,就必须立即初始化,不能留到以后赋值 - 规则:1.const 声明一个只读的常量,一旦声明,常量的值就不能改变2.const 其实保证的不是变量的值不…

查看自己电脑是arm还是x64(x86);linux操作系统识别

1、查看自己电脑是arm还是x64(x86) linux 参考: https://liuweiqing.blog.csdn.net/article/details/131783851 uname -a如果输出是 x86_64,那么你的系统是 64 位的 x86 架构(通常我们称之为 x64)。如果…

2023高精地图甲级测绘资质最新名单【高德地图】

根据2023年自然资源部公布的名单显示,以下公司通过“地图甲级测绘资质”换证审核,也就意味着,以下这些公司可以继续从事电子地图的采集和制作、商业合作等相关业务。 而这一点,对于以电子地图导航为主要业务支撑的企业至关重要。…

C-C++内存管理

C/C内存分布 内存的分配方式有几种? 静态内存分配(Static Memory Allocation): 静态内存分配是在编译时确定内存大小和位置的分配方式。全局变量、静态变量和常量都使用静态内存分配。这些变量在程序的整个生命周期中都存在&…

创建TextMeshPro字体文件

相比于Unity的Text组件,TextMesh Pro提供了更强大的文本格式和布局控制,更高级的文本渲染技术,更灵活的文本样式和纹理支持,更好的性能以及更易于使用的优点。但unity自带TextMeshPro字体不支持中文。这里使用普通字体文件生成Tex…

React16源码: React中event事件对象的创建过程源码实现

event 对象 1 ) 概述 在生产事件对象的过程当中,要去调用每一个 possiblePlugin.extractEvents 方法现在单独看下这里面的细节过程,即如何去生产这个事件对象的过程 2 )源码 定位到 packages/events/EventPluginHub.js#L172 f…

Spring事件之注解@EventListener讲解

文章目录 1 注解EventListener1.1 示例Demo1.1.1 简单例子1.1.2 解耦1.1.3 Spring事件 1.2 深入EventListener1.2.1 debug调试1.2.2 问题一: Spring是怎么知道要去触发这个方法1.2.3 问题二:ApplicationListenerMethodAdapter1.2.4 问题三:Si…

Vue学习笔记:计算属性

计算属性 入门进阶二次进阶三次进阶四次进阶结界五次进阶六次进阶七次进阶八次进阶九次进阶终章彩蛋 入门 Vue.js中,计算属性示例: export default {data() {return {firstName: John,lastName: Doe};},computed: {// 计算属性:全名fullNam…

(12)喝汽水

文章目录 每日一言题目解题思路一代码 解题思路二代码 结语 每日一言 长风沛雨,艳阳明月。田野被喜悦铺满,天地间充满着生的豪情。 题目 已知1瓶汽水1元,2个空瓶可以换一瓶汽水,输入整数n(n>0)&#x…

Maven工程的配置及使用

一、Maven章节 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 1.1、maven的作用 1)依赖管理: 方便快捷的管理项目依赖的资源包(jar包)避免版本冲突 2)统一项目结构&…

机器学习算法之逻辑回归算法(Logistic Regression)

逻辑回归算法是一种用于分类问题的经典机器学习算法。虽然它的名字中带有“回归”,但实际上逻辑回归用于解决分类问题,特别是二分类问题。本篇博文将详细介绍逻辑回归算法的工作原理、应用领域以及Python示例。 算法背景 逻辑回归起源于20世纪初,用于分析生存率数据。随后…

Android studio打开md无法显示md渲染问题

Where is Android Studio Markdown support plugin preview preference? - Stack Overflow android studio开发无法选择markdown渲染功能的问题 原因是java runtime出了问题 搜索下面功能 Choose Boot Java Runtime for the IDE 选择带JCEF的 可以选最新的java版本 重启之…

Jvm FullGC 如何排查?

使用场景 我们在使用系统时,有时请求和响应会变得特别慢,系统也变得很卡。 有可能是FullGC的问题,可以逐步地进行排查。 使用jps和top确定进程号pid jps可以列出正在运行的jvm进程,并显示jvm执行主类名称( main()函数所在的类…

浙政钉(专有钉钉)

专有钉钉是浙政钉的测试版本,可在正式发布之前进行业务开发。 专有钉钉 原名政务钉钉 是高安全、强管控、灵活开放的面向大型组织专有独享的协同办公平台。支持专有云、混合云等多种方式灵活部署,以满足客户特定场景所需为目标,最大化以“平…

window 镜像---负载篇

前提:需要修改window的powershell执行脚本的策略 步骤:以管理员身份打开powershell,执行 Get-ExecutionPolicy查看当前执行策略,若返回值是Restricted,需执行Set-ExecutionPolicy RemoteSigned powershell 版本信息&am…

.NET Core已经开源好几年了, 为什么不像JVM那样很多人研究和调优其GC算法?

.NET Core的开源确实是微软近年来重要的一步,它不仅标志着.NET生态系统向更开放、更多样化的方向迈进,也为更广泛的社区参与和贡献提供了可能。然而,与JVM相比,研究和调优GC(垃圾回收)算法的工作似乎没有那…

gif格式图片是怎么做的?教你一招在线转换

常见的图片有jpg、png以及gif格式,其中,jpg和png格式的图片我们一般手机拍摄或是接受的都是这两种格式,但是gif格式的图片我们却需要从网上下载。那么,当我们想要自己制作gif动画的时候要怎么操作呢?只需要使用在线制作…

NDK Could NOT find OpenGL (missing: OPENGL_glx_LIBRARY) Ubuntu

1. update 该命令将安装一堆新包,包括gcc,g 和make。 sudo apt-get update sudo apt-get install -y build-essential2. install OpenGL依赖库 sudo apt-get install freeglut3-dev sudo apt-get install libgl1-mesa-dev sudo apt-get install libxt-…