model训练

模型训练技巧和可能出现的问题

1、导致训练不收敛的原因有哪些?

一、数据和标签

数据分类标注是否准确?数据是否干净?数据库太小一般不会带来不收敛的问题,只要你一直在train总会收敛(跑飞了不算)。反而不收敛一般是由于样本的信息量太大导致网络不足以fit住整个样本空间。样本少只可能带来过拟合的问题。

二、学习率设定不合理

在自己训练新网络时,可以从0.1开始尝试,如果loss不下降的意思,那就降低,除以10,用0.01尝试,一般来说0.01会收敛,不行的话就用0.001. 学习率设置过大,很容易震荡。不过刚刚开始不建议把学习率设置过小,尤其是在训练的开始阶段。

在开始阶段我们不能把学习率设置的太低否则loss不会收敛。我的做法是逐渐尝试,从0.1,0.08,0.06,0.05 …逐渐减小直到正常为止,有的时候学习率太低走不出低估,把冲量提高也是一种方法,适当提高mini-batch值,使其波动不大。

三、网络设定不合理

如果做很复杂的分类任务,却只用了很浅的网络,可能会导致训练难以收敛,换网络换网络换网络,重要的事情说三遍,或者也可以尝试加深当前网络。

2、数据集不好怎么办?

数据集是训练一个好的网络的前提条件,如果数据集的质量得不到保证的话,很难得到一个很好的网络参数,所以需要重新在数据集上进行下功夫。

3、深度学习中网络训练时loss不降的可能原因和解决方法?

其实这个问题和第一个问题是一样的,详细解释请看第一个问题答案。下面给出一些训练时常出现的问题。

train loss 不断下降,test loss不断下降,说明网络仍在学习;

train loss 不断下降,test loss趋于不变,说明网络过拟合;

train loss 趋于不变,test loss不断下降,说明数据集100%有问题;

train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;

train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。

4、Batch size对模型训练有什么影响?其大小是怎么选取的?

一般来说,在合理的范围之内,越大的 batch size 使下降方向越准确,震荡越小;batch size 如果过大,则可能会出现局部最优的情况(这也是其中的一个缺点吧)。小的 bath size 引入的随机性更大,难以达到收敛,极少数情况下可能会效果变好。
会影响训练的稳定性,Batch size过小会使Loss曲线振荡的比较大,大小一般按照2的次幂规律选择,这是为了硬件计算效率考虑的。

5、在深度学习中,通常会finetuning已有的成熟模型,再基于新数据,修改最后几层神经网络权值,为什么?

迁移学习任务就是从相似性出发,将旧领域学习过的模型应用在新领域上。

为什么需要迁移学习:

\1) 大数据与少标注的矛盾
虽然有大量的数据,但往往都是没有标注的,无法训练机器学习模型。人工进行数据标定太耗时。

\2) 大数据与弱计算的矛盾
普通人无法拥有庞大的数据量与计算资源。因此需要借助于模型的迁移。

\3) 普适化模型与个性化需求的矛盾
即使是在同一个任务上,一个模型也往往难以满足每个人的个性化需求,比如特定的隐私设置。这就需要在不同人之间做模型的适配。

\4) 特定应用(如冷启动)的需求

迁移学习可以初步初始化网络,因为对一些比较类似的任务,其实模型参数的值基本上相同,而且这些参数经过大量的训练,已经有很好的特征提取能力,将backbone参数使用这类模型进行权重的初始化,后面做training的时候,模型收敛速度会更快。

**负迁移问题:**负迁移(Negative Transfer)指的是,在源域上学习到的知识,对于目标域上的学习产生负面作用。

产生负迁移的原因主要有:

1、数据问题:源域和目标域压根不相似,谈何迁移?

2、方法问题:源域和目标域是相似的,但是,迁移学习方法不够好,没找到可迁移的成分。

负迁移给迁移学习的研究和应用带来了负面影响。在实际应用中,找到合理的相似性,并且选择或开发合理的迁移学习方法,能够避免负迁移现象。

6、样本不均衡你会怎么处理(重采样/Focal loss)

样本不均衡的方法无非有两种,一种是增强训练数据,另外一种是采用focal loss。
通过某种方法使得不同类别的样本对于模型学习中的Loss(或梯度)贡献是比较均衡的。具体可以从数据样本、模型算法、目标函数、评估指标等方面进行优化,其中数据增强、代价敏感学习及采样+集成学习是比较常用的,效果也是比较明显的。其实,不均衡问题解决也是结合实际再做方法选择、组合及调整,在验证中调优的过程。
https://zhuanlan.zhihu.com/p/494220661

7、为什么深层神经网络难以训练?

在深度神经⽹络中的梯度是不稳定的,在前⾯的层中或会消失,或会激增。这种不稳定性才是深度神经⽹络中基于梯度学习的根本问题。

1、梯度消失

梯度消失是指通过隐藏层从后向前看,梯度会变的越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习会卡住,除非梯度变大。梯度消失的原因受到多种因素影响,例如学习率的大小,网络参数的初始化,激活函数的边缘效应等。在深层神经网络中,每一个神经元计算得到的梯度都会传递给前一层,较浅层的神经元接收到的梯度受到之前所有层

梯度的影响。如果计算得到的梯度值非常小,随着层数增多,求出的梯度更新信息将会以指数形式衰减,就会发生梯度消失。

2、梯度爆炸

在深度网络或循环神经网络(Recurrent Neural Network, RNN)等网络结构中,梯度可在网络更新的过程中不断累积,变成非常大的梯度,导致网络权重值的大幅更新,使得网络不稳定;在极端情况下,权重值甚至会溢出,变为NaN值,再也无法更新。

3、权重矩阵的退化导致模型的有效自由度减少

参数空间中学习的退化速度减慢,导致减少了模型的有效维数,网络的可用自由度对学习中梯度范数的贡献不均衡,随着相乘矩阵的数量(即网络深度)的增加,矩阵的乘积变得越来越退化。在有硬饱和边界的非线性网络中(例如 ReLU 网络),随着深度增加,退化过程会变得越来越快。
解决方案:
https://zhuanlan.zhihu.com/p/72589432
8.深度前馈网络与Xavier初始化原理
https://zhuanlan.zhihu.com/p/27919794

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Keras中,您可以使用`ModelCheckpoint`回调函数来自动保存每个epoch的模型参数,包括每个epoch的训练指标。具体地,您可以按照以下步骤进行操作: 1. 实例化一个`ModelCheckpoint`对象,并将其传递给`fit()`方法的`callbacks`参数。例如: ```python from keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint('model-{epoch:03d}.h5', monitor='val_loss', verbose=1, save_best_only=True, mode='auto') history = model.fit(x_train, y_train, validation_data=(x_val, y_val), epochs=num_epochs, batch_size=batch_size, callbacks=[checkpoint]) ``` 在上面的代码中,`ModelCheckpoint`会将每个epoch的模型参数保存在一个文件中,文件名包含该epoch的编号。`monitor`参数指定了需要监测的指标(例如,验证集损失),`save_best_only`参数指定了只保存最好的模型参数(即指标最小或最大的那个epoch的参数),`mode`参数指定了指标的比较方式(例如,`'auto'`表示自动选择比较方式)。 2. 训练模型并保存每个epoch的指标。在训练完成后,您可以使用以下代码读取每个epoch中的训练指标: ```python import pandas as pd history_df = pd.read_csv('model-{epoch:03d}.csv') val_loss = history_df['val_loss'].values val_acc = history_df['val_accuracy'].values ``` 在上面的代码中,`pandas`库被用于读取CSV文件中的数据。`csv`文件中保存了每个epoch的训练指标,包括训练集损失和准确率、验证集损失和准确率等。使用`pandas`库可以方便地将这些数据读取为一个`DataFrame`对象,然后再将其转换为`numpy`数组,方便后续处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值