Logo
Section 1 / 8

模型优化入门

本课程将介绍模型优化的概念。

检查点

模型优化入门

本课程将介绍模型优化的概念。

为什么优化很难?

一个权重的最优值依赖于其他权重的取值。多个权重会同时被优化。通过梯度(斜率)我们可以判断应增加或减少哪些权重。然而,这些更新可能并不会显著提升模型性能,这就需要调整超参数。

模型参数 vs. 超参数

模型参数是模型的内部参数。在神经网络中,模型参数即神经元的权重。它们在训练过程中自动学习,之后用于进行预测。

超参数是模型的外部参数。由模型开发者手动设定,包括激活函数的选择、优化器的选择、批量大小(batch size)和训练轮数(epochs)。超参数对神经网络的准确性有显著影响。

超参数:优化方法

可以通过试错法来优化超参数,但目前尚无统一的最佳方案。

与神经网络结构相关的超参数

1. 模型复杂度

这决定了隐藏层的数量或每层的节点数量。通常,增加模型复杂度可以提高准确率。

📝 了解更多关于模型复杂度的内容。

**2. Dropout**

该参数定义了在训练过程中随机“关闭”多少神经元,以防止网络过度学习训练数据中的细节特征。

在第二层隐藏层后应用Dropout
在第二层隐藏层后应用Dropout

3. 激活函数

在前向传播过程中,每一层都应使用最合适的激活函数。激活函数会影响网络的收敛能力、对不同输入范围的适应性以及训练速度。

我们已在前面讨论过不同的激活函数。

  • ReLU 激活函数存在“神经元死亡”问题。当输入为零或负值时,其梯度变为零,导致反向传播无法进行,网络无法继续学习。这提示我们应选用梯度永不为零的激活函数。

  • tanh 激活函数是一个不错的选择,但存在梯度消失问题。在反向传播中,可能出现极小或接近零的梯度。这种现象在仅有少量隐藏层的网络中尚可接受,但在深层神经网络中,反复相乘会使梯度趋近于零,导致反向传播几乎失效。因此,应选择梯度不会平坦的激活函数。

与神经网络训练相关的超参数

在训练过程中,我们可能希望优化学习率、优化算法、训练轮数和批量大小。

1. 学习率:

  • 学习率过小会导致更新幅度太小。
  • 学习率过大则可能导致更新幅度过大。

使用如 Adam 这类智能优化器有助于缓解问题,但仍可能存在优化困难。最简单的方法是使用随机梯度下降(Stochastic Gradient Descent,简称 sgd)来观察不同学习率的效果。该优化器采用固定学习率,但可通过 lr 参数指定具体数值。

2. 轮数(Epochs)、迭代次数与批量大小:

如果由于样本量过大或网络过于复杂而无法一次性处理全部数据,则需将数据划分为多个批次,一轮训练可能需要多次迭代完成。轮数和每轮的批次数对模型训练有重大影响,可能引发欠拟合或过拟合。

📝 了解欠拟合与过拟合的相关内容。

3. 验证集:

模型的目标是在训练集上表现良好,并能在测试集上实现良好的泛化能力。验证集的作用在于:它从训练集中分离出来,在训练过程中用于监控性能,帮助决定何时停止训练,从而避免过拟合。

📝 了解更多关于模型验证的内容。

总结

  • 模型参数是模型的内部参数,超参数是模型的外部参数。
  • 与模型结构相关的超参数包括模型容量、Dropout 和激活函数。
  • 在训练过程中可优化的超参数包括学习率、轮数和批量大小。
  • 训练数据可划分为训练集和验证集,验证集有助于模型在测试集上实现更好的泛化能力。

Quiz

多选题

请选择所有被视为模型内部参数的选项。

1 / 4

✨ 使用 NumPy 的简单感知机模型

🍀 挑战:更改模型优化器