模型的获取和改进

mac2024-04-09  32

三 模型的获取和改进

为了构建一个模型,我们需要经历以下步骤。

Step-1:数据准备。

Step-1.1 数据预处理:收集数据、清洗数据、标注数据。 Step-1.2 构建数据的向量空间模型(将文本、图片、音频、视频等格式的数据转换为向量)。 Step-1.3 将构建好向量空间模型的数据分为训练集、验证集和测试集。 Step-2:训练——将训练集输入给训练程序,进行运算。训练程序的核心是算法,所有输入的向量化数据都会按该训练程序所依据的算法进行运算。训练程序输出的结果,就是模型。

Step-3:测试——将测试集数据输入给训练获得的模型,得到预测结果;再将预测结果与这些数据原本预期的结果进行比较。

将全部数据分割成训练集、验证集和测试集。这些集合都是做什么的呢? 训练集(Train Set):用来做训练的数据的集合。

验证集(Validation Set):在训练的过程中,每个训练轮次结束后用来验证当前模型性能,为进一步优化模型提供参考的数据的集合。

测试集(Test Set):用来测试的数据的集合,用于检验最终得出的模型的性能。

Step-2 训练,又可以细化为几个步骤。

Step-2.1: 编写训练程序。

Step-2.1.1: 选择模型类型; Step-2.1.2: 选择优化算法; Step-2.1.3: 根据模型类型和算法编写程序。

Step-2.2: 训练 -> 获得临时模型。

Step-2.3: 在训练集上运行临时模型,获得训练集预测结果。

Step-2.4: 在验证集上运行临时模型,获得验证集预测结果。

Step-2.5: 综合参照 Step-2.3 和 Step-2.4 的预测结果,改进模型。

Step-2.6: Step-2.2 到 Step-2.5 反复迭代,直至获得让我们满意,或者已经无法继续优化的模型。

如何优化模型 对照机器学习三要素,模型的优化可以从三个方面来进行:数据、调参和模型类型。

数据:

有限的数据上,我们能做些什么来尽量提高其质量呢?大概有如下手段: 1.对数据进行归一化(Normalization,又译作正规化、标准化)等操作。 2.采用 Bootstrap 等采样方法处理有限的训练/测试数据,以达到更好的运算效果。 3.根据业务进行特征选取:从业务角度区分输入数据包含的特征,并理解这些特征对结果的贡献。

调参:

调整超参数,例如用梯度下降方法学习 LR 模型时的步长(Alpha),用 BFGS 方法学习 Linear-chain CRF 时的权重(w)等。

调参本身有点像一个完整的 Project,需要经历:

制定目标 制定策略 执行 验证 调整策略 -> 3 这样一个完整的过程,其中 3-5 往往要经由多次迭代

调参有许多现成的方法可循(比如 Grid Search),应用这些方法,使得制定和调整“调参策略”有章可循,也可以减少许多工作量。

调参这一步很多时候没有一定之规。特别是在超参数比较多的时候,如何组合调参简直可以称为一门艺术。

只有当调参工程师对于模型的理论原理和算法的执行细节有深入了解的时候,才有可能找到正确的调参方向。 模型类型选择

换模型

有的时候,训练数据已经确定,而某个模型再怎么调参,都无法满足在某个特定指标上的要求。那就只好换个模型试试了。

比如,对于某个分类问题,Logistic Regression 不行,可以换 Decision Tree 或者 SVM 试试。

对于深度模型(CNN、DNN、RNN、LSTM 等等),训练时间普遍较长,可解释性极弱,一旦出现问题,很难 Debug。因此再次建议大家:在应用场景下,不要迷信 Cutting-edge Technology,无论工具还是方法,选合适的

最新回复(0)