【人工智能】我的人工智能之旅——线性回归 研读
本文将涉及以下知识点
(1)线性关系
(2)线性回归
(3)假设函数
(4)代价函数
(5)学习速率
(6)梯度下降
(7)特征向量
相关的线性代数或微积分知识,可参照另两篇博文
线性关系
解释线性回归之前,先来看一下线性关系。
什么是线性关系?如果自变量与因变量存在一次方函数关系,那么就成自变量与因变量存在线性关系。例如
y=2x+3 //x为自变量,y为因变量
y=2j+3k+i //j,k,i为自变量,y为因变量
但需要注意的是,类似
y=zx //z,x为自变量,y为因变量
就不是线性关系。
线性关系还必须满足以下条件
线性回归
所谓线性回归,就是利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析方法。
即由样本(x,y),推断y=ax+b的过程。其中a,b为需要推断的常量。那么,问题来了。
(1)为什么是"y=ax+b"型的一元一次结构?而非其它一元N次结构?
(2)如何推算出a,b?
假设函数
先来回答上一小节的问题(1)。可以使用其它一元N次结构。选择一元一次结构只是为了方便。之后的学习,可以换为更复杂的拟合结构。由于我们假设x,y之间存在"y=ax+b"型的映射关系,所以函数f(x)=ax+b被称为假设函数,hypothesis function。
对于假设函数中的参数a,b,我们没有办法直接算出正确的值。也无法让所有样本,都映射到假设函数上。因此,只能推算出对于样本集合整体来说,最佳的a,b取值。
代价函数(损失函数?)
如何评断参数a,b最佳?最佳a,b应使得假设函数求得的数据,与实际数据之间误差的平方和为最小。
注:关于为何使用1/2m,而非1/m,我们在下一小节说明。
由于样本集中的每个样本(x,y)已知,算式中a和b成为了变量,算式可以看作是a,b作为变量的函数。即
该函数,被称为代价函数,cost function,或者平方误差代价函数,squared error cost function。
有了代价函数,推算a,b的问题就演化为,求代价函数何时取到最小值的问题。
当然,除了平方误差代价函数外,还存在其它代价函数。只是平方误差代价函数,是解决线性回归问题最常用的手段罢了。
但不管使用何种代价函数,我们的目的终归是要推算最佳的a,b。那么,如何推算呢?
梯度下降算法
梯度下降算法,gradient descent,用于求函数的最小值。该算法运用了微积分(claculus)中的导数(derivatives)或偏导数(partial derivatives)知识。
简单的说,导数体现了自变量在变化时,对因变量所产生的影响。若存在多个自变量,那么对其中一个变量进行的求导,即为偏导数。换句话说,一个自变量在变化时,对因变量和其它自变量所产生的影响。
若某一点的导数大于0,那么说明,因变量随自变量增大而增大,随自变量减小而减小。若小于0,则因变量随自变量的增大而减小,随自变量减小而增大。依据该特性,我们不断地同时更新a,b的取值,直至(a,b)所对应的点导数为0。那么,如何更新呢?
我们将J(a,b)带入,来看一下运算过程。
还记得上一节的“1/2m”or“1/m”的疑问吗?通过运算,“1/2”被约掉。因此,代价函数之所以取“1/2m”作为参数,是为了运算方便。
将导数结果带入,通过不断的迭代尝试获取和,直至两者的偏导数为0或接近0。此时,得到的a,b的值,即为最佳值(全局最佳,或局部最佳)。
需要注意的是,由于受限于样本集合的大小,该最佳值可能为局部最佳值。
此外,初始点的选取,也将影响最佳值的推算。
可见,梯度下降算法其实是一步一步的试出了对于样本集合最佳的a,b取值。有了a,b的估值,假设函数的真容也便浮出水面了。
梯度下降并非唯一的推算最佳参数的方法。其它常用方法还包括,BFGS算法,L-BFGS算法,共轭梯度法(Conjugate Gradient)等。这些方法远比梯度下降法复杂的多,但优点在于,它们不用人为的选择学习率,甚至可以每次迭代自动使用更优的学习率,因此收敛速度较梯度下降更快。由于篇幅及范围的原因,此处暂不过多涉及。
多元线性回归
至此,我们其实还是在讨论一元一次的简单假设,即一个自变量和一个因变量的情况。但实际遇到的问题并非如此简单。例如,房子的价值,不仅仅与面积有关,还要参考楼层,房龄,房间数量等多重因素,即多元线性回归的问题。
那么,我们的假设函数也相应发生了变化。
这里,我么把参数都变为了,自变量变为了(例如,分别代表楼层,房龄,房间数量,默认为1)。之所以这样表示,是为了方便矩阵的引入。根据矩阵内积(矩阵与向量的乘法),可以表述为
若假设向量向量那么,向量A的转置 =
则假设函数转化为,其中称为特征(feature),X称为特征向量(feature vector)。
解决多元线性回归的问题,我们同样使用梯度下降算法,即我们要推算出合适的A。而推算过程,我们已在上一小节进行了描述。那么,套用之前的公式,可得到代价函数,
(j=0,1,2,3)的迭代算法则为
其中
当j=0,1,2,3时,各偏导数为
由于,所以
最终,参数向量A中的元素的迭代算法为
小结
线性回归,可分为一元或多元线性回归。通过构建合理的假设函数和代价函数,利用梯度下降算法,迭代推算出对于样本集合来说,最佳的参数或参数向量。希望通过本文的叙述,使得大家对推算过程,线性回顾问题的解决思路,有一个大致的了解。