随机梯度下降:原理、计算与应用
1. 梯度下降基础概念
我们可以沿着斜率方向小幅度改变权重,重新计算损失和调整量,多次重复这个过程,最终会到达曲线的最低点。这一基本思想可追溯到艾萨克·牛顿,他指出可以用这种方式优化任意函数。无论函数变得多么复杂,梯度下降的基本方法不会有显著变化,后续可能只是通过找到更好的步长来加快计算速度。
2. 梯度计算
计算梯度是关键步骤。我们使用微积分来优化性能,它能让我们更快地计算出调整参数时损失是上升还是下降。梯度能告诉我们为了让模型更好,每个权重需要改变多少。
导数是理解梯度的重要概念。对于任何函数,我们都能计算其导数,导数是另一个函数,用于计算变化而非值。例如,二次函数在值为 3 处的导数能告诉我们该函数在 3 处的变化速度。梯度定义为上升量与运行量之比,即函数值的变化除以参数值的变化。当我们知道函数如何变化时,就知道如何使其变小,这是机器学习的关键。
函数通常有多个需要调整的权重,计算导数时会得到多个梯度,每个权重对应一个。我们可以针对一个权重计算导数,将其他权重视为常数,然后对每个权重重复此过程。
令人惊讶的是,PyTorch 能够自动计算几乎任何函数的导数,而且速度非常快。以下是一个示例:
import torch
# 选择一个需要计算梯度的张量值
xt = torch.tensor(3.).requires_grad_()
# 定义一个函数
def f(x): return x**2
# 计算函数值
yt = f(xt)
print(yt) # tensor(9., grad_fn=<P
超级会员免费看
订阅专栏 解锁全文
5475

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



