1 优化和深度学习
在优化中,损失函数通常被称为优化问题的目标函数。
本质上,优化和深度学习的目标是根本不同的。
- 优化主要关注最小化目标,优化的目标是减少训练误差。
- 深度学习关注在给定有限数据量的情况下寻找合适的模型。深度学习的目标是减少泛化误差,因此除了使用优化算法来减少误差,我们还需要注意过拟合。
1 | %matplotlib inline |
- 经验风险是训练数据集的平均损失
- 风险是整个数据群的预期损失
1 | # 风险函数 |
1.2 深度学习中的优化挑战
1.2.1 局部最小值
1 | x = torch.arange(-1.0, 2.0, 0.01) |
- 只有一定程度的噪声可能会使参数跳出局部最小值。事实上,这是小批量随机梯度下降的有利特性之一。在这种情况下,小批量上梯度的自然变化能够将参数从局部极小值中跳出。
1.2.2 鞍点
- 除了局部最小值之外,鞍点是梯度消失的另一个原因。
1 | x = torch.arange(-2.0, 2.0, 0.01) |
- 较高维度的鞍点甚至更加隐蔽。
1 | x, y = torch.meshgrid( |
c:\Users\18048\.conda\envs\d2l\lib\site-packages\torch\functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\TensorShape.cpp:2895.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
1.2.3 梯度消失
可能遇到的最隐蔽问题是梯度消失。
例如,假设我们想最小化函数f(x) = tanh(x),然后我们恰好从x = 4开始。f的梯度接近零。因此,在我们取得进展之前,优化将会停滞很长一段时间。
1 | x = torch.arange(-2.0, 5.0, 0.01) |