深度网络优化:挑战与解决方案
1. 误差表面的平坦区域
在优化深度网络时,我们会计算插值参数下的损失:
# Compute loss given interpolated parameters
loss = inference(trainloader, model, loss_fn)
results.append(loss.item())
多次运行实验后发现,真正困扰梯度下降的并非棘手的局部极小值,而是难以找到合适的移动方向。
在误差表面,我们注意到一个特殊的平坦区域,当接近 alpha = 1 时,梯度趋近于零。这种梯度为零的点被称为临界点,临界点有多种类型:
- 局部极小值:函数在局部范围内的最小值点。
- 局部极大值:函数在局部范围内的最大值点,对随机梯度下降影响不大。
- 鞍点:介于局部极小值和局部极大值之间的“平坦”区域,随着模型参数维度的增加,鞍点出现的概率比局部极小值呈指数级增长。
对于一维成本函数,临界点有三种形式,假设每种形式等概率出现,那么随机临界点为局部极小值的概率为 1/3。对于 d 维空间的成本函数,随机临界点为局部极小值的概率为 1/3^d 。这意味着随着参数空间维度的增加,局部极小值变得越来越罕见。
这些平坦区域对于随机梯度下降来说虽然麻烦,但最终不会阻止其收敛到较好的结果。然而,对于那些试图直接求解梯度为零的点的方法,如某些二阶优化方法,会带来严重问题。
2. 梯度指向错误方向
深度网络优化的关键挑战在于找到
超级会员免费看
订阅专栏 解锁全文

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



