Datawhale X 李宏毅苹果书 AI 夏令营 —— Part 01 @深度学习 @AI

机器学习基础

机器学习是让模型具备自动找函数的能力

模型:带有未知参数的函数,比如线性回归问题中 y = w x i + b y = wx_i +b y=wxi+bw, b 就是未知的参数

三大任务

找函数的目的是为了处理任务,本书中描述了三种任务:回归、分类、结构化学习

  1. 回归(Regression): The function outputs a scalar. 假设我们要找的函数输出一个值,是一个标量
  2. 分类(Classification): Given options(classes), the function outputs the correct one. 让模型做选择,假设给定的选择数大于等于 2
  3. 结构化学习(Structured Learning):Create something with structure(such as image, document),这更有挑战性,也更具有意义,比如我们熟知的 ChatGPT,以及 Stable Diffusion 等图像生成模型。

模型训练步骤:

1. 建立函数

Function with unknown parameters(based on domain knowledge) 猜测一个带有未知参数的函数,之后修正

2. 定义损失

Define loss from training data 验证函数效果好不好,基础公式如下:
L = 1 N ∑ n e n (1) L = \frac{1}{N}\sum_ne_n \tag {1} L=N1nen(1) e = ∣ y − y ^ ∣ (2) e = |y - \hat y| \tag{2} e=yy^(2) e = ( y − y ^ ) 2 (3) e = (y - \hat y)^2 \tag{3} e=(yy^)2(3)按照公式 2, L 被称为 MAE(mean absolute error),按照公式 3,L 被称为 MSE(mean square errorr) 。
特殊情况下,如果 y 和 y hat 都是概率分布(probability distributions),这个时候可能会选择交叉熵(cross entropy)

可以调整不同的 w 和不同的 b,求取各种 w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失(loss)。

注意:损失函数是自己定义的,在刚才定义里面,损失就是估测的值跟正确的值的绝对值。比如设置一个损失函数为绝对值再减 100,损失可能就有负的。
所以损失曲线并不是一个真实的损失,可以是任何形状。

3. 最优化参数

w ∗ , b ∗ = a r g min ⁡ w , b L (4) w^*, b^* = arg\min_{w,b}L\tag{4} w,b=argw,bminL(4)梯度下降(gradient descent) 是经常会使用优化(Optimization)的方法,也是这本书里用到的唯一的最优化方法。具体实现步骤如下:

  1. 随机选取一个初始点 w0
  2. 计算初始点处 w0 对 loss 的微分
    ∂ L ∂ w ∣ w = w 0 (5) \frac{\partial{L}}{\partial{w}} |_{w=w^0}\tag{5} wLw=w0(5)如下图所示,我们可以想像说有一个人站在这个地方,他左右环视一下,计算微分就是左右环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。这一步的步伐的大小取决于两件事情:
    在这里插入图片描述
  • 斜率大小:步伐大小直接取决于斜率大小,斜率大步伐就跨大一点,斜率小步伐就跨小一点。补充知识:在标准坐标系下,图像的斜率即函数的导数,为损失函数的微分 dL 与自变量微分 dw 之商
  • 学习率(learning rate):学习率 η 是我们自己设定的。η 也会影响步伐大小。
    • 如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。
    • 如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。

在做机器学习时,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)
3. 迭代移动 wi
w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 (6) w^1 ← w^0 - \eta\frac{\partial{L}}{\partial{w}} |_{w=w^0}\tag{6} w1w0ηwLw=w0(6)最后会停下来。往往有两种情况会停下来。

  • 达到最大更新次数:更新次数是最开始设定的
  • 达到函数最小值:当微分算出来正好是 0,最小值分为两种,全局最小值局部最小值

如下图所示,把 w 设定在最右侧红点附近这个地方可以让损失最小,称为全局最小值(global minima)。
但如果在梯度下降中,w0 是随机初始的位置,也很有可能走到 wT 这里,还没走到最右侧红点附近,训练就停住了,无法再移动 w 的位置。wT 这个地方称为局部最小值(local minima)。
在这里插入图片描述
局部最小值不是整个误差表面上面的最低点,所以有人会把它当作梯度下降法的缺点。但事实上局部最小值是一个假问题,在做梯度下降的时候,真正面对的难题不是局部最小值。

我们再回到创建的线性回归模型中,对两个 w,b 进行梯度下降,具体公式如下
∂ L ∂ w ∣ w = w 0 , b = b 0 (7) \frac{\partial{L}}{\partial{w}} |_{w=w^0, b=b^0}\tag{7} wLw=w0,b=b0(7) ∂ L ∂ b ∣ w = w 0 , b = b 0 (8) \frac{\partial{L}}{\partial{b}} |_{w=w^0, b=b^0}\tag{8} bLw=w0,b=b0(8) w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 (9) w^1 ← w^0 - \eta\frac{\partial{L}}{\partial{w}} |_{w=w^0, b=b^0}\tag{9} w1w0ηwLw=w0,b=b0(9) b 1 ← b 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 (10) b^1 ← b^0 - \eta\frac{\partial{L}}{\partial{w}} |_{w=w^0, b=b^0}\tag{10} b1b0ηwLw=w0,b=b0(10)

模型预测

模型训练之后,可以用来预测未来的未知值,如图所示,红色代表的是真实值,蓝色代表的是预测值
在这里插入图片描述
参考资料:
[1] 李宏毅《深度学习详解》电子版:https://github.com/datawhalechina/leedl-tutorial
[2] 视频讲解:https://www.bilibili.com/video/BV1JA411c7VT?p=2&vd_source=3efd40f637f094c1da27b1a24b410e12

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值