机器学习中的优化算法
在训练模型时,我们会使用优化算法不断迭代模型参数以降低模型损失函数的值。当迭代终止
时,模型的训练随之终止,此时的模型参数就是模型通过训练所学习到的参数。
优化算法对于深度学习十分重要。一方面,训练一个复杂的深度学习模型可能需要数小时、数
日,甚至数周时间,而优化算法的表现直接影响模型的训练效率;另一方面,理解各种优化算法
的原理以及其中超参数的意义将有助于我们更有针对性地调参,从而使深度学习模型表现更好。
优化与深度学习的关系
由于优化算法的目标函数通常是一个基于训练数据集的损失函数,优化的目标在于降低训练误
差。 而深度学习的目标在于降低泛化误差。为了降低泛化误差,除了使用优化算法降低训练误差
以外,还需要注意应对过拟合。本章中,我们只关注优化算法在最小化目标函数上的表现,而不
关注模型的泛化误差。
反向传播算法
反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优
化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法计算对网络中
所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函
数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个
节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。
3
4
5
6
7
8
9
10
11
12
13
14
= z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
= z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
= z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
= (1 - z) * x + log(1 + exp(-x))
= x - x * z + log(1 + exp(-x))
For x < 0, to avoid overflow in exp(-x), we reformulate the above
x - x * z + log(1 + exp(-x))
= log(exp(x)) - x * z + log(1 + exp(-x))
= - x * z + log(1 + exp(x))
Hence, to ensure stability and avoid overflow, the implementation uses this
equivalent formulation
max(x, 0) - x * z + log(1 + exp(-abs(x)))