首页 > 编程语言 >《动手学深度学习》笔记4——线性回归 + 基础优化算法

《动手学深度学习》笔记4——线性回归 + 基础优化算法

时间:2024-09-08 20:51:33浏览次数:7  
标签:-- 老师 笔记 学习 李沐 算法 梯度 线性

李沐老师:线性回归是机器学习最基础的一个模型,也是我们理解之后所有深度学习模型的基础,所以我们从线性回归开始

1. 线性回归

由于是案例引入,没有很难的知识点,咱直接贴上李沐老师的PPT:

1.1 线性模型--单层神经网络

李沐老师:神经网络起源于神经科学,但现在深度学习的发展远超神经科学的范畴,新的神经网络也不再追求神经科学上的解释了

李沐老师:我们在拥有模型后,需要开始做预测,也需要衡量预测的质量怎么样

1.2 衡量预估质量--平方损失

李沐老师:

  • 用来衡量没有完全猜中真实值带来的(经济)损失
  • 这里的 \frac{1}{2} 是为了求导的时候方便消去

【符号(y^),读作 “y hat”】

李沐老师:定义完损失,就需要收集一些数据点来决定参数值(就是权重偏差

1.3 训练--参数--损失函数

参数学习

  • 上方是损失函数,每个真实值-预测值,结果平方
  • 需要寻找最小化损失下的解w*,b*
  • 因为是线性模型,所以有显示解

李沐老师:

  • 因为是线性模型,所以是凸函数
  • 最优解在梯度为 0 的地方
  • 这也是咱深度学习里唯一有最优解的地方,之后就都没有了

1.4 总结

  • 线性回归是对 n 维输入的加权,外加偏差(偏差是例子里的 “b”)
  • 使用平方损失来衡量预测值真实值差异
  • 线性回归有显示解 (很特别,有最优解说明模型很简单)
  • 线性回归可以看做是单层神经网络(最简单的神经网络)

2. 基础优化算法

李沐老师:优化算法里,最常见的是梯度下降

2.1 梯度下降

李沐老师:

  • 梯度下降可以直观地理解为去爬山,可以一直沿着最陡的路(山脊/山沟)走到终点(山顶/谷底)
  • 步长(Step Size):爬山的速度(迭代的速度),指在一次更新中参数移动的距离,它实际上就是学习率乘以梯度的结果

2.2 学习率(Learning Rate)

  • 步长(是向量) = 梯度(是向量) x 学习率
  • 学习率是用来缩放这个梯度的,以确定参数更新的步长

李沐老师:

  • 步长太小,就意味着计算更多次梯度
  • 这太贵了

2.3 批量大小 (batch size)

李沐老师

  • b很大的时候,计算会很精确,但是贵
  • b很小的时候,计算会容易很多,但不准
  • 梯度的计算复杂度,和样本的个数线性相关

2.4 总结

  • 梯度下降通过不断沿着反梯度方向更新参数求解
  • 小批量随机梯度下降是深度学习默认的求解算法(最稳定、最简单)
  • 两个重要的超参数是批量大小学习率

李沐老师:优化算法是一个很大的课题,之后会细讲

3. 线性回归--从零实现

李沐老师:真正使用时不必从零实现,但熟悉里面每个模块如何运作,是很好的教学方法

4. 线性回归--简洁实现

标签:--,老师,笔记,学习,李沐,算法,梯度,线性
From: https://blog.csdn.net/weixin_57972634/article/details/141949438

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (342)-- 算法导论23.2 1题
    一、对于同一个输入图,Kruskal算法返回的最小生成树可以不同。这种不同来源于对边进行排序时,对权重相同的边进行的不同处理。证明:对于图G的每棵最小生成树T,都存在一种办法来对G的边进行排序,使得Kruskal算法所返回的最小生成树就是T。如果要写代码,请用go语言。文心一言:证明为了证明对......
  • Java 21的Concurrency的笔记
    JavaCoreLibrariesConcurrencyConcurrencyAPI包括:VirtualthreadsStructuredconcurrencyTaskschedulingframework即线程池,常见、易用。Fork/joinframework即ForkJoinPool,不过目前还没有在项目中实际使用过。Concurrentcollections线程安全的容器,比如......
  • python文件处理笔记(1)
    1、open(文件名(通常是.txt),模式,encoding=模式)文件名通常是.txt,不然要做预处理(encoding的模式通常用utf-8)模式通常分为3种:①只读模式 'r'f=open('文件.txt','r',encoding='utf-8')这个模式只能读取文件内容②追加模式 'a'可以在文档后面增加内容f=open('......
  • 算法编程题(Day01)
    1.雀魂启动!小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少。于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花色,并且去除了一些特殊和牌方式(例如七对子等),具体的规则如下:总共有36张牌,每张牌是1~9。每个数字......
  • 线性因子模型 - 概率PCA和因子分析篇
    序言在探索数据科学与机器学习的浩瀚领域中,深度学习作为一股不可小觑的力量,正以前所未有的方式重塑着我们对数据处理与知识发现的理解。在这一宏大的框架下,概率主成分分析(Probabilistic PCA, pPCA......
  • 20240911_220441 公共基础 线性链表
    什么是线性链表单向线性链表双向线性链表带链的栈带链队列线性链表的运算循环链表考点小结习题c习题a习题b习题c......
  • 图论篇--代码随想录算法训练营第五十三天打卡| 110. 字符串接龙,105.有向图的完全可达
    110.字符串接龙题目链接:110.字符串接龙题目描述:字典strList中从字符串beginStr和endStr的转换序列是一个按下述规格形成的序列: 序列中第一个字符串是beginStr。序列中最后一个字符串是endStr。 每次转换只能改变一个字符。 转换过程中的中间字符串必须是字典......
  • 深入解析多智能体强化学习算法的训练效率
    深入解析多智能体强化学习算法的训练效率在多智能体强化学习(MARL)领域,不同算法的训练效率和最终性能差异显著。本文将深入分析几种主流MARL算法的训练特性,探讨影响其效率的关键因素。1.算法概览我们将讨论以下几种典型的MARL算法:VDN(ValueDecompositionNetworks)QM......
  • 大二上 C++高级程序设计笔记(1) 栈和c++对c的补充 20240908
    Q1:什么是static类的储存变量?A1:在C++中,static关键字可以用于类成员变量和成员函数,以改变其作用域和生命周期。当static用于类的成员变量时,它具有以下特性:全局唯一性:静态成员变量不属于任何特定的对象实例,而是属于类本身。这意味着无论创建多少个类的对象,静态成员变量都只有......
  • 算法题之水壶问题
    水壶问题有两个水壶,容量分别为 x 和 y 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 target 升。你可以:装满任意一个水壶清空任意一个水壶将水从一个水壶倒入另一个水壶,直到接水壶已满,或倒水壶已空。示例1: 输入:x=3,y=5,target=4输出:tru......