Datawhale X 李宏毅苹果书 AI夏令营(入门Task1)

第1章 机器学习基础

机器学习介绍

        机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。 随着要找的函数不同,机器学习有不同的类别。

        假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。比如,使用算法预测明天气温(摄氏度/华氏度)。

        另一个常见的任务是分类(classification)。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。比如,检测一封邮件是否为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。

        在机器学习领域里面,除回归跟分类外,还有结构化学习(structured learning)。机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。

1.1 案例学习

机器学习的运作过程

        以视频的点击次数预测为例介绍下机器学习的运作过程。假设后台可以看到很多相关的信息,比如:每天点赞的人数、订阅人数、观看次数。根据一个频道过往所有的信息可以预测明天的观看次数。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。 机器学习找函数的过程,分成 3 个步骤。

第1步,确定模型。

        写出一个带有未知参数的函数 f,其能预测未来观看次数。比如将函数写成

y=b+wx_{1}

        其中,y 是准备要预测的东西,就假设是今天(2 月 26 日)总共的观看次数。x^{1} 是前一天(2 月 25 日)总共的观看次数, y 跟 x^{1} 都是数值,b 跟 w 是未知参数,需通过数据求出。

        带有未知的参数(parameter)的函数称为模型(model),在机器学习里就是一个带有未知的参数的函数,特征(feature)x^{1} 是已知的,w 称为权重(weight),b 称为偏置(bias)。

第2步,定义损失(loss)函数。

        这个函数的输入是模型里面的未知参数,定义损失为函数 L\left ( b,w\right),其输入是模型参数 b 跟wL 输出的值越大,代表现在这一组参数越不好;越小,代表现在这一组参数越好。

        估测的值跟实际的值之间的差距,其实有不同的计算方法,计算 y 与 \hat{y} 之间绝对值的差距,如式所示,称为平均绝对误差(Mean Absolute Error,MAE)。

e=\left | \hat{y}- y\right |

        如果算 y 与 \hat{y} 之间平方的差距,则称为均方误差(Mean SquaredError,MSE)。

e=\left ( \hat{y}-y \right )^{2}

通过实际数据可得到不同的 w 跟 b 的组合,就可以画出如图所示的等高线图。

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

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

        梯度下降(gradient descent)是经常会使用优化的方法,优化过程如图所示。

(1)随机选取一个初始的点 w^{0}

(2)计算微分  \frac{\partial L }{\partial w}|_{w=w^{0}}。 计算在 w^{0} 处误差表面的切线斜率,也就是这一条蓝色的虚线。

        如果这一条虚线的斜率是负的,如果左边比较高右边比较低的话,就把 w 的值变大,就可以让损失变小如果算出来的斜率是正的,代表左边低右边高,就把 w 变小w 往左边移,可以让损失的值变小。这个时候就应该把 w 的值变小。

        然后,把 w^{0} 往右移一步,新的位置为 w^{1},这一步的步伐是 \eta 乘上微分的结果,即:

w^{1}\leftarrow w^{0}-\eta \frac{\partial L}{\partial w}|_{w=w^{0}}

(3)反复进行刚才的操作,计算一下 w^{1} 微分的结果,再决定现在要把 w^{1} 移动多少,再移动到 w^{2},再继续反复做同样的操作,不断地移动 w 的位置,最后会停下来。

梯度下降的问题

        梯度下降有一个很大的问题,没有找到真正最好的解,没有找到可以让损失最小的 w

       如图所示,把 w 设定在最右侧红点附近这个地方可以让损失最小。但如果在梯度下降中,w^0 是随机初始的位置,也很有可能走到 w^T 这里,训练就停住了,无法再移动 w 的位置。

        右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(global minima),而 w^T 这个地方称为局部最小值(local minima)。


        对于,梯度下降方法会有局部最小值的问题,事实上这是一个假问题,原因在于

高维空间:

        在低维度的情况下,局部最小确实可能是一个问题,但在高维空间中(例如深度学习模型的权重空间),局部最小往往是平坦的区域,这些区域在实际应用中可能表现得与全局最小差不多好。

平坦最小值:

        在许多深度学习任务中,权重空间中存在大量的平坦最小值,这意味着即使没有找到全局最小值,找到的一个相对平坦的局部最小值也能使模型表现得很好。

泛化能力: 

        实践中发现,位于非常平坦区域的局部最小值往往具有更好的泛化能力,这意味着它们在未见过的数据上表现更好。

如何解决局部最小问题?

动量方法:

        动量方法可以帮助优化器更快通过平坦区域,并且有助于摆脱一些较浅的局部最小值。

自适应学习率:

        如Adam、RMSprop等,这些方法可以自动调整学习率,帮助优化过程更好地处理不同尺度的变化。

批量归一化:

        批量归一化可以在一定程度上减少内部协变量偏移,从而使得优化更加稳定。

正则化:

        如L1或L2可以帮助防止过拟合,并且可能会引导模型远离不良的局部最小值。

真正的难题是什么?

鞍点

        在高维优化问题中,鞍点比局部最小更常见也更难处理。鞍点是多维空间中的一种特殊点,在某些方向上看起来像是最小值,而在其他方向上则是最大值。现代优化算法需要专门的技术来避免陷入鞍点。

非凸性

        在很多优化问题中,目标函数是非凸的,这就意味着可能存在多个局部最小值,而找到全局最小值非常困难。  


        有两个参数的情况下使用梯度下降,其实跟刚才一个参数没有什么不同。如果一个参数没有问题的话,可以很快的推广到两个参数,具体过程可参考书本第13-14页。梯度下降优化的过程如图所示:

未完待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值