李宏毅机器学习(2021)学习笔记 01

文章目录

  • 前言
  • 正文
    • 机器学习概念
      • 机器学习做什么
      • 机器学习分类
      • 机器学习怎么做?
        • 第一步:设定模型
        • 第二步:在训练数据上定义损失函数
        • 第三步:寻找最优参数
        • 第四步:在测试数据上测试模型
  • 总结

前言

简单写一下,首先记录两个问题:为什么看机器学习教程?为什么写这个博客?

  • 第一,论文要用。
  • 第二,巩固、梳理以及方便复习,另外,大家都说程序员写博客用处很大,借这个机会稍作尝试。

然后大概说一下我对博客内容结构的初步的构想:

  • 每一篇博客记录一期李宏毅老师的一期视频链接在这里(需要)。
  • 时不时可能记录一下我自己的感悟(关于机器学习教程或博客书写等)

正文

第一期视频主要用预测本频道观看人数这个例子,引入线性回归模型这个最简单的机器学习算法,并通过这个例子介绍机器学习的相关概念、流程和思想等。

这篇笔记接下来的部分结构如下:

  • 机器学习做什么、分类。
  • 机器学习怎么做——以 预测本频道观看人数为例。

机器学习概念

机器学习做什么

机器学习做的事情用三个字概括即:找函数

尽管如今的机器学习领域,各类模型层出不穷,试图解决各类问题,但一言以蔽之,所有模型在做的都是找函数这件事。

怎么理解找函数?举几个例子:

  • 语音识别问题。给定一组语音讯号,我们希望输出“你好”或是“再见”。在这里,机器学习做的事情就是找到一个函数f(信号),使得其输出值为对应的“你好”或“再见。
  • 图像识别问题。给定一张图片,我们希望输出图片是“猫”还是“狗”。这里,机器学习做的事情就是找到一个函数f(图片),使得输出值是“猫”或是“狗”。
  • alpha狗。我们希望人工智能可以和人类下围棋,这里机器学习实质上做的事情是输入一个棋局,输出下一步落在哪里。即找到函数f(棋局),使得输出是落子位置。

机器学习分类

以上几个例子应该说清楚了何谓机器学习就是找函数,那么同样是找函数,机器学习又可以分成哪几类呢?

  • 回归问题。即函数输出值是连续的数值,如预测pm2.5.
  • 分类问题。给定若干选项,我们的函数输出正确的那个。如垃圾邮件识别(选项有“是”和“不是”)。
  • 黑暗大陆,结构学习(structured learning)。在这里函数做的不是识别或是预测,而是生成若干有结构的内容(如文档或图片)。

关于这三个列别,补充一点:第三个类别,即结构学习,是机器学习领域非常难的问题,也是非常前沿的问题,所以李宏毅老师称之为黑暗大陆。

机器学习怎么做?

知道了机器学习的任务是找函数,我们应该怎么进行机器学习,机器学习的流程又有哪些?李宏毅老师以一个例子做了说明。

再介绍例子之前,先抽象地介绍一下机器学习的四个步骤(第四个步骤是我加的,李宏毅老师ppt上只有前三个,但他做了第四个):

  1. 写一个有未知参数(unknown parameters)的函数。这个函数实际上就是俗称的模型(model)
  2. 定义一个损失函数(Loss)。该函数使用已知的数据(train data),来衡量模型在train data的表现,其值越大,则模型的效果越差。对于损失函数,其自变量是模型中的未知参数,即其衡量同一模型、不同参数的效果。
  3. 优化。寻找一个参数组合,使得损失函数的值最小。常用的方法是梯度下降法
  4. 测试。在测试数据上,验证模型效果。所谓测试数据,即没用来训练的数据。

接下来在例子中具体讲解四个步骤如何实现。

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^iyi
e i = ( y ^ i − y i ) 2 e_i = \left( \hat{y}_i - y_i \right)^2 ei=(y^iyi)2

无论选择上述哪一种计算方法,最终损失函数的形式都如下所示:
L = 1 N ∑ e i L = \frac{1}{N}\sum{e_i} L=N1ei

第三步:寻找最优参数

这一步牵涉到超参数(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

  1. 随机选择初始值 w 0 w_0 w0
  2. 计算 L L L对参数的偏导数: ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w}|_{w=w_0} wLw=w0
  3. 利用偏微分,计算新的 w w w。计算方法是 w i = w i − 1 − η ∂ L ∂ w ∣ w = w i − 1 w_i = w_{i-1} - \eta\frac{\partial L}{\partial w}|_{w=w_{i-1}} wi=wi1ηwLw=wi1,其中 η \eta η叫做学习率,决定 w w w这一次更新的“步伐”,是一个超参数(hyperparameter)
  4. 当下列条件满足一个的时候结束上述操作,否则回到2继续计算偏微分:条件一,导数为0(很少出现);条件二,不想训练了(即一开始设定好训练多少轮就停下来,这里训练多少轮也是一个超参数)。

上述四步中,第二步和第三步就是梯度下降算法。即每一次更新都要沿着梯度方向,这是一种典型的贪心算法。

第四步:在测试数据上测试模型

最后,利用已经得到的模型参数,在没有使用的2021年数据上进行测试即可。

在这里,李宏毅老师发现2021年的数据每隔7天有一次低谷,分析原因是因为周末大家不学机器学习,因此如果把过去七天的数据都纳入考虑,可能效果会更好,尝试后确实如此,这也算是一点小技巧吧。

总结

这期视频主要借预测频道观看人数这个例子,简要介绍了什么是机器学习和机器学习的基本流程。

机器学习的核心工作就是找函数,对于一种输入,我们要找到一个相应的函数,输出我们想要的结果。机器学习的流程主要有四步:首先,设定带有未知参数的函数,即选择一个模型;其次,在训练数据上定义损失函数,以衡量未知参数的效果;再次,优化损失函数,找到使得损失函数最小的参数组合;最后,利用已经确定了最优参数组合的函数,在测试数据上测试预测效果。

这期视频还牵涉到了一些机器学习的基本概念或术语。如回归分类结构学习训练数据测试数据超参数梯度下降法等等,其相关定义在正文中已有,此处不再赘述。

你可能感兴趣的:(学习,人工智能)