数值优化与假新闻检测:理论与实践探索
1. 梯度下降算法与Huber损失最小化
梯度下降算法是一种用于寻找函数最小值的迭代优化算法。在使用Huber损失函数时,我们可以通过该算法找到最小化的常数模型。以下是使用Python代码实现的示例:
%%time
theta_hat = minimize(huber_loss, grad_huber_loss, delays['minutes_late'])
print(f'Minimizing theta: {theta_hat:.3f}')
运行上述代码后,得到最小化的 theta 值为0.701,CPU时间为97.3ms,实际耗时为140ms。Huber损失的优化常数接近最小化绝对损失的值,这得益于Huber损失函数的形状,它在尾部是线性的,因此不受异常值的影响,这与绝对损失类似,但与平方损失不同。
在实际应用中,我们通常使用经过良好测试且数值稳定的优化算法实现,例如 scipy 包中的 minimize 方法,它可以帮助我们找到平均损失的最小值,而且无需计算梯度,速度通常比我们自己编写的算法更快。
梯度下降算法通常在 θ(t) 在迭代之间变化不大时停止。在我们的函数中,当 θ(t + 1) - θ(t) 小于0.001时停止。此外,在经过大量步骤(如1000步)后停止搜索也是常见的做法。如果算法在1000次迭代后仍未达到最小值,可能是因为学习率过大导致算法发散,或者最
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



