神经网络中的学习率 (eta)2025 年 6 月 21 日 | 8 分钟阅读 什么是学习率?学习率是调整神经网络以提高性能的最关键超参数之一。当训练迭代进行以接近损失函数的最小值时,学习率决定了步长的大小。学习率通常用字母 α 表示。α 的值介于 0 到 1 之间。 通过计算损失函数的梯度,可以确定通往最优值的路径。朝这个方向迈出的步长有多大,是由学习率参数决定的。 神经网络由两个过程组成,例如前向传播和反向传播。 前馈(也称为前向传播)是一种用于预测输出变量的技术。 为了减小损失函数,使用反向传播技术更新每一层的权重和偏置。 反向传播方法使用梯度下降优化技术来更新权重和偏置参数。梯度下降优化过程用于确定损失函数的梯度。 学习率是调整权重和偏置参数的速率。下面是用于更新权重和偏置参数的数学公式: ![]() 在这种情况下,损失函数相对于权重参数的偏导数由梯度项 ?L/?W 表示。这表明误差相对于权重参数的变化有多快。 在调整权重参数时,使用梯度值的比例而不是总量更可取。例如,如果学习率为 α = 0.1,那么在每次训练迭代中,只有 10% 的梯度项在权重参数中得到更新。 如果输入太小,模型要么会卡住,要么学习速度很慢。同样,如果值太高,模型会过快地适应,这会阻止其产生准确的预测。 ![]() 如前所述,模型的学习率决定了它在训练过程中修改权重的多少。为了确定理想的学习率,研究人员和开发人员通常会尝试各种变量,看看哪个变量能提供最佳性能。 任何在不变得不稳定的情况下产生高学习率的值都是理想的学习率。选择这个数字的最终目标是通过最小化其损失函数(即 ML 模型预测输出与实际输出之间的差异)来提高模型的准确性。 根据儿童的互动解释学习率让我们看一个例子来更好地理解这一点。 一个孩子可能会认为所有的狗都是黑色的,如果他看到了十只狗,并以此作为识别狗的特征。 假设他的父母告诉他,他们给他看的一只白狗也是狗。如果他的学习率足够高,他会很快意识到黑色并不是犬类的显着特征,并会寻找另一个特征。 然而,由于他学习速度缓慢,他会继续认为所有的狗都是黑色的,并将白狗视为异常。 此外,即使他看到的黑狗比白狗多,如果学习率太高,他也会很快开始认为所有的狗都是白色的。 主要观点是,达到一定的学习率至关重要,因为
调整学习率学习率是微调神经网络最关键的超参数。高学习率可能是一个产生最先进结果的模型和一个什么都没学会的模型之间的区别。 下图显示了在调整学习率时可能出现的各种情况。 ![]() 试错法是确定期望或理想学习率的明显方法。为了有效地做到这一点,我们需要遵循一些准则。 学习率应该是自适应的。通过提高超参数的收敛速率,这种技术减轻了手动调整初始学习率的需要。该技术使用梯度与更新规则本身的学习率的关系来在优化过程中动态改变学习率。只需要保留原始梯度的额外副本即可计算此“超梯度”,并且它只需要反向自动微分提供的信息。 学习率对神经网络的影响确定理想的学习率是一个艰苦的过程。一种调节模型学习速度的调优参数是学习率。 学习率过高,模型可以学得更快,但由于权重变化过快,可能会越过最小值。模型可以使用适中的学习率谨慎而渐进地学习。每次更新,它都会以微小的方式修改权重。结果导致收敛太慢。 学习率过低可能会导致陷入不利的局部最小值。因此,我们不应使用过高或过低的学习率。训练数据集和神经网络设计都会影响学习率的值。 确定理想的学习率找到理想的学习率值——既不太高也不太低——对于提高神经网络的性能至关重要。可以通过多种方式找到最佳学习率:
学习率衰减“学习率衰减”是指在每个训练周期中学习率逐渐降低。有时,由于噪声数据或各种其他情况,固定的学习率难以收敛。模型在学习率衰减的帮助下收敛到理想值。 它允许在开始时设置较高的学习率,并逐渐降低。这导致在训练阶段开始时对权重进行大的更新,在结束时进行小的更新。 在训练神经网络时,优于使用固定学习率的是使用学习率衰减。但是,您必须调整另一个超参数,即学习率衰减。学习率衰减数学方程为: ![]() 如果初始学习率为 α0 = 0.2,则每个 epoch 的学习率为:
学习率举例说明 让我们使用 Keras 深度学习包,使用鸢尾花(Iris)数据集来构建神经网络。可以在 Keras 优化器类中设置固定学习率。让我们看看它如何使用鸢尾花数据工作。 Keras 优化器类指定学习率。下面展示了用于将学习率设置为 0.1 的随机梯度下降优化器的语法。 让我们使用鸢尾花数据,在不同的固定学习率下检查神经网络的运行情况。 代码 输出 ![]() 学习率衰减举例说明 除了学习率,学习率衰减参数可以在 Keras 的优化器类中设置。下面展示了使用随机梯度下降优化器类和指定衰减参数来设置学习率衰减的语法。 学习率的默认值为 0.01。此外,默认情况下,学习率衰减选项设置为 0。 让我们看看在使用学习率衰减训练模型时,神经网络的表现如何,而不是使用恒定的学习率。 代码 输出 ![]() 下一主题张量处理单元 |
我们请求您订阅我们的新闻通讯以获取最新更新。