Task 1:机器学习基础
机器学习:机器学习就是让机器具备找一个函数的能力。机器具备找函数的能力以后,它可以完成许多任务。
机器学习的任务:
1.回归(regression)
目标函数的输出是一个数值,一个标量(scalar)。
例:假设机器要预测未来某一个时间的 PM2.5 的数值。机器要找一个函数 f,其输入是可能是种种跟预测 PM2.5 有关的指数,包括今天的 PM2.5 的数值、平均温度、平均的臭氧浓度等等,输出是明天中午的 PM2.5的数值,找这个函数的任务称为回归
2.分类(classification)
分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出。
例:每个人都有邮箱账户,邮箱账户里面有一个函数,该函数可以检测一封邮件是否为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。AlphaGo 也是一个分类的问题,如果让机器下围棋,做一个 AlphaGo,给出的选项与棋盘的位置有关。棋盘上有 19 × 19 个位置,机器下围棋其实是一个有 19 × 19 个选项的选择题。
3.结构化学习(structured learning)
让机器产生一个有结构的物体机器,例如画一张图,写一篇文章。
机器学习找函数的三个步骤
一、写出一个带有未知参数的函数 f,形如:
w 称为权重(weight)
b 称为偏置(bias)
例:要预测的是今天(2 月 26 日)这个频道总共观看的人,y 就假设是今天总共的观看次数。x1 是这个频道,前一天(2 月 25 日)总共的观看次数,y 跟 x1 都是数值,b 跟 w 是未知的参数,它是准备要通过数据去找出来的,w 跟 b 是未知的,只是隐约地猜测。
二、定义损失(loss)
损失是函数 L(b, w),其输入是模型参数 b 跟w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。
例:假设未知的参数的设定是 b = 500,w = 1,预测未来的观看次数的函数就变成 y = 500 + x1。要从训练数据来进行计算损失,在这个问题里面,训练数据是这一个频道过去的观看次数。举个例子,从 2017 年 1 月 1 日到 2020 年 12 月 31 日的观看次数(此处的数字是随意生成的)如图所示,接下来就可以计算损失。
把 2017 年 1 月 1 日的观看次数,代入可得估测的值 yˆ 跟真实值 y 的差距 e。估测的值 yˆ 跟真实值 y 的差距 e。这 3 年来每一天的误差,通通都可以算出来,每一天的误差都可以得到 e。接下来把每一天的误差,通通加起来取得平均,得到损失L。
其中,N 代表训验数据的个数,即 3 年来的训练数据,就 365 乘以 3,计算出一个 L,,L 是每一笔训练数据的误差 e 相加以后的结果。L 越大,代表现在这一组参数越不好,L 越小,代表现在这一组参数越好。
误差类型
1.平均绝对误差(Mean Absolute Error,MAE):计算 y 与 yˆ 之间绝对值的差距
2.均方误差(Mean SquaredError,MSE):如果算 y 与 yˆ 之间平方的差距
3.交叉熵(cross entropy):概率分布数据使用的误差衡量标准
4.误差表面(error surface):指在权重空间中,误差函数(损失函数)与各权重参数构成的多维图像。
三、解一个最优化的问题。
解一个最优化的问题。找一个 w 跟 b,把未知的参数找一个数值出来,看代哪一个数值进去可以让损失 L 的值最小,就是要找的 w 跟 b。
梯度下降(gradient descent)
梯度下降是一种常见优化方法,是通过迭代调整参数来最小化损失函数的方法。
梯度下降法的基本思想类似于一个下山的过程。假设有一个人被困在山上,他需要找到最快的方式下山到达最低点。但由于能见度低,他无法确定完整的下山路径,因此他必须利用周围的信息来指引自己。类似地,在机器学习中,我们不断调整参数,寻找使损失函数最小化的最佳路径。在这个过程中,“梯度”起着至关重要的指导作用。怎么得到梯度呢,首先要随机选取一个初始的点 w0。接下来计算 ∂L∂w |w=w0,在 w 等于 w0 的时候,参数 w 对损失的微分。计算在这一个点,在 w0 这个位置的误差表面的切线斜率。也就是这一条蓝色的虚线,它的斜率,如果这一条虚线的斜率是负的,代表说左边比较高,右边比较低。在这个位置附近,左边比较高,右边比较低。如果左边比较高右边比较低的话,就把 w 的值变大,就可以让损失变小。如果算出来的斜率是正的,就代表左边比较低右边比较高。左边比较低右边比较高,如果左边比较低右边比较高的话,就代表把 w 变小了,w 往左边移,可以让损失的值变小。这个时候就应该把 w 的值变小。
学习率(learning rate)η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)。