神经网络项目流程
一、数据预处理
- 清洗数据:处理缺失值、异常值、无用数据和噪声。
- 数据标注:对于监督学习任务,需要人工标注数据,为每个样本提供正确的标签。
- 数据转换:将数据转换为适合模型输入的格式,如归一化、标准化、编码(例如独热编码)等。
- 数据集划分:将数据集分为训练集、验证集和测试集。
- 处理特征x和标签y:在已经处理好的数据中,提取出输入输出。测试集无标签。
二、模型设计:
- 根据问题的性质设计神经网络的架构,包括选择层的类型(如卷积层、全连接层、循环层等)、激活函数、损失函数和优化器。
- 确定超参数,如学习率、批次大小、迭代次数等。
三、模型训练
- 使用训练集数据训练模型。通常使用梯度下降算法,涉及到前向传播、计算损失、反向传播(梯度回传)和参数更新等步骤。
- 使用验证集数据监控模型的性能,调整超参数,防止过拟合。
分批训练:在训练集中取一批批的数据,每一批数据都加权平均计算出一个loss,并不断通过将梯度下降等方法训练更新数据,训练完一轮训练集后将数据在验证集验证效果,同样也是在验证集中取一批批数据验证,完成完一轮的训练和验证和,进行下一轮的训练,重复上述操作
四、模型评估与优化
- 使用测试集评估模型的最终性能。这通常是在模型训练完成后进行的,以确保评估结果的公正性。
- 计算各种评估指标,如准确率、召回率、F1分数、均方误差等。
- 根据评估结果对模型进行优化,可能包括调整网络架构、超参数调整、使用正则化技术等。
- 可能需要多次迭代训练和评估过程,直到达到满意的性能。
数据集的分类
-
训练集(Training Set):
- 训练集是用来训练模型的数据。在这部分数据上,模型会进行参数的学习和调整。通过不断地迭代和优化,模型试图学习到数据中的模式和规律。
- 在实际操作中,训练集通常占据了数据集的大部分,例如70%或80%。
-
验证集(Validation Set):
- 验证集用于在训练过程中评估模型的性能。在整个模型开发过程中都会被使用。每当研究者对模型进行调整(如更改超参数、添加或移除特征等),以及选择最佳的模型结构或特征。
- 验证集不参与训练过程,它独立于训练集,用于防止模型过拟合(overfitting),即模型在训练数据上表现很好,但在未见过的数据上表现不佳。
- 验证集通常占据数据集的一部分,例如10%到20%。
-
测试集(Test Set):
- 测试集用于最终评估模型的泛化能力。在模型训练和验证完成后,使用测试集来测试模型在完全未知数据上的表现。
- 测试集应该被严格保留,直到所有的模型选择和训练过程结束。这样可以确保测试结果的公正性和准确性。
- 测试集通常占据剩余的数据,例如10%到20%。
ps:验证集是训练完一轮就进行验证模型效果的,也是对模型不可见的数据(但是一般是自己从训练集中取一小部分当验证集),用于防止过拟合等情况。而测试集在整个模型开发过程中应该是完全隔离的(过程中完全看不到),直到模型的所有训练和验证过程结束,再进行测试,用于最终评估模型的泛化能力。它代表了模型在实际应用中可能遇到的全新数据。测试集的结果通常用来发布模型的性能报告或作为模型选择的最终依据
分批训练数据优劣
一次取合适大小的一批数据(称为一个批次或batch)进行训练的做法是为了在计算效率和内存限制之间取得平衡。