2. 机器学习2021:机器如何找一个函式

这是我参与更文挑战的第 2 天,活动详情查看: 更文挑战

本篇文章是李宏毅老师的机器学习课程笔记,课程传送门 ?。

【機器學習 2021】預測本頻道觀看人數 (上) – 機器學習基本概念簡介

身为一个 youtuber,他在意的就是这个频道的流量,这样他才会知道他可以获利多少。所以我们有没有可能找一个函式,他的输入是 youtube 后台的资讯,输出是这个频道隔天的总点阅率总共有多少。

image.png
那接下来我们怎么找出这个函式呢?机器学习找这个函式的过程分成三个步骤,我们就用 Youtube 频道点阅人数预测这件事情来说明这三个步骤是怎么运作的。

第一步:写出一个带有未知参数的函式

简单来说就是,我们先猜测一下我们打算找的这个函式 F,它的数学式到底长什么样子。

举例来说,我们这边先做一个最初步的猜测,写成这个样子。

image.png

备注:
Function 我们就叫做 Model;
b, w 在文献中通常称为 Parameter,中文翻成参数,w 我们叫它 Weight,b 我们叫它 Bias;
xₗ 是我们已知的前一天的点阅的总人数,叫做 Feature;
所以我们常常听到有人说模型 Model,在机器学习里面就是一个带有未知的 Parameter 的 Function。

其中,y 是我们准备要预测的东西,假设是今天的观看人数,xₗ 是这个频道前一天总共观看的人数。b 跟 w 是未知的参数,还不知道 w 跟 b 应该是多少,我们只是猜测可能是这样。为什么会有这个猜测呢?这个猜测往往就来自于你对这个问题本质上的了解,也就是 Domain Knowledge。

所以我们怎么知道这个能够预测未来点阅次数的函式 F 它就一定是前一天的点阅次数乘上 w 再加上 b 呢?也许我们觉得今天的点阅次数总是会跟昨天的点阅次数有点关联,所以我们把昨天的点阅次数乘上一个数值,但是总是不会一模一样,所以再加上一个 b 做修正,当作是对于今天点阅次数的预测。

第二步:定义 Loss

Loss 也是一个 Function,这个 Function 它的输入是我们 Model 里面的参数,也就是我们上面的 b 跟 w,它输出的值代表这一组未知的参数设定某一个数值的时候,这数值好还是不好。

举一个具体的例子,假设现在我们给未知的参数的设定是 b = 0.5kw = 1 ,那我们拿来预测未来的点阅次数的函式就变成下面的样子了。

image.png

那这个 Loss 怎么计算呢?这个我们就要从训练资料来进行计算,在这个问题里面,我们的训练资料是这一个频道过去的点阅次数。举例来说,从 2017 年到 2020 年每天的点阅次数都知道,接下来我们就可以计算 Loss,我们把 2017 年 1 月 2 号的点阅次数代入这一个函式里面看它预测出来的结果是多少。

image.png

所以根据这一个函式,如果 1 月 2 号是 4.9k 的点阅次数,那隔天应该就是 5.4k 的点阅次数,但隔天实际上的点阅次数是 7.5k,它是低估了可能的点阅人数计算一下这个差距并取它的绝对值,用 e2 来表示,值为 2.1k。

那我们有 2017 年 1 月 1 号到 2020 年 12 月 31 号总共三年的资料,这个真实的值叫做 Label。

备注:
机器学习都需要 Label,Label 指的就是正确的数值。

同样的,根据 1 月 2 号的点阅次数来预测 1 月 3 号的点阅次数,并计算出和真实值之间的差距的绝对值。用同样的方法可以算过这三年来每一天的预测的误差,每一天的误差都用小 e 表示。

image.png
然后将它们加起来然后取得平均,就得到了我们的 Loss。

image.png

备注:
大 N 代表训验资料的个数;
大 L 就是 Loss,L 越大,表示这一组 w,b 越不好;反之越好。

其实 e 是有不同计算方法的,在刚才的例子里面,我们是通过计算 y 跟 ŷ 之间绝对值的差距,这一种计算差距的方法得到的 Loss 叫 mean absolute error,缩写是 MAE。
如果是通过计算 y 跟 ŷ 相减以后的平方,就叫 mean square error,缩写是 MSE。

image.png
MSE 跟 MAE 其实有非常微妙的差别,通常根据需求和对任务的理解来衡量用哪一种方法。

第三步:Optimization 最佳化

接下来我们进入机器学习的第三步,第三步要做的事情是解一个最佳化的问题。拿上面的例子来讲,就是找一个 w 跟 b,可以让我们的 Loss 的值最小,我们称它们为 w* 跟 b*,表示他们是最好的一组 w 跟 b。如下图试着试了不同的参数,然后计算它的 Loss,画出来的这个等高线图叫做 Error Surface,中文可以称为误差曲面。

image.png
那这要怎么实现呢?在这里,我们所用 Optimization 的方法叫做 Gradient Descent,翻译成中文就是梯度下降。

为了简化起见,我们先假设我们未知的参数只有一个,就是 w。当把 w 代入不同的数值的时候就会得到不同的 Loss,这一条曲线就是 Error Surface,只不过因为只有一个参数,所以画出来的 Error Surface 是一维的。

1. 选初始的点 w₀

首先随机选取一个初始的点 w₀,接下来计算当 w = w0 的时候 w 对 Loss 的微分是多少,也就是它的斜率。

image.png

如果斜率是负的就代表左边比较高,右边比较低,所以我们为了将 Loss 变小就将它向右移动,即把 w 的值变大;反正则向右移动,即把 w 的值变小。除了斜率以外,还有另外一个东西会影响步伐大小,这个东西我们这边用 η 来表示,称为 learning rate,中文为学习速率。可以看出,如果 η 比较大,Loss 的更新就比较快,反之则比较慢。这个 learning rate 是我们自己设定的,在机器学习中我们称之为 hyperparameters,中文可以叫做超参数。

2. 计算得到 w1

要把 w⁰ 往右移一步得到 w¹,用数学表达式表示就是,把 w⁰ 减掉 η 乘上微分的结果得到 w¹。

image.png
接下来就是反复做同样的操作,不断的移动 w 的位置。

3. 什么时候停下来?

移动 w 的目的是为了找出最小的 Loss,那最终往往有两种状况会使移动停下来。

  1. 第一种状况是失去耐心了。假设我们设定更新 100 万次后就不更新了,那参数更新到指定次数后就不更新了。
  2. 还有另外一种理想上停下来的可能,就是它的微分值算出来正好是 0,这时候 wT = WT+1 ,我们的参数不会再移动位置。

image.png

Local Minima 局部最小值是一个假问题

由上图我们发现,参数停下来的位置 wT 似乎没有找到最小的 Loss,还有一个更小的 Global Minima,但实际上这是一个假问题,先相信这个事实,之后会解释其中的原理。

多个参数

刚才举的是只有一个参数的例子,实际上我们的模型有 w 跟 b 两个参数,原理和一个参数完全一样。都给它随机的初始的值 w⁰ 跟 b⁰,然后分别求 w 和 b 跟 Loss 的微分,计算之后按上面的步骤更新 w 和 b 的值,最后可以找到一个最好的 w* 跟最好的 b*,使得我们的 Loss 最小。

image.png

总结与修正

到这里,我们就掌握了机器学习的三个步骤,它们合起来就叫做训练。

image.png
我们在已知答案的数据上去计算 Loss,就是假装我们不知道隔天的观看次数,然后拿这一个函式来进行预测,去计算它的误差。但是我们真正要在意的是我们不知道的未来的观看的次数是多少,接下来要做的事情就是拿这个函式去真的预测一下未来的观看次数。

预测后得到一个平均误差,用 L’ 来表示。可以发下这一个 model 其实就是拿前一天的数据去预测,看起来蓝色的线就是把红色的线往右平移了一天而已。仔细观察红色折线,发现它每隔七天为一个周期,周期内总有两天特别低,所以说我们这个只看一天的模型显然很烂。

image.png
如果我们的模型是参考前七天的资料,也许预测的会更准,所以我们要修改下模型。通常一个模型的修改,往往来自于对这个问题的理解,也就是 Domain Knowledge。

所以一开始,我们对问题完全不理解的时候,就胡乱写一个 y=b+wx₁,并没有做得特别好;接下来我们观察了真实的数据以后得到一个结论,每隔七天有一个循环,所以我们应该要把前七天的观看人次都列入考虑,写了一个新的模型。

image.png

备注:
下标 j 代表是几天前,j 等于 1 到 7,也就是从一天前、两天前,一直共七天前的资料

我们拿七天前的资料通通乘上不同的 Weight 并加起来,再加上 Bias 得到预测的结果。当然也可以考虑 28 天即前一个月每一天的观看人次去预测隔天的观看人次。

像上面这样把 Feature 乘上一个 Weight,再加上一个 Bias 就得到预测的结果,这样的模型有一个共同的名字,叫做 Linear Model。接下来会尝试怎么把 Linear Model 做得更好。

术语合集

英文 中文
Model 模型
Parameter 参数
Weight 权重
Bias 偏差
Domain Knowledge 领域知识
Loss 损失函数
MAE(mean absolute error) 平均绝对误差
MSE(mean square error) 均方误差
Optimization 最佳化
Error Surface 误差曲面
Gradient Descent 梯度下降
Local Minima 局部最小值
Global Minima 全局最小值
Linear Model 线性模型
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享