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

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

1. 线性回归

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

219f11754e064bc5a99fa9309297dfa7.png

d600b52cd32a4e538f299a04d566b711.png

d3e83d7734444c6ab94ef8ddbfdff236.png

1.1 单层神经网络(线性模型)

276c99b6be52413fad6d22394ee8f4e4.png

d5fd1c36c0774079994a5a556092c50f.png

20e5608e2531425fad8be21fdc78359b.png

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

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

1.2 平方损失(衡量预估质量)

e2abd1f1f81a41deae6a182326d75aaf.png

李沐老师:

  • 用来衡量没有完全猜中真实值带来的(经济)损失
  • 这里的 eq?%5Cfrac%7B1%7D%7B2%7D 是为了求导的时候方便消去

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

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

1.3 损失函数(训练/学习)

380ff3328cfe4fd894061d6373e4b411.pngfcb949cf87c147e2ab91e83f0403976d.png

参数学习

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

8764d8ad5c87434eac460afe93c36754.png

李沐老师:

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

1.4 总结

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

2. 基础优化算法

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

2.1 梯度下降

e5347bdb4d124613ad4b3dd1c8e7292e.png

李沐老师:

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

97fe5439ec0043fe98d108d4b76f0f18.png

2.2 学习率(Learning Rate)

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

ef9c5868bfb94e5ca181194426c47602.png

李沐老师:

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

2.3 批量大小 (batch size)

26eee5c389e44757b217b48ea1e58d1a.png

李沐老师

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

d447bb2d877047ca921fcf110be67e0a.png

2.4 总结

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

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

3. 从零实现(造轮子/拓展)

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

19ce74321f044481a65267cdecf4aab6.png

4. 简洁实现(重难点)

  • 这部分对应课程Jupyter目录:/chapter_linear-networks/linear-regression-concise.ipynb
  • 个人技巧:直接看李沐老师讲代码很难跟上,要真正理解代码,得读懂里面的逻辑,这个变量、这个函数是用来干嘛的,怎么定义的,整体的pipeline是什么,代码的逻辑性很强,不论整体还是细节,都需要一点一点GPT/查文档,读懂了受益无穷
  • 一般前面是李沐老师讲理论,后面代码实现部分得自己反复看Jupyter文档
  • 李沐老师的代码讲解也很好,要配合起来交叉看、反复看
  • 效仿李沐老师的思路,反复看,然后模仿复述他的思路,来检验自己是否理解代码,而不是简单记笔记
  • 看代码看不懂时,要联系上下文看,再不懂就把上下文交给GPT
  • 不必全都学明白,不懂得可以跳过,后期复现论文,代码能跑起来就是成功,不懂的就现场查GPT,回头再看也行,常用的概念会反复用到
  • 代码看不懂,还有一种可能,你不懂“面向对象编程”,快去补Python基础,推荐B站资源:黑马Python(PPT在附件里)

009acf505ce24149aa2791d3fcd0d7ed.png

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值