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.hqwc.cn/news/452473.html

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

相关文章

Java项目服务器部署

Java项目服务器部署 Tomocat Java项目进行云服务器部署 如果有需要比赛部署的同学也可以联系我,我后续还会对于这个专栏继续展开 1、云服务器选购 1.1 阿里云选购(宝塔面板) 1.2 端口放行 这里说的就是端口放行,后面一些访问比…

Electron实战(一):环境搭建/Hello World/打包exe

文章目录 Electron安装Node.jsNodeJs推荐配置开始Electron项目创建index.js文件创建src目录运行打包生成exe生成安装包踩坑 下一篇Electron实战(二):将Node.js和UI能力(app/BrowserWindow/dialog)等注入html Electron Electron是一个使用JavaScript, HT…

Java并发(二十三)----同步模式之保护性暂停

1、定义 即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列 JDK 中,join 的实现…

LFU缓存(Leetcode460)

例题: 分析: 这道题可以用两个哈希表来实现,一个hash表(kvMap)用来存储节点,另一个hash表(freqMap)用来存储双向链表,链表的头节点代表最近使用的元素,离头节…

近期作业总结(函数,递归,二进制)

二分查找函数 写一个二分查找函数 功能&#xff1a;在一个升序数组中查找指定的数值&#xff0c;找到了就返回下标&#xff0c;找不到就返回-1。 int bin_search(int arr[], int left, int right, int key) {int mid 0;while (left < right) {mid (right left) / 2;if…

Transformer 自然语言处理(一)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 当你阅读这些文字时&#xff0c;一个奇迹正在发生&#xff1a;这页上的涂鸦正在在你的大脑皮层中转化为单词、概念和情感。我的 2021 年 11 月的思…

django微博热搜数据分析与可视化系统python毕业设计

简而言之&#xff0c;数据可视化是以图形方式呈现结构化或非结构化数据&#xff0c;从而将隐藏在数据中的信息直接呈现给人们。但是有一个陷阱:它不仅仅是使用数据可视化工具将数据转化为图形。相反&#xff0c;它是从数据的角度看待世界。换句话说&#xff0c;数据可视化的对象…

cherles抓包,安卓,http/https

前置条件&#xff1a;charles抓取手机数据包的前提&#xff0c;手机和电脑需要在一个局域网内。 1、charles官网下载地址 Download a Free Trial of Charles • Charles Web Debugging Proxy 下载以后按提示安装即可。 2、charles的配置 在charles中【proxy->proxy Set…

Zabbix“专家坐诊”第225期问答汇总

来源&#xff1a;乐维社区 问题一 Q&#xff1a;当系统负荷顶不住时&#xff0c;比如4个cpu&#xff0c;load average 特别高&#xff0c;比如100。这时候这段时间zabbix的所有指标数据会丢失&#xff0c;不知道原因是什么&#xff0c;有没有办法去处理&#xff0c;保存这块指标…

面试八股文(3)

文章目录 1.HashSet如何检查重复2.comparable和Comparator区别3.ConcurrentHashMap和Hashtable区别4.线程和进程5.并发与并行的区别6.为什么使用多线程7.使用多线程可能带来问题8.线程的生命周期和状态9.什么是上下文切换10.线程死锁11.产生死锁四个条件12.如何避免死锁 1.Hash…

游戏如何选择服务器

一个网络游戏要想长期运行下去&#xff0c;关键是用户体验&#xff0c;在初期阶段的游戏服务器租用环节就显得尤为重要。那么问题来了&#xff0c;游戏公司如何才能够在众多的服务器商中租用找到高性能、高性价比的游戏服务器租用呢&#xff1f;租用游戏服务器时需要考虑的因素…

幻兽帕鲁游戏中走路卡顿并且会出现回弹是什么原因?

可能原因是最近的 1.4.0 更新后&#xff0c;代码中有一个启动参数的加入&#xff0c;导致 CPU 占用极高。 可以远程连接你的服务器 然后执行下面的代码&#xff0c;删除代码中的那个启动参数。 # 删除可能导致人物回弹的游戏服务器启动参数 sudo -u ecs-assist-user sed -i s…