本篇笔记是关于机器学习的一些简单介绍,主要包括什么是机器学习,机器学习的步骤以及优化等
1.机器学习
机器学习,通常理解是指利用机器来帮助人们找到一个合适的函数,用来完成某些工作,像我们熟知的语音识别、AlphaGo围棋等等,都利用了机器学习的技术。
机器学习有不同的类别,首先是“回归”,当机器所找到的函数是一种标量数值时,我们把这种函数称为回归,像生活中常见的PM2.5的预测,天气预报当中对未来几天温度的预测,都可以归属到这个类别中。第二个类别是“分类”,此时输出的结果往往是从已给定的选项当中确定的,前文所提到的AlphaGo围棋就属于这种情况,需要注意的是,它也同时属于回归类别。还有一个类别被叫做“结构化学习”,此时机器往往会产生一个具体的对象,如画图,写文章等。
2.具体步骤
①构造含参函数
y = b + wx
y是我们所需要的预测项,x则是我们从后台已知的数据,二者都是具体的数值,而w(权重),b(偏置)是未知的参数,需要进一步来确定,通常我们选择利用领域知识加以猜测,但这并非毫无章法,我们有一套相对固定的方法,下面加以讲述。
②定义损失
损失函数L(b,w)的输入是权重w和偏置b,函数的输出结果则可以反映w和b的优劣与否。
L(b,w)=1/n·∑e
损失L的计算如上式,我们将每次计算得到的误差e求和,再除以数据总个数,即可得到结果,结果越大,则函数越差,结果越小,则说明函数越好,越精确。其中,误差的计算有以下几种方法,分别是平均绝对误差、均方误差。
e1 = |y − yˆ|
e2 = |y − yˆ|
最后补充一点,在有一些任务中 y 和 yˆ(真实值,也叫标签) 都是概率分布,这个时候可能会选择交叉熵(cross entropy)函数,如下。
L=−[ylog y^+(1−y)log (1−y^)]
③解决最优问题
解决最优化问题的目的是找到一组最合适的w和b使得损失L最小,我们常用的方法是梯度下降,即假设b已知,w为自变量,找一w0,计算在该点处的斜率,以及L对w的微分,如果斜率为正值,则新找一小于w0的w1,反之,则找一大于w0的w1。新数据与原数据的偏差大小取决于斜率的大小以及学习率的大小。
那么,应当在什么时候停止更换w呢,一般来说有两种情况,其一是在一开始就告知程序调整的次数,如预先设定1000次,则当调整1000次后程序自行停止,还有一种情况是在计算微分值时,如果结果恰为零,则停止。
但需要注意的是梯度下降有一个很大的问题,即没有找到真正最好的解,所找到的可能是一个局部最小值而非全局最小值,为了解决这个问题,我们可以随便选一个初始的值,先计算一下 w 对 L 的微分,跟计算一下 b 对 L 的微分, 接下来更新 w 跟 b,更新的方向就是 ∂L/∂w,乘以 η 再乘以一个负号,∂L/∂b,算出这个微 分的值,就可以决定更新的方向,可以决定 w 要怎么更新。把 w 跟 b 更新的方向结合起来, 就是一个向量,就是红色的箭头,再计算一次微分,再决定要走什么样的方向,把这个微分的 值乘上学习率,再乘上负号,我们就知道红色的箭头要指向那里,就知道如何移动 w 跟 b 的 位置,一直移动,最后可以找出一组不错的 w, b。