李宏毅《机器学习》课程笔记(作业一:线性回归和梯度下降)

正则化regularization的目标是使得学出来的模型比较“平滑”,也就是说对输入的数据不敏感,所以如果输入的数据加入了一定的噪音,对输出的值的影响就比较小。

陆吾生的解释是,加入正则化以后,我们就更愿意放弃高阶函数,选择低阶的函数,而低阶的函数在面对新的数据的时候可能具有更好的能力。

正则化的时候是不需要加上b的,因为b对于模型的平滑程度是没有影响的。

estimator有bias和variance。一个通过取样本评估出的平均值bias是无偏的,但是他的方差variance是有偏的,这是因为在计算的variance的时候需要用到平均值,而这个评估出的平均值与各个样本的距离,相比真正的平均值与各个样本的距离,是偏小的,所以存在bias。需要纠偏,可以参考这个链接:https://www.zhihu.com/question/20099757

越复杂的model通常variance越大,而bias越小,可以认为他是包含最优解的,但是范围太大不好瞄准。越简单的model通常variance越小,但是bias越大,这是因为他可能没有包含最优的model,所以存在天然的bias,但是因为参数比较少,不容易受到样本的影响,所以variance就比较小。所以我们需要在两者间找一个trade-off。

如果bias大,叫做underfitting,说明模型不够好,需要重新设计模型,设计更复杂的模型。

如果variance大,叫做overfitting,需要增加data,可以试着自己设计data。或者增加正则化regularization。

 

在梯度下降的时候,需要小心设计learning rate,如果大了loss会爆炸,如果小了会需要非常长的时间来收敛。

课程里面介绍了Adagrad,能够比较好的计算learning rate。

关于各种计算learning rate的算法,可以参考https://www.zhihu.com/question/323747423/answer/790457991

在考虑多个参数的时候,不能认为梯度越大,步长就应该越大。因为不同的参数上的“大小”可能不是一个scale,所以应该看一次微分与二次微分的比值。二次微分越大,说明比较平滑,所以梯度相同的情况下应该步长大一些。

在二次微分很难计算的时候,Adagrad里面的分母,也就是过去所有的梯度的平方和,能够反映这一点,也就是说这个值越大,说明过去平均的梯度就比较大,那么到现在的二次梯度就越大。

另外我们也应该把不同的特征的scale统一,来避免上面的问题,是的GD更快地收敛。

李宏毅《机器学习》课程笔记(作业一:线性回归和梯度下降)