【学习笔记】梯度下降与最小二乘法
前言
依稀记得之前考研一开始肝数学一,梯度也学了个七七八八,至少是1800相关的习题都做了,但是后来怂了跑路去考数学二,时间久了也就忘了,但是该学的迟早都要学,该欠的债一分都跑不掉。最近通过阅读刘建平老师的博客,多多少少又想起了一些知识。下面就是一些我自己的理解和总结
梯度下降
简单来说,梯度下降简单理解就是,给出一个多元函数,我对他的每个自变量都进行偏导,找出对应点那个偏导后最符合需求的结果(最大或最小),这样不断的迭代不断的偏导,就是所谓的梯度下降,运用到实际应用中,这个方法能够很快的帮助损失函数找到最快下降的路径
梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解,这里也很好理解,如果是凸函数,凸函数的割线在函数曲线的上方,那么显然是有一个最快下降的方法的
然后是梯度下降中机器学习的一些知识点
- 步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
- 特征(feature):指的是样本中输入部分,比如2个单特征的样本(x(0),y(0)),(x(1),y(1)),则第一个样本特征为x(0),第一个样本输出为y(0)。
- 假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为hθ(x)。比如对于单个特征的m个样本(x(i),y(i))(i=1,2,...m),可以采用拟合函数如下: hθ(x)=θ0+θ1x。
- 损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(xi,yi)(i=1,2,...m),采用线性回归,损失函数为:
最小二乘法
最小二乘法实际上是基于损失函数,将它不同参数求导后令其为零,,因为我只需要让损失函数值最小就可以了,这样我联立方程组求解,解出来的一组参数值,就是所需要的解
这里也就不难理解为什么用矩阵运算更加简单
从上面可以看出,最小二乘法适用简洁高效,比梯度下降这样的迭代法似乎方便很多。当然最小二乘法也有局限性。
- 首先,最小二乘法需要计算XTX的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,我们可以通过对样本数据进行整理,去掉冗余特征。让XTX的行列式不为0,然后继续使用最小二乘法。
- 第二,当样本特征n非常的大的时候,计算XTX的逆矩阵是一个非常耗时的工作(nxn的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。
- 第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。
- 第四,讲一些特殊情况。当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征数n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。
本文来自博客园,作者:Lugendary,转载请注明原文链接:https://www.cnblogs.com/lugendary/p/16022941.html