机器学习是什么?
机器学习就是让机器具备找一个函数的能力。
对于语音识别,这个函数的输入是声音信号,输出是这段声音信号的内容。
对于图像识别,图像识别函数的输入是一张图片,输出是这个图片里面的内容。
什么是回归?
不要尝试用字面意思来理解,我一度不明白回归这俩字是什么意思。
假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。
举个回归的例子,假设机器要预测未来某一个时间的 PM2.5 的数值。机器要找一个函数 f,其输入是可能是种种跟预测 PM2.5 有关的指数,包括今天的 PM2.5 的数值、平均温度、平均的臭氧浓度等等,输出是明天中午的 PM2.5的数值,找这个函数的任务称为回归(regression)。
什么是分类?
分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。
举个例子,每个人都有邮箱账户,邮箱账户里面有一个函数,该函数可以检测一封邮件是否为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。
以函数为例
什么是模型?
带有未知的参数(parameter)的函数称为模型(model)。
例如 w 跟 b 就是是未知的参数。
其中w 称为权重(weight),b 称为偏置(bias)。
什么是特征?
特征(feature) x1 是这个函数里面已知的,它是来自于后台的信息。
特征不是常量,而是一个变量。
什么是损失函数?
损失函数的输入是模型里面的参数,模型是,而 b 跟 w 是未知的,损失是函数 L(b, w),其输入是模型参数 b 跟w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。
简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失(损失值越小证明模型越是成功)。
什么是平均绝对误差(MAE)?
估测的值跟实际的值之间的差距,其实有不同的计算方法,计算 y 与 之间绝对值的差距,如下式所示,称为平均绝对误差(Mean Absolute Error,MAE)。
其中, 为估测的值,y为真实值,e为差距。
什么是均方误差(MSE)?
如果算 y 与 之间平方的差距,如下式所示,则称为均方误差(Mean SquaredError,MSE)。
什么是误差表面(error surface)?
调整不同的 w 和不同的 b,求取各种 w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失,就可以画出如下图所示的等高线图。
在这个等高线图上面,越偏红色系,代表计算出来的损失越大,就代表这一组 w 跟 b 越差。如果越偏蓝色系,就代表损失越小,就代表这一组 w 跟 b 越好。
如下图所示的等高线图,就是试了不同的参数,计算它的损失,画出来的等高线图称为误差表面(error surface)。
什么是梯度下降?什么是学习率?
找一组最好的 w 跟 b,使得代入进去函数可以让损失 L 的值最小,这是一个最优化问题。
梯度下降(gradient descent)是经常会使用优化的方法。为了要简化起见,先假设只有一个未知的参数 w,b 是已知的。
w 代不同的数值的时候,就会得到不同的损失,这一条曲线就是误差表面,只是刚才在前一个例子里面,误差表面是 2 维的,这边只有一个参数,所以这个误差表面是 1 维的。
怎么样找一个 w 让损失的值最小呢? 如下图所示,首先要随机选取一个初始的点。接下来计算 ,在 w 等于 的时候,参数 w 对损失的微分。计算在这一个点,在 这个位置的误差表面的切线斜率,也就是这一条蓝色的虚线,它的斜率,如果这一条虚线的斜率是负的,代表说左边比较高,右边比较低。在这个位置附近,左边比较高,右边比较低。如果左边比较高右边比较低的话,就把 w 的值变大,就可以让损失变小。如果算出来的斜率是正的,就代表左边比较低右边比较高。左边比较低右边比较高,如果左边比较低右边比较高的话,就代表把 w 变小了,w 往左边移,可以让损失的值变小。这个时候就应该把 w 的值变小。我们可以想像说有一个人站在这个地方,他左右环视一下,算微分就是左右环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。
这一步的步伐的大小取决于两件事情:
- 第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。
- 另外,学习率(learning rate)η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。
什么是超参数
机器学习中,需要自己设定,不是机器自己找出来的参数,称为超参数(hyperparameter)。
为什么损失可以是负的?
损失函数是自己定义的,在刚才定义里面,损失就是估测的值跟正确的值的绝对值。如果根据刚才损失的定义,它不可能是负的。但是损失函数是自己决定的,比如设置一个损失函数为绝对值再减 100,其可能就有负的。这个曲线并不是一个真实的损失,并不是一个真实任务的误差表面。因此这个损失的曲线可以是任何形状。
什么是全局最小值?什么是局部最小值?
如下图所示,右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(global minima)。
而 这个地方称为局部最小值(local minima),其左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点。