86 0

[学科前沿] 机器学习的通用工作流程(开发模型) [推广有奖]

  • 0关注
  • 0粉丝

VIP1

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
1010 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-11-28
最后登录
2018-11-28

楼主
201618003王蹦蹦 发表于 2025-11-20 07:13:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

模型开发

在明确了如何评估进展之后,就可以着手开发模型了。多数教程和研究项目往往直接跳到这一步,忽略了问题定义和数据收集等前期工作,也省略了模型部署和维护的后期步骤,假定这些都已经完成。实际上,模型开发只是整个机器学习流程中的一个环节,我认为它并不是最困难的部分。在机器学习过程中,最具挑战性的任务包括问题定义、数据收集、数据标注和数据清理。因此,接下来的内容将会相对简单。

数据准备

前面提到,深度学习模型通常不会直接处理原始数据。数据预处理的主要目标是使原始数据更适合神经网络的处理,主要包括向量化、规范化和处理缺失值。虽然许多预处理技术是特定于某一领域的(例如文本数据或图像数据),但这里将介绍适用于所有类型数据的基本方法。

1. 向量化

神经网络的所有输入和目标通常需要是浮点数张量(特殊情况除外,可以是整数张量或字符串张量)。无论处理的是声音、图像还是文本,第一步总是将数据转换成张量,这一过程称为数据向量化。例如,在第四章的两个文本分类案例中,文本最初被表示为整数列表(代表词序),通过one-hot编码转换为float32格式的张量。而在手写数字分类和房价预测的例子中,数据已经是向量形式,因此可以跳过这一步。

2. 规范化

在第二章的MNIST数字分类示例中,图像数据最初以0至255范围内的整数表示灰度值。在输入神经网络前,需要将这些数据转换为float32格式,并除以255,以便数据值在0至1之间。同样地,在房价预测示例中,各特征的取值范围不同,有的是较小的浮点数,有的是较大的整数。在输入神经网络前,需要对每个特征分别进行规范化,使其均值为0,标准差为1。

通常,将较大数值(如多位整数,远大于神经网络权重的初始值)或异质数据(例如一个特征的取值范围在0至1之间,另一个特征的取值范围在100至200之间)输入神经网络是不安全的。这样做可能导致较大的梯度更新,影响神经网络的收敛。为了简化神经网络的学习过程,输入数据应具备以下特点:

  • 取值较小:通常大部分值应在0至1之间。
  • 同质性:所有特征的取值范围应大致相同。

此外,还有一种更为严格但也非常有用的方法(尽管不是必须的),即对每个特征分别进行规范化,使其均值为0,标准差为1。这种方法在NumPy数组中很容易实现。

3. 处理缺失值

数据中有时会出现缺失值。例如,在房价预测示例中,第一个特征(数据中的第0列)是人均犯罪率。如果并非所有样本都包含这一特征,该怎么办?此时,训练数据或测试数据中就会出现缺失值。

你可以选择完全舍弃这个特征,但这不是唯一的选择。

  • 如果是分类特征,可以创建一个新的类别,表示“此值缺失”。模型将自动学习这一新类别对目标的意义。
  • 如果是数值特征,应避免使用像“0”这样的任意值填充,因为这可能在特征形成的空间中造成不连续,增加模型泛化的难度。更好的做法是用该特征的平均值或中位数替换缺失值。你还可以训练一个模型,根据其他特征的值预测缺失特征的值。

需要注意的是,如果测试数据中的分类特征有缺失值,而训练数据中没有,神经网络将无法学会忽略这些缺失值。在这种情况下,建议手动生成一些带有缺失值的训练样本:复制一些训练样本,并删除测试数据中可能出现缺失的某些分类特征。

选择评估方法

第五章讨论了模型的目标是实现泛化。在整个模型开发过程中,每个建模决策都应以验证指标为指导,这些指标用于衡量泛化性能。评估方法的目的是准确估算模型在实际生产数据上的表现(如精度)。这一过程的可靠性对于构建有用的模型至关重要。

第五章介绍了三种常用的评估方法:

  • 简单留出验证: 当数据量足够大时适用。
  • K折交叉验证: 如果留出验证的样本数量不足,无法确保可靠性,应使用此方法。
  • 重复K折交叉验证: 如果数据量很少且需要非常精确的模型评估,应使用此方法。

通常情况下,第一种方法已足够有效。但务必确保验证集具有代表性,并避免训练集和验证集之间存在冗余样本。

超越基准

在开始深入研究模型本身时,首要目标是获得统计功效,即开发一个能够超越简单基准的小模型。在这个阶段,应重点关注以下三个方面:

  • 特征工程: 过滤掉无信息量的特征(特征选择),并利用对问题的理解开发可能有用的特征。
  • 选择正确的架构预设:

在选择模型架构时,你考虑使用哪种类型?是密集连接网络、卷积神经网络、循环神经网络,还是Transformer?此外,深度学习是否适合完成这项任务,或者是否有其他更适合的方法?

在确定合适的训练设置时,需要考虑以下几个方面:应采用何种损失函数?批量大小和学习率应设为何值?对于多数问题,可以参考现有的模板。你并不是第一个构建垃圾信息检测器、音乐推荐引擎或图像分类器的人。因此,研究先前的技术,以确定最有可能在你的任务上表现良好的特征工程方法和模型架构是非常重要的。

需要注意的是,模型并不总能获得统计上的有效性。即使尝试了多种合理的架构后仍无法超越简单的基准,这可能意味着输入数据中并不包含问题的答案。请记住以下两个假设:

  • 假设可以根据输入预测输出。
  • 假设现有数据包含足够的信息,能够学习输入与输出之间的关系。

如果这两个假设不成立,那么可能需要重新考虑解决问题的方法。

当获得了具有统计有效性的模型后,下一个问题是:该模型是否足够强大?它是否有足够的层数和参数来准确建模问题?例如,虽然logistic回归模型在MNIST问题上具有统计有效性,但它不足以很好地解决该问题。在机器学习中,优化与泛化之间存在普遍的矛盾,理想的模型位于欠拟合和过拟合、容量不足和容量过大的边界上。为了找到这条边界,首先需要超越它。

要了解需要多大规模的模型,首先应开发一个过拟合的模型。这可以通过以下步骤实现: (1) 增加网络的层数; (2) 扩大每层的规模; (3) 延长训练周期。 同时,始终监控训练损失和验证损失,以及关注的指标的训练值和验证值。一旦发现模型在验证数据上的性能开始下降,即表明已经达到了过拟合的状态。

如果模型既具有统计有效性又能够过拟合,那么接下来的目标就是最大化其泛化性能。这一步骤通常最为耗时,涉及不断地调整模型、训练模型、在验证数据上评估模型(而非测试数据),然后再调整模型,直至达到最佳性能。建议尝试以下策略: - 尝试不同的网络架构,调整层数。 - 引入dropout正则化技术。 - 对于小型模型,应用L1或L2正则化。 - 调整超参数,如各层的单元数量或优化器的学习率,寻找最优配置。 - (可选)持续进行数据收集或特征工程:增加并标注更多数据;改进特征提取;移除无信息价值的特征。 使用超参数自动调节工具(例如KerasTuner)可以将大部分工作自动化,具体将在第13章中讨论。

值得注意的是,每次基于验证过程的反馈调整模型,都会将验证过程的信息泄露给模型。如果仅进行几次这样的调整,影响不大;但如果频繁迭代,最终可能导致模型对验证过程过拟合(尽管未直接在验证数据上训练模型)。这会削弱评估过程的可信度。

一旦找到了满意的模型配置,可以在所有可用的数据(包括训练数据和验证数据)上训练最终的生产模型,并在测试集上做最终评估。如果模型在测试集上的表现明显逊色于在验证数据上的表现,这可能意味着验证流程不够可靠,或在调整模型参数时对验证数据产生了过拟合。此时,可能需要采用更稳健的评估方法,例如重复K折交叉验证。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:机器学习 学习的 工作流 Logistic回归模型 logistic回归

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 22:00