一、前置知识
1、Seq2Seq:Seq2Seq,全称Sequence to Sequence,是一种用于处理序列数据的深度学习模型,其核心思想是将一个输入序列转换成一个输出序列。本次task2的模型用于机器翻译。
2、torchtext:是一个用于自然语言处理(NLP)任务的库,它提供了丰富的功能,包括数据预处理、词汇构建、序列化和批处理等,特别适合于文本分类、情感分析、机器翻译等任务
3、jieba:是一个中文分词库,用于将中文文本切分成有意义的词语
4、sacrebleu:用于评估机器翻译质量的工具,主要通过计算BLEU(Bilingual Evaluation Understudy)得分来衡量生成文本与参考译文之间的相似度
5、spacy:是一个强大的自然语言处理库,支持70+语言的分词与训练
6、BLEU:在机器翻译领域,BLEU(Bilingual Evaluation Understudy)是一种常用的自动评价指标,用于衡量计算机生成的翻译与一组参考译文之间的相似度。这个指标特别关注 n-grams(连续的n个词)的精确匹配,可以被认为是对翻译准确性和流利度的一种统计估计。
二、操作流程
1、配置环境
2、数据预处理
清洗和规范化数据、分词、构建词汇表和词向量、序列截断和填充、添加特殊标记、数据增强、数据分割
3、模型训练
4、翻译质量评价
三、关于train_loss和val_loss(个人盲区)
train_loss(训练损失)
训练损失是指在训练过程中,模型在训练集上的预测值与实际值之间的差异。通过最小化训练损失,模型学习如何更好地在训练数据上做出预测。在训练过程中,我们通常会看到训练损失逐渐下降,这意味着模型正在逐渐改进其在训练集上的性能。
val_loss(验证损失)
验证损失是指模型在验证集(与训练集独立的数据集)上的预测值与实际值之间的差异。验证集用于评估模型在未见过的数据上的性能,从而帮助我们了解模型的泛化能力。理想情况下,我们希望看到验证损失随着训练的进行而下降,这表明模型正在学习有用的特征,并且这些特征能够在新的、未见过的数据上泛化。
train_loss与val_loss的关系
-
理想情况:在训练过程中,
train_loss
和val_loss
都逐渐下降,且两者之间的差距保持在一个较小的范围内。这表示模型正在有效地学习,并且具有良好的泛化能力。 -
过拟合:如果
train_loss
持续下降,但val_loss
在某个点后开始上升,这通常表明模型正在过拟合训练数据。过拟合意味着模型已经学习到了训练数据中的噪声或特定于训练集的细节,而这些信息对于泛化到新的数据是不利的。 -
欠拟合:如果
train_loss
和val_loss
都保持较高水平,且下降缓慢,这可能表明模型欠拟合。欠拟合意味着模型没有从训练数据中学习到足够的信息,因此无法在训练集或验证集上做出良好的预测。 -
随机性:由于模型训练过程中的随机性(如随机初始化权重、数据洗牌等),
train_loss
和val_loss
的波动是正常的。然而,长期的趋势(如持续上升或下降)比短期的波动更重要。
调整策略
-
过拟合:可以通过增加正则化(如L1、L2正则化)、减少模型复杂度、增加训练数据量、使用早停法(early stopping)等方法来缓解过拟合。
-
欠拟合:可以尝试增加模型复杂度(如增加网络层数、神经元数量)、使用更复杂的模型、延长训练时间、减少正则化强度等方法来改善欠拟合。
四、个人感悟
1、合理根据自己所选择GPU来选择相应batch_size
2、bacth_size过大虽然效率高了但是精度和质量低了,但事实batch_size低了训练时长就变长了
因此要合理选择N的值和batch_size的值
3、跑模型得高分就像炼丹,沉心调参才能得好丹