机器学习的一般过程:
构建线性模型:
线性模型:试图学得一个通过属性的线性组合来进行预测的函数
梯度下降算法
构建一个线性模型拟合数据:
根据机器学习三要素(绪论部分见第一讲)
1.定义模型
2.策略(也即损失函数)
在线性模型中,损失函数可以用所有训练数据实际值和预测值差的平方和来描述,此函数值越小,模型对训练数据集的拟合能力越强。
补充:在机器学习中
表示的是第i个样本的y值,损失函数的系数只是为了后续的计算量
3.算法
当损失函数定义好了之后,算法的主要任务就是找到一种合理数学方案使得机器在学习的过程中有方向的调整模型的参数实现逐步降低损失函数的值,也就是本讲重点部分梯度下降算法
梯度下降算法的分析:
在我们的损失函数E中,具有θ0,θ1两个参数,为了简化问题我们可以假设只有一个参数情况下这个损失函数的求解方法
梯度下降算法在做分析的时候,一定要弄清楚,损失函数E的参数是关于θ的,因为x,y都是给定的实验数据,也正因为此,无论定义的线性模型多复杂,模型中未知参数θ都可以是一次(θ是我们自己设的,我总不能设一个n次方给自己找麻烦吧?),就是说最终的损失函数E无论多么复杂的情形下都是二次函数,模型的复杂程度顶多影响损失函数是几元的
为了方便理解,先假设E只有一个参数θ,这时候E其实就变成了一个开口向上的凸函数(机器学习对于凹凸函数的概念和数学有冲突),如下图:
对于这样一个函数, 一定会存在着最小值,当损失函数最小值的时候,对应参数的值就是我们模型的最佳值。这题对于人来说,很简单只需要求导后令导函数为0解出θ,就可以了。但是机器并不可以直接解方程,机器只能沿着一个方向进行调整参数的值不断尝试,最终找到最优。
那么机器按照什么方向改变参数θ一定能找到最优呢?
在当前假设下,E是关于θ开口向上的函数,他的导函数是一个斜率为正的一次函数。试想,机器在寻找最优值是要找到E的倒数接近0的点,对于某一个θ,如果E的倒数大于0,就需要减小E倒数的值,由于E关于θ单调递增,也就是说下一次选θ,需要找一个小一点的。
也就是说,我们增大θ还是减少θ,取决于θ时,E的倒数的正负,E倒数为正,减小θ,E倒数为负,增大θ。因此可以归纳这个关系如下:
这里的η将决定着寻找最优值的速度,被称之为学习速率。
理清思路后回到两个参数的情况,现在可以好好研究一下出现θ0和θ0两个参数的时候了。
将
代入损失函数:
化简,方程是类似于E=aθ2+bθ2+c,也就是损失函数就是二元二次方程,a和b都是大于0的,这个形式实际上就是高等数学下册的椭圆抛物面
图像如下:
按照这个图像损失函数E一定是存在最小值的,我们的任务就是取寻找最小值时θ0和θ1的值,这不就是高等数学多元函数求极值吗,甚至还是最简单的类型,求出E关于θ0和θ1的偏导数,另两个方程为0然后联立解出的驻点,就是符合条件的答案。这是作为人的思路来解题,但是机器并不可以这么做,机器只能期盼着按照一个方向试探参数来逐渐降低损失
那这个如何描述这个方向呢?
这里就需要引入梯度的概念。梯度是方向导数最大的时候的方向,也就是函数变化最快的方向,沿着这个方向向下寻找最低点,速度将会最快,梯度实际上就是
函数在某一点的偏导数的组合,按照这个方向,也就是x按照x偏导的大小,而y按照y偏导的大小(x,y变化值保持时刻保持相同的倍数)来调整位置参数的值,将会达到最大效率。这里给出结果:
具体的推导过程:
那变化方向就是:
代码部分见第二讲 代码部分
梯度下降算法多项式回归
对于本题来说实际上这一题到这就已经差不多结束了,但是梯度下降算法的强大之处到这才刚刚开始,下面推广多项式的模型: