前言
本文依托datawhale夏令营撰写的学习笔记,教程链接
期待大家的交流指正
Task01 通过案例了解机器学习
1.1机器学习的浅显介绍
机器学习就是让机器具备找一个函数的能力,函数(处理单元,自动化流程)就可以解决一些实际的问题。图像识别函数,语音识别函数,围棋函数(alphago)等。
根据函数的不同,机器学习有不同的类别,大致分为回归、分类、结构化学习三种。回归问题就是找一个标量的结果,例如温度,湿度,浓度等标量;分类问题就是让机器做出选择判断,判断物体的种类,邮件的种类,下一步落子的位置等;结构化学习听起来比较厉害,例如让机器画一张图,写一篇文章。
1.2机器学习模型的构建
首先需要创建一个带有未知参数的函数,这个函数一般包含权重和偏执等参数。其次需要定义损失Loss,也就是常说的损失函数,损失函数也包含权重和偏置参数。最后需要根据实际数据的调参,找一个最优的结果让损失L的值最小。
- 创建函数
这个函数就是机器寻找的函数的大致样子,只是有许多参数和细小的结构需要调整。
y = b + wx1
其中,y 是准备要预测的东西,x1是输入量,b 跟 w 是未知的参数,需要通过大量实际的数据来寻找确定。带有未知的参数(parameter)的函数称为模型(model)。w 称为权重(weight),b 称为偏置(bias)。 - 定义损失loss
损失函数就是评估测量所创建的函数是否达到预期效果,这个函数的输入是模型里面的参数,模型是 y = b + w ∗ x 1 ,而 b 跟 w 是未知的,损失是函数 L(b,w),其输入是模型参数 b 跟w。
其中损失函数的误差评估有许多不同的计算方法,因为是在大量的数据进行训练,所以也会得到大量的结果。那么如何判断损失函数的大小,如何评估这些数据呢,就需要统计的方法来对这大量的结果进行处理了。
例如平均绝对误差MAE,均方误差MSE,交叉熵CE等计算方法。 - 求最优化,调整参数
梯度下降法是经典常用的方法,梯度是一个向量,高维函数在空间内沿着梯度方向以最快的速度收敛,数学理论推导可以得到正确的梯度,但是在离散的计算机里需要进行数值计算的方法一步一步的(非光滑)的沿着梯度线进行下降。类似于凹凸不平的坑洼地,玻璃球落到坑底的轨迹。
学习率会影响每次下降的步伐大小,理解为计算精度,大些计算快但精度低,小些计算慢但精度高。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)
梯度下降有一个很大的问题,没有找到真正最好的解,没有找到可以让损失最小的 w。在图 1.4 所示的例子里面,把 w 设定在最右侧红点附近这个地方可以让损失最小。但如果在梯度下降中,w 0 是随机初始的位置,也很有可能走到 w T 这里,训练就停住了,无法再移动 w 的位置。右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(global minima),而 w T 这个地方称为局部最小值(local minima),其左右两边都比这个地方的损失还要高一点,但是它不是整个误差表面上面的最低点。
事实上局部最小值是一个假问题,在做梯度下降的时候,真正面对
的难题不是局部最小值。我记得有门课程叫做凸优化,损失函数可以进行处理变为凸函数,这样就可以找出真正的”最小值“即是全局最小值。
1.3一些感悟
这里推荐3b1b的机器学习视频,非常形象的说明了梯度下降。
其实机器学习模型构建和经典控制论的思想挺像的,输入输出的传递函数反馈控制模型,比较节点传递的误差就是损失函数的值。调整模型参数使得模型在外部输入或者干扰下的性能达到快速性,稳定性,准确性,超调可控等指标。
更高一点,就是控制论,信息论,系统论三论的思想。