Datawhale X 李宏毅苹果书 AI夏令营--深度学习入门 task1

Datawhale X 李宏毅苹果书 AI夏令营–深度学习入门 Task1

数学基础推荐

基础概念

机器学习(Machine Learning)是让机器具备找一个函数的能力。这个函数非常复杂,人类难以把它写出来,因此想通过机器的力量把这个函数自动找出来。根据要找的函数不同,机器学习分为不同的类别。

  • 如果要找的函数的输出是一个标量(scalar),这种机器学习的任务称为回归
    • 例如,要预测未来某一个时间的 PM2.5 的数值,机器要找一个函数 f,其输入是可能是种种跟预测 PM2.5 有关的指数,输出是明天中午的 PM2.5的数值,找这个函数的任务称为回归(regression)
  • 另一个常见的任务是分类(classification):由人工预先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。
    • 用一个函数检测邮件是否为垃圾邮件就是分类
    • AlphaGo 也是一个分类的问题:让机器下围棋,给出的选项与棋盘的位置有关。棋盘上有 19 × 19 个位置,机器下围棋其实是一个有 19 × 19 个选项的选择题。机器找一个函数,该函数的输入是棋盘上黑子跟白子的位置,输出就是从 19×19 个选项里面,选出一个正确的选项,从 19 × 19 个可以落子的位置里面,选出下一步应该要落子的位置。
  • 结构化学习(structured learning):机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。
案例

案例目标:根据一个频道过往所有的信息预测明天的观看次数,找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。

机器学习找函数的过程,分成三个步骤:

  1. 写出一个带有未知参数的函数 f,其能预测未来观看次数,即定义模型
    y = b + w x y = b + wx y=b+wx

    • 带有未知的参数b、w的函数称为模型。在机器学习里面,模型就是一个带有未知的参数的函数
    • 特征x是这个函数里面已知的,它是来自于后台的信息,而 w 跟 b 是未知的参数,w 称为权重(weight),b 称为偏置(bias)
  2. 定义损失(loss),损失也是一个函数

    • 这个函数的输入是模型里面的参数,模型是 y = b + w ∗ x,而 b 跟 w 是未知的,损失是函数 L(b, w),其输入是模型参数b跟w
    • 损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。要从训练数据来进行计算损失
    • 真实的值称为标签(label),假设未知的参数的设定是 b = 500,w = 1,函数就变成 y = 500 + x,将函数输出值与标签比较计算误差。估测的值跟实际的值之间的差距,有多种的计算方法,如平均绝对误差、均方误差等,涉及概率和统计,这个时候可能会选择交叉熵
    • 交叉熵:是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。 人工智能语境下,指多类别分类问题中对 Log 损失函数的推广。交叉熵量化两个概率分布之间的区别,用于度量两个概率分布间的差异性信息。语言模型的性能也通常用交叉熵和复杂度来衡量,将交叉熵引入计算语言学消歧领域
    • 根据训练数据,调整w和b,得到各种组合,计算其损失L,画出来的等高线图称为误差表面
  3. 解一个最优化的问题

    • 找一个 w 跟 b,把未知的参数找一个数值出来,看代哪一个数值进去可以让损失L的值最小,就是要找的 w 跟 b。梯度下降(gradient descent)是经常会使用优化的方法

    • 梯度下降:这是一个常用的优化算法,用于求解目标函数的最优解或局部最优解。它通过不断调整模型参数的值,使目标函数的值逐渐下降。具体来讲,每次迭代时,它计算目标函数的梯度(即函数在当前点处的斜率),并朝着梯度的反方向更新参数值,以使函数值下降。这个过程一直持续到目标函数的值收敛(即不再变化或变化极小),此时,算法得到的参数值就是目标函数的最优解或近似最优解。

    • 为了要简化起见,先假设只有一个未知的参数 w,b 是已知的。w 代不同的数值的时候,就会得到不同的损失,这一条曲线就是误差表面。

      image-20240827201333457
      w 1 ← w 0 − η ∂ L ∂ w ∣ w = w 0 w1 ← w0 − η\frac{∂L}{∂w}|w=w0 w1w0ηwLw=w0

    • 首先要随机选取一个初始的点 w0,接下来计算 ∂L/∂w |w=w0–在 w 等于 w0 的时候,参数 w 对损失的微分。计算在这一个点,在w0这个位置的误差表面的切线斜率,也就是这一条蓝色的虚线的斜率

    • 如果这一条虚线的斜率是负的,代表在这个位置附近,左边比较高,右边比较低,就把 w 的值变大,就可以让损失变小;如果算出来的斜率是正的,就代表左边比较低右边比较高,把 w 变小了,w 往左边移,可以让损失的值变小。

    • 我们可以想像说有一个人站在这个地方,他左右环视一下,算微分就是左右环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。这一步的步伐的大小取决于两件事情:

      • 一是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点
      • 二是学习率(learning rate)η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。
      • 这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)
    • 停下的两种情况:

      • 一种情况是达到设定计算微分的上限次数,更新次数也是一个超参数
      • 另外一种理想的停下来的可能是,当不断调整参数,调整到一个地方,它的微分的值就是这一项,算出来正好是 0 的时候,如果这一项正好算出来是 0,0 乘上学习率 η 还是 0,所以参数就不会再移动位置
    • 梯度下降有时会存在一个问题,找到的是局部最小值,没有找到全局最小值(事实上在做梯度下降的时候,真正面对的难题不是局部最小值,而是鞍点和梯度消失,以及模型的过拟合)

      image-20240827202805247

      多元微积分里,一个函数的鞍点是指一个既不是局部最小值也不是局部最大值的临界点。在二维情况下,如果在一个点附近,一个函数在某个方向上是凹的(向下弯曲),而在另一个方向上是凸的(向上弯曲),那么这个点就被称为鞍点。在高维度的空间里,遇到鞍点的概率实际上比遇到局部最小值的概率要大得多,因此优化算法需要设计成能够逃离这些鞍点。

      梯度消失是指在训练深度神经网络时,梯度变得非常小以至于权重更新几乎不发生的情况。这个问题通常发生在使用sigmoid函数或tanh函数作为激活函数的深层网络中。当神经网络很深时,反向传播过程中的梯度可能变得非常小,导致前面层的学习速率显著降低,甚至停止学习。这可以通过选择不同的激活函数(如ReLU),或者通过其他技术如批标准化来缓解。

      过拟合是指模型在训练数据上表现得非常好(即误差很小),但在未见过的数据(如测试集)上表现较差的现象。这意味着模型学到了训练数据中的噪声或细节,而没有很好地泛化到新的数据。为了避免过拟合,可以采用多种策略,包括但不限于增加数据量、使用正则化技术(如L1或L2正则化)、提前终止训练(early stopping)、使用dropout等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

if 1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值