Datawhale X 李宏毅苹果书 AI夏令营 入门班笔记1

  1. 机器学习基础

机器学习(MachineLearning,ML)

深度学习(Deep Learning, DL)

机器学习就是让 机器具备找一个函数的能力

假设要找的函数的输出是一个数值,一个 标量(scalar),这种机器学习的任务称为回归。找这个函数的任务称为回归(regression)。

另一个任务是分类(classification),让机器做选择题,这些选项称为类别(class)。从设定好的选项里面选择一个当作输出,该任务称为分类。

结构化学习(structuredlearning),有结构的物体,比如一张图,一篇文章。机器产生有结构的东西称为结构化学习。

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

  1. 写出一个带有未知参数的函数f

b跟w是未知的参数,要通过数据去找出。猜测来自于领域知识(domain knowledge)。

带有未知的参数(parameter)的函数称为模型(model)。

模型在机器学习里面,就是一个带有未知的参数的函数。

特征(feature)x1 是这个函数里面已知的,w跟b是未知的参数。w称为权重(weight),b称为偏置(bias)。

  1. 定义损失(loss),损失也是一个函数。

损失是函数L(b,w),其输入是模型参数 b 跟 w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。

N 代表训验数据的个数,L 是每一笔训练数据的误差e相加以后的结果。L越大,代表现在这一组参数越不好,L越 小,代表现在这一组参数越好。

计算y与ˆ y之间绝对值的差 距,称为平均绝对误差(Mean Absolute Error,MAE)。

y 与 ˆ y 之间平方的差距,为均方误差(Mean Squared Error,MSE)。

交叉熵(cross entropy)

误差表面(error surface)

在等高线图上,越偏红色系,代表计算出来的损失越大, 就代表这一组w跟b越差。如果越偏蓝色系,就代表损失越小,就代表这一组w跟b越好, 拿这一组w跟b,放到函数里面,预测会越精准。

3.解一个最优化

让损失最小的w跟b称为w∗跟b∗代表它们是最好的一组w跟b,可以让损失的值最小。

梯度下降(gradient descent)是经常会使用优化方法。

这一步的步伐的大小取决于两件事情:

• 第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。

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

梯度下降有一个很大的问题,没有找到真正最好的解,没有找到可以让损失最小的w。在 图1.4 所示的例子里面,把w 设定在最右侧红点附近这个地方可以让损失最小。但如果在梯 度下降中,w0是随机初始的位置,也很有可能走到wT 这里,训练就停住了,无法再移动w的 位置。右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(globalminima), 而wT 这个地方称为局部最小值(local minima),其左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点。

Q: 为什么损失可以是负的? A: 损失函数是自己定义的,在刚才定义里面,损失就是估测的值跟正确的值的绝对值。 如果根据刚才损失的定义,它不可能是负的。但是损失函数是自己决定的,比如设置一 个损失函数为绝对值再减100,其可能就有负的。这个曲线并不是一个真实的损失,并 不是一个真实任务的误差表面。因此这个损失的曲线可以是任何形状

把w0 往右移一步,新的位置为w1,这一步的步伐是η乘上微分的结果,即:

隐藏任务

隐藏任务①:找出本篇中形如回归(regression)加粗字体的术语,并用自己的话进行解释,列成表格,与学习群的其他小伙伴讨论你的理解和搜索到的相关案例。

回归

regression

归分析是一种统计学方法,用于确定一个或多个因变量和一个或多个自变量之间的定量关系,然后用它们来预测未知数据的值。回归分析可分为一元回归和多元回归,简单回归和多重回归,线性回归和非线性回归。

分类

classification

做选择题

类别

class

选择项

结构化学习

structured learning

有结构的物体,比如一张图,一篇文章

领域知识

domain knowledge

对这个问题本质上的了解

模型

model

带有未知的参数(parameter)的函数

特征

feature

已知的

权重

weight

偏置

bias

损失

loss

预测值与实际值之间的误差

平均绝对误差

Mean Absolute Error,MAE

均方误差

Mean Squared Error,MSE

交叉熵

cross entropy

是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性

误差表面

error surface

  • 等高线:在等高线图上,每条曲线代表一个常数值的损失函数。换句话说,曲线上任意两点处的损失函数值相同。

  • 误差表面:整个图形描绘了所有可能参数组合下损失函数的值。在三维空间中,这表现为一个表面,其中最低点通常对应着最小化损失函数的最佳参数设置。

梯度下降

gradient descent

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

学习率

learning rate

学习率是机器学习算法中的一个参数,用来控制模型在每次迭代中对数据学习的速率。它表示模型每次更新参数时改变的量的大小。学习率越小,模型对数据的学习速度越慢,但可以降低其过拟合的风险;学习率越大,模型对数据的学习速度越快,但容易导致过拟合或者不稳定。

超参数

hyperparameter

超参数是机器学习算法中的一种参数,它通常是在算法运行之前设置的。与模型学习时自动获得的参数不同,超参数在运行模型之前必须由数据科学家或开发者选择并设置。一些常见的超参数包括学习率、正则化参数、分类器种类等。超参数的选择往往会影响模型的性能和准确度,因此需要进行反复的试验和调整。

全局最小值

globalminima

损失最小的地方

局部最小值

local minima

左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点

隐藏任务②:整理出本篇中所有的公式,手动摘录,并尝试理解。

机器学习函数

损失L函数

平均绝对误差(Mean Absolute Error,MAE)

均方误差(Mean Squared Error,MSE)

在w=w0,b=b0 的位置,计算w对L的微分,计算b对L的微分

把w0 减掉学习率乘上微分的结果得到w1,把b0 减掉学习率乘上微分的结果得到b1

隐藏任务③:找出机器学习找函数的3个步骤!并查找资料,交叉佐证这些步骤。

机器学习中的找函数三步骤可以概括为:

  1. 定义模型:选择一个模型并初始化其参数。

  2. 定义损失函数:定义一个损失函数来量化模型预测的准确性。

  3. 优化:使用优化算法来最小化损失函数,从而找到最佳的模型参数。

https://blog.csdn.net/lijunhcn/article/details/134548621

隐藏任务④:归纳梯度下降的步骤。

梯度下降是一种优化算法,用于在机器学习和深度学习中找到损失函数的最小值。以下是梯度下降的基本步骤:

  1. 初始化参数

  • 选择模型: 根据问题类型选择一个合适的模型。

  • 初始化参数: 为模型参数选择初始值。这些初始值可以是随机的或其他预先设定的值。

  1. 计算梯度

  • 计算损失函数: 使用当前的参数值计算损失函数的值。

  • 计算梯度: 损失函数关于每个参数的偏导数称为梯度。梯度指向损失函数增加最快的方向,因此我们需要计算负梯度来找到减少损失函数的方向。

  1. 更新参数

  • 选择学习率: 学习率是一个超参数,它控制着每次更新时参数的变化幅度。

  • 更新参数: 使用以下公式更新参数:

迭代

  • 重复步骤 2 和 3: 不断迭代,直到满足某个停止条件。常见的停止条件包括达到最大迭代次数、梯度足够小(即损失函数的变化很小)、损失函数的值低于某个阈值等。

  1. 结束条件

  • 检查停止条件: 如果满足停止条件,则结束迭代过程。否则返回到步骤 2 并继续迭代。

  1. 输出结果

  • 输出最优参数: 最终得到的参数值就是模型的最优解。


示例伪代码

下面是一个简化的梯度下降算法的伪代码示例:

def gradient_descent(X, y, theta, alpha, num_iterations):
    m = len(y)  # 样本数量
    cost_history = [0] * num_iterations  # 保存每次迭代的成本值
    
    for iteration in range(num_iterations):
        # 计算预测值
        hypothesis = X @ theta
        # 计算损失函数的梯度
        loss = hypothesis - y
        gradient = (1/m) * (X.T @ loss)
        
        # 更新参数
        theta = theta - alpha * gradient
        
        # 计算当前损失函数的值
        cost = (1/(2*m)) * np.sum(loss**2)
        cost_history[iteration] = cost
        
    return theta, cost_history

隐藏任务⑤:为什么局部最小是一个假问题,局部最小怎么解决?真正的难题是什么?

在机器学习和深度学习中,局部最小值(local minima)是一个经常被提及的概念,尤其是在讨论优化算法时。过去,人们担心优化算法会在局部最小值处停止,而无法达到全局最小值。然而,随着对高维优化问题理解的加深,局部最小值被视为一个相对次要的问题。下面详细解释为什么局部最小值可能不是一个严重的“假问题”,以及如何解决它,并指出真正的挑战所在。

为什么局部最小是一个假问题

  1. 高维空间中的局部最小值: 在高维空间中,局部最小值实际上是很难形成的。这是因为局部最小值要求函数在所有维度上都是局部最小的,而在高维空间中,这一点很难满足。

  2. 深度学习中的局部最小值: 对于深度学习模型,尤其是深层神经网络,即使模型收敛到一个局部最小值,这个局部最小值往往具有良好的泛化能力。也就是说,即使不是全局最小值,模型的性能仍然可以相当不错。

  3. 鞍点(Saddle Points): 在高维空间中,鞍点比局部最小值更常见。鞍点是梯度为零的点,但它既不是局部最小值也不是局部最大值。鞍点的存在可能导致优化算法陷入停滞状态。

如何解决局部最小值

尽管局部最小值可能不是最大的问题,但仍然有一些策略可以帮助模型跳出局部最小值:

  1. 使用随机梯度下降(SGD): SGD通过每次迭代仅使用一小部分数据来更新模型参数,这种随机性可以帮助模型跳出局部最小值。

  2. 动量(Momentum): 动量技术通过保留一部分上一步的梯度方向,使得优化过程更平滑,有助于克服局部最小值的障碍。

  3. 不同的初始化: 通过多次随机初始化模型参数,可以增加找到全局最小值的机会。

  4. 自适应学习率: 使用如Adam、Adagrad或RMSprop等自适应学习率方法,可以根据历史梯度信息调整学习率,有助于避免陷入局部最小值。

  5. 正则化: 使用正则化技术(如L2正则化)可以减少过拟合的风险,从而间接帮助模型避免陷入局部最小值。

真正的难题

  1. 鞍点(Saddle Points): 在高维空间中,鞍点比局部最小值更常见,它们可能导致优化算法陷入停滞状态。

https://blog.csdn.net/qq_39852676/article/details/106967368

  1. 过拟合(Overfitting): 即使模型收敛到了全局最小值,也可能因过拟合而导致泛化能力差。

  2. 欠拟合(Underfitting): 如果模型太简单,它可能无法捕获数据中的复杂模式,导致欠拟合。

  3. 计算资源: 训练大规模模型需要大量的计算资源和时间。

  4. 模型设计: 构建一个既能准确建模又能高效训练的模型是一个挑战。

https://www.cnblogs.com/oten/p/17982334

综上所述,尽管局部最小值在过去被认为是一个问题,但在现代深度学习实践中,真正的问题更多地集中在如何处理鞍点、避免过拟合/欠拟合以及合理利用计算资源等方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值