前言
简单写一下,首先记录两个问题:为什么看机器学习教程?为什么写这个博客?
- 第一,论文要用。
- 第二,巩固、梳理以及方便复习,另外,大家都说程序员写博客用处很大,借这个机会稍作尝试。
然后大概说一下我对博客内容结构的初步的构想:
- 每一篇博客记录一期李宏毅老师的一期视频链接在这里(需要翻墙)。
- 时不时可能记录一下我自己的感悟(关于机器学习教程或博客书写等)
正文
第一期视频主要用预测本频道观看人数这个例子,引入线性回归模型这个最简单的机器学习算法,并通过这个例子介绍机器学习的相关概念、流程和思想等。
这篇笔记接下来的部分结构如下:
- 机器学习做什么、分类。
- 机器学习怎么做——以 预测本频道观看人数为例。
机器学习概念
机器学习做什么
机器学习做的事情用三个字概括即:找函数。
尽管如今的机器学习领域,各类模型层出不穷,试图解决各类问题,但一言以蔽之,所有模型在做的都是找函数这件事。
怎么理解找函数?举几个例子:
- 语音识别问题。给定一组语音讯号,我们希望输出“你好”或是“再见”。在这里,机器学习做的事情就是找到一个函数f(信号),使得其输出值为对应的“你好”或“再见。
- 图像识别问题。给定一张图片,我们希望输出图片是“猫”还是“狗”。这里,机器学习做的事情就是找到一个函数f(图片),使得输出值是“猫”或是“狗”。
- alpha狗。我们希望人工智能可以和人类下围棋,这里机器学习实质上做的事情是输入一个棋局,输出下一步落在哪里。即找到函数f(棋局),使得输出是落子位置。
机器学习分类
以上几个例子应该说清楚了何谓机器学习就是找函数,那么同样是找函数,机器学习又可以分成哪几类呢?
- 回归问题。即函数输出值是连续的数值,如预测pm2.5.
- 分类问题。给定若干选项,我们的函数输出正确的那个。如垃圾邮件识别(选项有“是”和“不是”)。
- 黑暗大陆,结构学习(structured learning)。在这里函数做的不是识别或是预测,而是生成若干有结构的内容(如文档或图片)。
关于这三个列别,补充一点:第三个类别,即结构学习,是机器学习领域非常难的问题,也是非常前沿的问题,所以李宏毅老师称之为黑暗大陆。
机器学习怎么做?
知道了机器学习的任务是找函数,我们应该怎么进行机器学习,机器学习的流程又有哪些?李宏毅老师以一个例子做了说明。
再介绍例子之前,先抽象地介绍一下机器学习的四个步骤(第四个步骤是我加的,李宏毅老师ppt上只有前三个,但他做了第四个):
- 写一个有未知参数(unknown parameters)的函数。这个函数实际上就是俗称的模型(model)。
- 定义一个损失函数(Loss)。该函数使用已知的数据(train data),来衡量模型在train data的表现,其值越大,则模型的效果越差。对于损失函数,其自变量是模型中的未知参数,即其衡量同一模型、不同参数的效果。
- 优化。寻找一个参数组合,使得损失函数的值最小。常用的方法是梯度下降法。
- 测试。在测试数据上,验证模型效果。所谓测试数据,即没用来训练的数据。
接下来在例子中具体讲解四个步骤如何实现。
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,所以只能用已知的