文章目录

  • RNN模型训练经验总结
    • 数据准备
      • “look at your data”!!
      • 小步试错。
    • 搭建模型
      • 设置端到端的训练评估框架
    • forward propagation设置
      • 激活函数
      • dropout
    • back propagation设置
      • 学习率 learning rate
      • 优化算法
    • 避免出现NaN的几个方法
    • 利用好过拟合。
    • 其他经验
    • 技巧集锦

RNN模型训练经验总结

数据准备

“look at your data”!!

训练神经网络前,别管代码,先从预处理数据集开始。一定要认认真真先去了解数据的分布并找出其中的规律。在检查数据的过程中,可能会发现重复的、标记错误的样本,在早期发现这些错误都可以避免以后走弯路。

由于神经网络实际上是数据集的压缩版本,因此您将能够查看网络(错误)预测并了解它们的来源。如果你的网络给你的预测看起来与你在数据中看到的内容不一致,那么就会有所收获。
一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。

小步试错。

在数据集很大的情况下,建议先用 1/100、1/10 的数据跑一跑,对模型性能和训练时间有个底,外推一下全量数据到底需要跑多久。在没有足够的信心前不做大规模实验。

batchsize通常影响没那么大,除了特殊的算法需要batch大一点。Rnn模型如果不考虑时间,试一试 batch size=1。

如果初步训练效果还不错,就可以试一试增广数据,但是增广不能违反数据的基本规律,比如行人识别一般就不会加上下翻转的,因为不会碰到头朝下的情况。

搭建模型

设置端到端的训练评估框架

处理完数据集,还是不要着急训练模型,下一步应该做的是建立一个完整的训练+评估框架。
在这个阶段,要选择一个简单又不至于搞砸的模型,比如线性分类器、CNN,可视化损失。获得准确度等衡量模型的标准,用模型进行预测。

forward propagation设置

激活函数

常用的激活函数有relu、leaky-relu、sigmoid、tanh等, CNN优选ReLU,RNN来说推荐: tanh=relu>other.

输出层,多分类任务选用softmax输出,二分类任务选用sigmoid输出,回归任务选用线性输出。

中间隐层,则优先选择relu激活函数(relu激活函数可以有效的解决sigmoid和tanh出现的梯度弥散问题,多次实验表明它会比其他激活函数以更快的速度收敛)。

dropout

分类问题用dropout ,只需要最后一层softmax 前用基本就可以了,能够防止过拟合,可能对accuracy提高不大,但是dropout 前面的那层如果是之后要使用的feature的话,性能会大大提升。

RNN dropout一般在循环层以后加。一层循环层,一个dropout层,如此叠加,或者1~2层循环层,加一个dropout层,之后是输出层。

back propagation设置

学习率 learning rate

learning rate 最重要,推荐了解 cosine learning rate 和 cyclic learning rate。
在确定初始学习率的时候,从一个很小的值(例如 1e-7)开始,然后每一步指数增大学习率(例如扩大1.05 倍)进行训练。训练几百步应该能观察到损失函数随训练步数呈对勾形,选择损失下降最快那一段的学习率即可。

优化算法

首选Adams。根据经验,Adam对超参数更加宽容,包括不良的学习率。

Adam和L2正则结合可能会有很好的效果。

在设定基线的早期阶段,使用学习率为1e-4的Adam 。

避免出现NaN的几个方法

RNN一定要设置 gradient clipping,如果不这样做,就会导致训练一段时间以后 loss 突然变成 NaN。
对于语言模型或者机器翻译, tying input & output embedding(就是词向量层和输出 softmax 前的矩阵共享参数,在语言模型或机器翻译中常用)时学习率需要设置得非常小,不然容易 Nan。

利用好过拟合。

首先我们得有一个足够大的模型,它可以过拟合,减少训练集上的损失,然后适当地调整它,放弃一些训练集损失,改善在验证集上的损失。

其他经验

  1. 要有耐心!有些模型一定要训练很久才会有比较好的结果,尽量不要在一开始觉得收敛不好就停了模型乱改参数。
  2. 能用经典模型就用经典模型,绝大多数情况自己设计的参数都不如教程和框架的默认参数好。除非对问题有独到的间接,不要自己随便设计新组件。
  3. 要学会利用tensorboard! 可以帮助监视网络状态,调整网络参数。比如在学习率下降的一瞬间,通过tensorboard就会发现,网络会有个巨大的性能提升,同样的fine-tuning也要根据模型的性能设置合适的学习率,比如一个训练的已经非常好的模型你上来就1e-3的学习率,那之前就白训练了,就是说网络性能越好,学习率要越小。
  4. 网络层数,参数量什么的都不是大问题,在性能不丢的情况下,减到最小
  5. 一定要重视调参数的论文/实验报告,要认识到AI的理论基础,特别还缺乏严密的数学证明这个事实,更类似于实验科学。看论文时务必注意超参数设置等细节。比如google著名的BERT语言模型激活函数用的是GELU,而不是transformer元论文中的ReLU。
  6. 随时保存模型和代码。每次运行之前都可以备份以下运行时调用的代码文件,以便以后查看修改。随时存档模型,要有validation 。把每个epoch和其对应的validation 结果存下来,可以分析出开始overfitting的时间点,方便下次加载fine-tuning。

技巧集锦

Must Know Tips/Tricks in Deep Neural Networks,trick 合集 2。
33条神经网络训练秘技,trick 合集 3。
26秒单GPU训练CIFAR10,工程实践。
Batch Normalization,
Searching for Activation Functions,swish 激活函数。
NLP领域推荐:
Regularizing and Optimizing LSTM Language Models(LSTM 的训练技巧)
Massive Exploration of Neural Machine Translation Architectures(NMT 里各个超参的影响)
Training Tips for the Transformer Model(训练 Transformer 时会发生的各种现象)
RoBERTa: A Robustly Optimized BERT Pretraining Approach(BERT 预训练技巧)

RNN模型训练经验总结相关推荐

  1. NLP文本分类入门学习及TextCnn实践笔记——模型训练(三)

    这篇记模型训练. 距离第一篇已过去一个月.从学习到正式启动模型训练,花了两周.模型训练召回率和准确率达到上线标准又花了两三周. 训练及测试样本评估的精确率都是97%.98%,结果一到线上实验,结果惨不 ...

  2. 如何训练出优秀的深度学习模型-深度学习训练经验总结!

    深度学习训练中的经验总结! 一些训练心得,欢迎补充. 1 优化器 优化器是很重要的一个环节,使用得当会发挥出意想不到的结果. 首先可尝试,Adam: 进一步可使用SGD,对优化器对参数较敏感,可修改的 ...

  3. 【深度学习】深度学习模型训练全流程!

    Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集.模型训练.模型加载和模型调参四个部分对深度学习中模型训练的全流程进行讲解. 一个成熟合格的深度学习训练流 ...

  4. 加载tf模型 正确率很低_深度学习模型训练全流程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集. ...

  5. 收藏 | PyTorch深度学习模型训练加速指南2021

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者:LORENZ KUHN 编译:ronghuaiyang ...

  6. 深度学习模型训练的一般方法(以DSSM为例)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 本文主要用于记录DSSM模型学习期间遇到的问题及分析.处理经验.先统领性地提出深度学习模型训练 ...

  7. 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)

    本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26  ...

  8. 深度学习模型训练全流程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集. ...

  9. DeepSpeed超大规模模型训练工具

    DeepSpeed超大规模模型训练工具 2021年 2 月份发布了 DeepSpeed.这是一个开源深度学习训练优化库,包含的一个新的显存优化技术-- ZeRO(零冗余优化器),通过扩大规模,提升速度 ...

最新文章

  1. 脱壳 VMProtect 1.70.4
  2. GIA张怡:关于小白入门AI算法工程师的直播分享
  3. python+selenium个人学习笔记10-调用JavaScript和截图
  4. Android之SparseArray<E>详解
  5. Android programming on Mac 之安装Eclipse
  6. Nginx原子操作及自旋锁实现
  7. c语言只能最大值不能最小值,用c语言编写输入10个无序的整数,去掉一个最大值和最小值,然后求其平均值...
  8. azure云数据库_Microsoft Azure SQL数据库-分步创建教程
  9. “攀哥”离场 不掩融云组最强战舰技术顶流如云
  10. 后羿射日般的精准 - 阿里云ECS调度是如何炼成的
  11. 搭建一个tomcat的JSP服务器环境
  12. 胖哈勃杯Pwn400、Pwn500详解
  13. 破解还原卡的方法总结!!
  14. Tomcat9的新特性和Tomcat8的区别
  15. 手撸Mybatis源码-基础版
  16. 养老保险和住房公积金如何转移
  17. [转载]从春招到秋招,一个本科生的求职之路。
  18. 互联网IT就业市场,你要说最有市场的一定是它,java面试常见笔试题
  19. easypoi根据模板导出word
  20. 【图片新闻】用于运送士兵和物品的“灰熊”坦克机器人

热门文章

  1. new tech 201602
  2. 【天光学术】护士长竞争上岗演讲
  3. uni-app 定义 全局过滤器(filter)、“Tue Mar 08 2022 14:44:42 GMT+0800 (中国标准时间)“ 过滤为 “2022-03-08“ 格式
  4. 太方便了,产品的产品工具,墨刀
  5. html5实现视频(放大缩小播放暂停)
  6. iOS/swift之判断机型和手机尺寸相关
  7. 【下载】2019考研视频教程大全
  8. 刘一男词汇课(从ancestor到universa):书上有路勤为径,学海无涯“懂“作舟
  9. 安卓手机-百度浏览器-部分js不生效原因
  10. Java基础面试题一