深度学习1轻松入门机器学习:机器学习基础(Datawhale X 李宏毅苹果书 AI夏令营)

1导论

一句话说明什么是机器学习:机器学习就是让
机器具备找一个函数的能力。

根据要找的这个一个的函数的不同,我们把机器学习分为三个不同的类别:回归、分类、结构化学习
回归:要找的函数的输出是一个数值,一个
标量(scalar)。
分类:人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定
好的选项里面选择一个当作输出。

注意:分类不一定只有两个选项,也 可以有多个选项

结构化学习:不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写
一篇文章。

1.1案例学习

以视频的点击次数预测为例介绍下机器学习的运作过程。
找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。
机器学习找函数的过程,分成 3 个步骤。

第一个步骤是写出一个带有未知参数的函数 f

其能预测未来观看次数。比如将函数写成: y = b + w x 1 y = b + wx_{1} y=b+wx1
b 跟 w 是未知的参数,它是准备要通过数据去找出来的, 只是隐约地猜测。猜测往往来自于对这个问题本质上的了解,即领域知识(domain knowledge)。机器学习就需要一些领域知识。
带有未知的参数(parameter) 的函数称为模型(model)
w 称为权重(weight), b 称为偏置(bias)

第 2 个步骤是定义损失(loss),损失也是一个函数。

损失是函数 L(b, w),其输入是模型参数 b 和w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。
真实的值称为标签(label),它高估了这个频道
可能的点击次数,可以计算一下估测的值 yˆ 跟真实值 y 的
差距 e

把每一天的误差,通通加起来取得平均,得到损失
L
在这里插入图片描述
N 代表训验数据的个数,即 3 年来的训练数据,就 365 乘以 3,计算出一个 L。
L 是每一笔训练数据的误差 e 相加以后的结果。 L 越大,代表现在这一组参数越不好, L 越小,代表现在这一组参数越好。
估测的值跟实际的值之间的差距,其实有不同的计算方法,计算 y 与 yˆ 之间绝对值的差距,如式 (1.6) 所示,称为平均绝对误差(Mean Absolute Error, MAE)
e = |yˆ − y| (1.6)
如果算 y 与 yˆ 之间平方的差距,如式 (1.7) 所示,则称为均方误差(Mean Squared Error, MSE)
e = (ˆ y − y)2 (1.7)
有一些任务中 y 和 yˆ 都是概率分布,这个时候可能会选择交叉熵(cross entropy)。(后面会讲到)
如图 所示的等高线图,就是试了不同的参数,
计算它的损失,画出来的等高线图称为误差表面(error surface)。这是机器学习的第 2 步。误差表面

第 3 步:解一个最优化的问题。

找一组w 跟 b,这个可以让损失最小的 w 跟 b 称为 w∗ 跟 b∗ 代表它们是最好的一组 w 跟 b,可以让损失的值最小。 梯度下降(gradient descent) 是经常会使用优化的方法。为了要简化起见,先假设只有一个未知的参数 w, b 是已知的。 w 代不同的数值的时候,就会得到不同的损失,
怎么样找一个 w 让损失的值最小呢? 如图所示,首先要随机选取一个初始的点 w0。在这里插入图片描述
接下来计算∂L/ ∂w |w=w0,在 w 等于 w0 的时候,参数 w 对损失的微分。
我们可以想像说有一个人站在这个地方,他左右环视一下,算微分就是左右
环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。
这一步的步伐的大小取决于两件事情:
• 第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。
• 另外, 学习率(learning rate) η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)。
在这里插入图片描述
梯度下降有一个很大的问题,没有找到真正最好的解,没有找到可以让损失最小的 w。在图所示的例子里面,把 w 设定在最右侧红点附近这个地方可以让损失最小。但如果在梯度下降中, w0 是随机初始的位置,也很有可能走到 wT 这里,训练就停住了,无法再移动 w 的位置。右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(global minima),而 wT 这个地方称为局部最小值(local minima) ,其左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点。在这里插入图片描述
在深度学习框架里面,比如 PyTorch 里面,算微分都是程序自动帮计算的。就是反复同样的步骤,就不断的更新 w 跟 b,期待最后,可以找到一个最好的 w, w∗ 跟最好的 b∗. 在这里插入图片描述

1.2线性模型

我们在上一步已经找到了一个是最小的函数。但是我们观察数据,我们可以发现具有周期性的规律。这个观看视频的数据大概成一个7天的涨落规律,因此我们可以考虑更精确的函数模型。
一开始,对问题完全不理解的时候,胡乱写一个
y = b + wx1 并没有做得特别好。接下来我们观察了真实的数据以后,得到一个结论是,每隔 7 天有一个循环。所以要把前 7 天的观看人次都列入考虑,写了一个新的模型:
在这里插入图片描述
经过对函数的寻找,我们找到了如下的最优解。在这里插入图片描述
我们可以考虑继续隔28天,隔56天,最终我们发现,隔56天在训练数据上损失是 320,在没看过的数据上损失还是 460。考虑更多天没有办法再更降低损失了。看来考虑天数这件事,也许已经到了一个极限。这些模型都是把输入的特征 x 乘上一个权重,再加上一个偏置就得到预测的结果,这样的模型称为线性模型(linear model)。接
下来会看如何把线性模型做得更好。

1.2.1 分段线性曲线

考虑到之前函数的效果已经达到了极限,所以需要写一个更复杂的、更有灵活性的、有未知参数的函数。红色的曲线可以看作是一个常数再加上一群HardSigmoid函数在这里插入图片描述

HardSigmoid函数的特性是当输入的值,当x轴的值小于某一个阈值(某个定值)的时候,大于另外一个定值阈值的时候,中间有一个斜坡。所以它是先水平的,再斜坡,再水平的。
所以红色的线可以看作是一个常数项加一大堆的蓝色函数(HardSigmoid)。常数项设成红色的线跟x轴的交点一样大。常数项怎么加上蓝色函数后,变成红色的这一条线?
蓝线1函数斜坡的起点,设在红色函数的起始的地方,第2个斜坡的终点设在第一个转角处,让第1个蓝色函数的斜坡和红色函数的斜坡的斜率是一样的,这个时候把0+1就可以得到红色曲线左侧的线段。接下来,再加第2个蓝色的函数,所以第2个蓝色函数的斜坡就在红色函数的第一个转折点到第2个转折点之间,让第2个蓝色函数的斜率跟红色函数的斜率一样,这个时候把0+1+2,就可以得到红色函数左侧和中间的线段。接下来第3个部分,第2个转折点之后的部分,就加第3个蓝色的函数,第3个蓝色的函数坡度的起始点设的跟红色函数转折点一样,蓝色函数的斜率设的跟红色函数斜率一样,接下来把0+1+2+3全部加起来,就得到完整红色的线。
所以红色线,即分段线性曲线(piecewiselinearcurve)可以看作是一个常数,再加上一堆蓝色的函数。分段线性曲线可以用常数项加一大堆的蓝色函数组合出来,只是用的蓝色函数不一定一样。要有很多不同的蓝色函数,加上一个常数以后就可以组出这些分段线性曲线。
如果分段线性曲线越复杂,转折的点越多,所需的蓝色函数就越多。在这里插入图片描述
只要有足够的蓝色函数把它加起来,就可以变成任何连续的曲线。在这里插入图片描述

假设 x 跟 y 的关系非常复杂也没关系,就想办法写一个带有未知数的函数。直接写 Hard Sigmoid 不是很容易,但是可以用一条曲线来理解它,用 Sigmoid 函数来逼近 Hard Sigmoid,如图所示。 Sigmoid 函数的表达式为在这里插入图片描述
在这里插入图片描述
调整这里的 b、 w 和 c 可以制造各种不同形状的 Sigmoid 函数,用各种不同形状的 Sigmoid函数去逼近 Hard Sigmoid 函数。
在这里插入图片描述

我们可以不只用一个特征 x1,可以用多个特征代入不同的 c, b, w,组合出各种不同的函数,从而得到更有灵活性(flexibility) 的函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把 W 的每一列或每一行“拼”成一个长的向量,把 b, cT, b
” 拼” 上来,这个长的向量直接用 θ 来表示。所有的未知的参数,一律统称 θ。
接下来计算每一个未知的参数对 L 的微分,得到向量 g,即可以让损失变低的函数
g = ∇L (θ0)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现上有个细节的问题,实际使用梯度下降的时,会把 N 笔数据随机分成一个一个的批量(batch) ,一组一组的。
把所有的批量都看过一次,称为一个回合(epoch) ,每一次更新参数叫做一次更新。
在这里插入图片描述

1.2.2 模型变形

Hard Sigmoid 可以看作是两个修正线性单元(Rectified Linear Unit, ReLU) 的加总, ReLU 的
图像有一个水平的线,走到某个地方有一个转折的点,变成一个斜坡,其对应的公式为
c ∗ max(0, b + wx1)
2 个 ReLU 才能够合成一个 Hard Sigmoid。要合成 i 个 Hard Sigmoid,需要 i 个 Sigmoid,如果 ReLU 要做到一样的事情,则需要 2i 个 ReLU.

Sigmoid 或 ReLU 称为激活函数(activation function)。

ReLU函数
激活函数
我们使用不同模型,对对我们观看次数的预测效果。
在这里插入图片描述
改进模型

Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络
(neural network)
。人脑中就是有很多神经元,很多神经元串起来就是一个神经网络,跟人脑是一样的。人工智能就是在模拟人脑。神经网络不是新的技术, 80、 90 年代就已经用过了,后来为了要重振神经网络的雄风,所以需要新的名字。每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习。
所以人们把神经网络越叠越多越叠越深, 2012 年的 AlexNet 有 8 层它的错误率是 16.4%,两年之后 VGG 有 19 层,错误率在图像识别上进步到 7.3 %。这都是在图像识别上一个基准的数据库(ImageNet)上面的结果,后来 GoogleNet 有 22 层,错误率降到 6.7%。而残差网
络(Residual Network, ResNet) 有 152 层,错误率降到 3.57%。刚才只做到 3 层,应该要做得更深,现在网络都是叠几百层的,深度学习就要做更深。但4 层在训练数据上,损失是 100,在没有看过 2021 年的数据上,损失是 440。在训练数据上,3 层比 4 层差,但是在没看过的数据上, 4 层比较差, 3 层比较好,如图所示。在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)。在这里插入图片描述在这里插入图片描述
过拟合

1.2.3 机器学习框架(总结)

在这里插入图片描述

给一些问答

问题1:在梯度下降法中,如何避免陷入局部最小值?

在梯度下降法中,避免陷入局部最小值的关键在于初始化参数的选择和调整学习率。具体来说:

随机初始化:选择一个随机的初始参数 w0和b0
,这样可以减少初始点靠近局部最小值的可能性。
学习率调整:学习率
η 的选择非常重要。较大的学习率可以使参数更新更快,但也更容易跳过全局最小值。较小的学习率虽然更新缓慢,但可以更稳定地逼近全局最小值。通常需要通过实验来找到合适的学习率。
批量梯度下降:在实际应用中,通常使用批量梯度下降(Batch Gradient Descent),每次更新参数时使用当前批次的数据计算梯度。这种方法可以在每次更新中考虑更多的数据,减少陷入局部最小值的风险。
动量(Momentum):动量是一种改进的梯度下降算法,它通过加速梯度的方向来帮助模型跳出局部最小值。动量的实现方法是在梯度更新时加入上一次梯度的一部分,从而在梯度方向上产生一个“惯性”效应。
问题2:激活函数在模型中的作用是什么?

激活函数在模型中的作用主要有以下几点:

引入非线性:激活函数的主要作用是为模型引入非线性特性。线性模型无论怎么调整,其输出始终是线性的,无法捕捉复杂的数据关系。通过引入激活函数,模型可以学习到非线性关系,从而更好地拟合复杂的数据分布。
控制输出范围:某些激活函数(如sigmoid函数)可以将输出限制在一个特定的范围内(如0到1),这对于某些任务(如概率估计)非常有用。
增加模型复杂度:通过堆叠多个隐藏层并使用不同的激活函数,可以显著增加模型的复杂度和表达能力,使其能够处理更加复杂的数据关系。
问题3:深度神经网络在训练过程中如何解决过拟合问题?

深度神经网络在训练过程中解决过拟合问题的常见方法包括:

数据增强:通过对训练数据进行随机变换(如旋转、平移、缩放等),增加训练数据的多样性,从而提高模型的泛化能力。
正则化:在损失函数中加入正则化项(如L1正则化或L2正则化),惩罚模型的复杂度,防止模型过度拟合训练数据。
早停(Early Stopping):在训练过程中,监控验证集的损失值,当验证集的损失值连续若干次不再下降时,提前停止训练,避免模型在训练数据上过度拟合。
Dropout:在训练过程中,随机丢弃一部分神经元的输出,从而减少神经元之间的依赖关系,增加模型的鲁棒性。
多层感知器(MLP):通过增加隐藏层的数量和每层的神经元数量,提高模型的表达能力和学习能力,从而更好地捕捉复杂的数据关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值