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

667 阅读9分钟

这是我参与更文挑战的第 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线性模型