一些符号:
m:训练集数量
n:特征数目(输入维度)
:训练样本中的第i个向量
:训练样本中的第i个向量中的第j个元素
模型参数
损失函数:
梯度下降:
其中
假设函数: 若规定
X
注意:一个特征未必就对应一个x。例如,对于特征size,假设函数可设为:
特征缩放:
问题:若不同变量的取值范围差异很大,如 则损失函数关于二者的等高线图为(实际上比下图还要更狭长)
如红线所示,梯度下降的方向反复振荡,收敛过程很慢
解决:(归一化)
或:(平均归一化)
代价随迭代次数降低的曲线图:
正常情况:
异常情况:
说明学习率过大,需要降低之。实际上,只要学习率足够小,J一定随迭代而下降
自动收敛测试:
测试J在某次迭代的下降值,若小于,则认为已收敛。但实际上选择一个合适的比较困难,一般还是通过观察曲线图来判断是否收敛
正规方程(不用迭代,一次性求得 ):
方法一:对于每一个j,求方程组 的解
方法二:假设m=4
则
令,即得最优
matlab或octave中的代码为:pinv(x'*x)*x'y
其中x'表示x的转置;inv是求逆;pinv是求伪逆(广义逆)
pinv(A)函数返回一个与同型的矩阵X,并满足:
AXA=A,XAX=X,AX和XA均为对称阵
计算机求矩阵逆的时间开销大致为,故当n较大时还是用梯度下降法。吴恩达在n<10000时用正规方程法