这次学习我们将会解答:
- 什么是机器学习?什么是它的本质?
- 机器学习中的主要函数有哪些?
- 机器学习的过程分为哪些步骤?
- 什么叫 模型 ?什么叫 标签 ?
- 损失L怎么计算?
- 梯度下降 是什么?它的原理是怎么样的?它有什么不足?
Task 1 《深度学习详解》- 1.1 通过案例了解机器学习
前言——机器学习的基础介绍
一、概念
机器学习 Machine Learning,ML
,顾名思义,机器具备有学习的能力。从本质来讲,机器学习就是让
机器具备找一个函数的能力。
例如:
- 语音识别
该函数的输入是声音信号,输出是这段声音信号的内容。 - 图像识别
图像识别函数的输入是一张图片,输出是这个图片里面的内容。 - AlphaGo
机器下围棋需要的就是一个函数,该函数的输入是棋盘上黑子跟白子的位置,输出是机器下一步应该落子的位置。
二、 不同函数
随着要找的函数不同,机器学习有不同的类别。主要函数有以下几种:
-
回归
regression
假设要找的函数的输出是一个数值,一个标量scalar
,这种机器学习的任务称为回归。
举个回归的例子,假设机器要预测未来某一个时间的 PM2.5 的数值。机器要找一个函数 f,其输入是可能是种种跟预测 PM2.5 有关的指数,包括今天的 PM2.5 的数值、平均温度、平均的臭氧浓度等等,输出是明天中午的 PM2.5的数值,找这个函数的任务就称为回归。 -
分类
classiffcation
分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别class
,现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。
举个例子,每个人都有邮箱账户,邮箱账户里面有一个函数,该函数可以检测一封邮件是否为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。 -
结构化学习
structured learning
让机器产生有结构的东西的问题称为结构化学习。
机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写
一篇文章。
1.1 案例学习
机器学习找函数的过程,分成 3 个步骤。分别是:找函数 f f f、定义损失、解一个最优化的问题。
接下来,我们以视频的点击次数预测为例介绍下机器学习的运作过程。假设有人想要通过视频平台赚钱,他会在意频道有没有流量,这样他才会知道他的获利。假设后台可以看到很多相关的信息,比如:每天点赞的人数、订阅人数、观看次数。根据一个频道过往所有的信息可以预测明天的观看次数。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。
步骤1——写出一个带有未知参数的函数 f f f
第一个步骤是写出一个带有未知参数的函数 f,其能预测未来观看次数。比如将函数写成
y
=
b
+
w
x
1
y = b + wx_1
y=b+wx1
其中,y 是准备要预测的东西,要预测的是今天(2 月 26 日)这个频道总共观看的人,y 就假设是今天总共的观看次数。x1 是这个频道,前一天(2 月 25 日)总共的观看次数,y 跟 x1 都是数值,b 跟 w 是未知的参数,它是准备要通过数据去找出来的,w 跟 b 是未知的,只是隐约地猜测。
- w 称为权重
weight
,b 称为偏置bias
。关于这两个参数的猜测往往来自于对这个问题本质上的了解,即领域知识domain knowledge
。 - 带有未知的参数
parameter
的函数称为模型model
。模型在机器学习里面,就是一个带有未知的参数
的函数,特征feature
x 1 x_1 x1 是这个函数里面已知的,它是来自于后台的信息。
步骤2——定义损失(loss)
第 2 个步骤是定义损失(loss),损失也是一个函数,记作 L ( b , w ) L(b,w) L(b,w) 。 损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。要从训练数据来进行计算损失,在这个问题里面,训练数据是这一个频道过去的观看次数。
在这个例子中,把 2017 年 1 月 1 日的观看次数,代入这一个函数里面,得到:
y
^
=
500
+
1
x
1
\hat{y}= 500 + 1x_1
y^=500+1x1
x
1
x_1
x1 代入
4800
4800
4800,预测隔天实际上的观看次数结果为
y
^
=
5300
\hat{y} = 5300
y^=5300,但真正的结果是
4900
4900
4900,这个函数高估了这个频道可能的点击次数。
现在,我们可以计算一下估测的值
y
^
\hat{y}
y^ 跟真实值
y
y
y 的差距
e
e
e。(目前用取绝对值的方式)
e
1
=
∣
y
−
y
^
∣
=
400
e_1 = |y − \hat{y}| = 400
e1=∣y−y^∣=400
- 真实的值称为标签
label
。
我们不是只能用 1 月 1 日的值,来预测 1 月 2 日的值;也可以用 1 月 2 日的值,来预测 1 月 3日的值。以此类推,我们可以算这 3 年来,每一天的预测的误差
e
e
e,接下来把每一天的误差通通加起来取得平均,则可以得到损失
L
L
L:
L
=
1
N
∑
n
e
n
L=\frac{1}{N}\sum_{n}e_n
L=N1n∑en
其中,N 代表训验数据的个数,即几年来的训练数据,L 是每一笔训练数据的误差 e 相加以后的结果。L 越大,代表现在这一组参数越不好,L 越小,代表现在这一组参数越好。
估测的值跟实际的值之间的差距,其实有不同的计算方法,计算
y
y
y 与
y
^
\hat{ y}
y^ 之间绝对值的差
距,如下式所示,称为平均绝对误差 Mean Absolute Error,MAE
。
e
=
∣
y
^
−
y
∣
e = |\hat{y} − y|
e=∣y^−y∣
如果算
y
y
y 与
y
^
\hat{y}
y^ 之间平方的差距,如下式所示,则称为均方误差 Mean SquaredError,MSE
。
e
=
(
y
^
−
y
)
2
e = (\hat{y}− y)^2
e=(y^−y)2
在我的另一篇笔记中,也有一些关于损失函数的知识点,指路–>3__阿里云天池数据挖掘:二手车交易价格预测——代码分析与相关知识点
另外,我们可以调整不同的 w 和不同的 b,求取各种w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失,就可以画出下图所示的等高线图。
在这个等高线图上面,越偏红色系,代表计算出来的损失越大,就代表这一组 w 跟 b 越差。如果越偏蓝色系,就代表损失越小,就代表这一组 w 跟 b 越好,拿这一组 w 跟 b,放到函数里面,预测会越精准。
下图所示的等高线图,就是试了不同的参数,计算它的损失,画出来的等高线图称为误差表面errorsurface
。
步骤3——解一个最优化的问题
接下来进入机器学习的第 3 步:解一个最优化的问题。即找一对最好的 ( w , b ) (w,b) (w,b),记作 ( w ∗ , b ∗ ) (w^*,b^*) (w∗,b∗),使得损失 L L L最小。
- 梯度下降
gradient descent
是经常会使用优化的方法。
为了要简化起见,先假设只有一个未知的参数 w,b 是已知的。
怎么样找一个 w 让损失的值最小呢?首先要随机选取一个初始的点
w
0
w_0
w0。接下来计算
∂
L
∂
w
∣
w
=
w
0
\frac{\partial L}{\partial w}|_{w=w_0}
∂w∂L∣w=w0,在
w
=
w
0
w=w_0
w=w0 的时候,参数
w
w
w对损失的微分。
在这个位置附近,左边比较高,右边比较低。如果左边比较高右边比较低的话,就把
w
w
w 的值变大,就可以让损失变小。如果算出来的斜率是正的,就代表左边比较低右边比较高。左边比较低右边比较高,如果左边比较低右边比较高的话,就代表把
w
w
w 变小了,
w
w
w 往左边移,可以让损失的值变小。
左右移动的步伐大小取决于两件事情:
- 第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。
- 另外,学习率
learning rate
η \eta η也会影响步伐大小。学习率是自己设定的,如果 η \eta η设大一点,每次参数更新就会量大,学习可能就比较快。如果 η \eta η设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数hyperparameter
。
接下来反复进行刚才的操作,计算一下 w 1 w^1 w1 微分的结果,再决定现在要把 w 1 w^1 w1 移动多少,再移动到 w 2 w^2 w2,再继续反复做同样的操作,不断地移动 w w w 的位置,最后会停下来。往往有两种情况会停下来。
- 第一种情况是一开始会设定说,在调整参数的时候,在计算微分的时候,最多计算几次。上限可能会设为 100 万次,参数更新 100 万次后,就不再更新了,更新次数也是一个超参数。
- 还有另外一种理想上的,停下来的可能是,当不断调整参数,调整到一个地方,它的微分的值就是这一项,算出来正好是 0 的时候,如果这一项正好算出来是 0,0 乘上学习率 η \eta η 还是 0,所以参数就不会再移动位置。假设是这个理想的情况,把 w 0 w^0 w0 更新到 w 1 w^1 w1,再更新到 w 2 w^2 w2,最后更新到 w T w^T wT 有点卡, w T w^T wT卡住了,也就是算出来这个微分的值是 0 了,参数的位置就不会再更新。
梯度下降有一个很大的问题,就是既有可能没有找到真正最好的解,也没有找到可以让损失最小的
w
w
w。
在下图所示的例子里面,把
w
w
w 设定在最右侧红点附近这个地方可以让损失最小。但如果在梯度下降中,
w
0
w^0
w0 是随机初始的位置,也很有可能走到
w
T
w^T
wT 这里,训练就停住了,无法再移动
w
w
w 的位置。右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值global minima)
,而
w
T
w^T
wT 这个地方称为局部最小值local minima
,其左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点。
总结
以上的三个步骤是训练的步骤,它靠曾经的数据一步步完善模型。