简单写一下,首先记录两个问题:为什么看机器学习教程?为什么写这个博客?
然后大概说一下我对博客内容结构的初步的构想:
第一期视频主要用预测本频道观看人数这个例子,引入线性回归模型这个最简单的机器学习算法,并通过这个例子介绍机器学习的相关概念、流程和思想等。
这篇笔记接下来的部分结构如下:
机器学习做的事情用三个字概括即:找函数。
尽管如今的机器学习领域,各类模型层出不穷,试图解决各类问题,但一言以蔽之,所有模型在做的都是找函数这件事。
怎么理解找函数?举几个例子:
以上几个例子应该说清楚了何谓机器学习就是找函数,那么同样是找函数,机器学习又可以分成哪几类呢?
关于这三个列别,补充一点:第三个类别,即结构学习,是机器学习领域非常难的问题,也是非常前沿的问题,所以李宏毅老师称之为黑暗大陆。
知道了机器学习的任务是找函数,我们应该怎么进行机器学习,机器学习的流程又有哪些?李宏毅老师以一个例子做了说明。
再介绍例子之前,先抽象地介绍一下机器学习的四个步骤(第四个步骤是我加的,李宏毅老师ppt上只有前三个,但他做了第四个):
接下来在例子中具体讲解四个步骤如何实现。
YouTube后台可以获得每一天的频道观看人数,现在李宏毅老师准备使用后台数据(即过去的频道观看人数),预测下一天的频道观看人数。
在这个例子中,我们要找到的函数f,输入是历史数据,输出是明天的观看人数。由于是第一期视频,李宏毅老师在这期视频中用的是最基础的线性回归模型,其形式如下:
y = b + w x y = b + wx y=b+wx
解释一下:模型中 y y y 代表被预测变量,即明天的观看人数, x x x 代表历史数据,在这里表示今天的观看人数。 b b b 叫做bias,是一个直接加在模型中的未知参数, w w w 叫做weight,是和 x x x 相乘的未知参数。
补充一下,上述模型是最简单的形式,我们只使用了今天的观看数量这一个历史数据,事实上还可以将昨天的、前天的…等观看数量都考虑进来。
这里先介绍一下什么叫”在训练数据上…“。所谓训练数据,就是 y y y已知的数据,“在训练数据上…“,即用已知的数据 x x x,预测已知的 y y y。这样做的意义是:(1)我们的模型如果能预测未来未知的 y y y,他要先能预测已知的 y y y;(2)我们没有未知 y y y,所以只能用已知的 y y y来进行模型的训练。借用李宏毅老师的比喻,这里我们实际上是在过家家,假装不知道 y y y。
在这个例子中,李宏毅老师用的训练数据是2020年的后台观看数据,由于视频是2022年的,这些2020年的观看数据显然是已知的。更具体地说,训练过程,是使用2020年1月1号的数据,预测2020年1月2号的观看数,然后将这个预测出的观看数和真实的已知数据做比较,从而更新模型。
另外,上文提到的训练数据,在这个例子中是2021年的观看数据。同样,这些数据也是已知的,但是在训练过程中并没有使用,对于模型来说就是“未知”的。在这些数据上做预测,可以判断模型在真正未知的数据上做预测的效果。
有了模型,接下来就要定义损失函数,以便寻找最优参数。上一步定义的模型中,未知参数有两个: b b b 、 w w w ,因此我们的损失函数的“模样”长成这样: L o s s ( b , w ) Loss(b,w) Loss(b,w)。如前文所说,这个函数衡量的是一组参数好还是不好。
由于损失函数是在训练数据上定义并计算的,那么事实上每一个待预测的 y y y,我们都有其真实的数据,又叫做label。因此,损失函数就是用模型预测的值(这里用 y ^ \hat{y} y^ 表示),和label(这里用 y y y表示),来计算预测值和label之间的差距(用 e e e表示),从而衡量这一组参数的好坏。
第i天的预测值(用 y ^ i \hat{y}_i y^i表示)和第i天的真实值(用 y i y_i yi)间的差距 e i e_i ei,计算方法有若干种,这期视频主要介绍两种:
e i = ∣ y ^ i − y i ∣ e_i = \left| \hat{y}_i - y_i \right| ei=∣y^i−yi∣
e i = ( y ^ i − y i ) 2 e_i = \left( \hat{y}_i - y_i \right)^2 ei=(y^i−yi)2
无论选择上述哪一种计算方法,最终损失函数的形式都如下所示:
L = 1 N ∑ e i L = \frac{1}{N}\sum{e_i} L=N1∑ei
这一步牵涉到超参数(hyperparameter的概念,所谓超参数即需要程序员自己决定的参数,和由电脑学习的 w w w, b b b不同。
有了损失函数,接下来我们就要在训练数据上寻找可以使得损失函数最小的参数组合。用数学语言表示为:
w ∗ , b ∗ = a r g M i n L w^* , b^* = argMin L w∗,b∗=argMinL
寻找最优参数的流程可以分为四步,方便起见,这里只考虑 w w w。
上述四步中,第二步和第三步就是梯度下降算法。即每一次更新都要沿着梯度方向,这是一种典型的贪心算法。
最后,利用已经得到的模型参数,在没有使用的2021年数据上进行测试即可。
在这里,李宏毅老师发现2021年的数据每隔7天有一次低谷,分析原因是因为周末大家不学机器学习,因此如果把过去七天的数据都纳入考虑,可能效果会更好,尝试后确实如此,这也算是一点小技巧吧。
这期视频主要借预测频道观看人数这个例子,简要介绍了什么是机器学习和机器学习的基本流程。
机器学习的核心工作就是找函数,对于一种输入,我们要找到一个相应的函数,输出我们想要的结果。机器学习的流程主要有四步:首先,设定带有未知参数的函数,即选择一个模型;其次,在训练数据上定义损失函数,以衡量未知参数的效果;再次,优化损失函数,找到使得损失函数最小的参数组合;最后,利用已经确定了最优参数组合的函数,在测试数据上测试预测效果。
这期视频还牵涉到了一些机器学习的基本概念或术语。如回归、分类、结构学习、训练数据、测试数据、超参数和梯度下降法等等,其相关定义在正文中已有,此处不再赘述。