当前位置: 华文星空 > 知识

【Deep Learning】深度学习调参技巧的总结

2020-07-28知识

作者:知乎 CVer

原文链接:请点击

本文仅作为学术分享,如果侵权,会删文处理

Qustion 深度学习调参有哪些技巧?

深度学习的效果很大程度上取决于参数调节的好坏,那么怎么才能最快最好的调到合适的参数呢?求解

Answer 1 作者:Jarvix

只想说一句:初始化

一次惨痛的教训是用normal初始化cnn的参数,最后acc只能到70%多,仅仅改成xavier,acc可以到98%。

还有一次给word embedding初始化,最开始使用了TensorFlow中默认的initializer(即glorot_uniform_initializer,也就是大家经常说的无脑使用xavier),训练速度慢不说,结果也不好。改为uniform,训练速度飙升,结果也飙升。

所以,初始化就跟黑科技一样,用对了超参都不用调;没用对,跑出来的结果就跟模型有bug一样不忍直视。

Answer 2 作者:BBuf

大概调了快一年CNN(2019年1月到今天),看到这个话题挺感兴趣的,以下是我的总结

做比赛

  • 特征提取。VGG16,VGG19,ResNet50,Xception是非常好用的几个特征提取模型。建议使用训练好的经典模型对数据集提取特征向量存储到本地,更方便使用,同时可以大幅度降低显存消耗。
  • ensemble:
  • 将不同的经典网络提取出的特征向量,假设 VGG16 提取出的特征向量维度是 [N,c1] , ResNet50 提取的特征向量维度是 [N,c2] , Xception 提取的特征向量维度是 [N, c3] ,那么我们可以使用三个系数 a、b、c 将其组合为形状为 [N, a*c1+b*c2+c*c3] ,其中 a、b、c 三个参数的取值代表我们使用哪个模型的特征多一些,如果是分类回归比赛,我们在后面接特征处理网络就可以了。可以取不同的 a、b、c 得到不同的特征,然后对结果做 voting soft-voting 等多种处理,一般结果不会太差啦。
  • 可以使用不同的初始化方式训练出模型,然后做ensemble。
  • 可以使用用不同超参数(如学习率, batch_size ,优化器)训练出不同模型,然后做ensemble。
  • 因为我就做了一点点入门级比赛,上面介绍的方法取得了还不错的结果,所以我就在这里献丑啦,方法确实挺无脑的,大家笑一笑就好啦。继续想了下,我好像除了这些有接触或者使用到,暂时没有什么其它的了,如果想起其他的了,之后补充下。

    Answer 3 作者:Captain Jack



    我和@杨军类似, 也是半路出家. 现在的工作内容主要就是使用CNN做CV任务. 干调参这种活也有两年时间了. 我的回答可能更多的还是侧重工业应用, 技术上只限制在CNN这块.

    先说下我的观点, 调参就是trial-and-error. 没有其他捷径可以走. 唯一的区别是有些人盲目的尝试, 有些人思考后再尝试. 快速尝试, 快速纠错 这是调参的关键.

    看了杨军的回答. 对于这个回答, 下面的评论里面@纪秋佳说的很对. 这个回答主要内容更多的是侧重理解网络. 而非训练网络.

    我要再强调下, 杨军的回答更多的涉及是理解网络而非训练网络 . 是的, 没错. 你看完回答中的所有内容, 对不起, 你还是不知道怎么实际训练一个网络, 尤其是复杂任务下的网络(因为简单任务根本不需要, 直接上来效果就会很好, 除非你要刷简单任务的排行榜).

  • 首先说下可视化:
  • 我个人的理解, 对于可视化, 更多的还是帮助人类以自己熟悉的方式来观察网络. 因为, 你是不可能边观察网络, 还边调参的. 你只是训练完成后(或者准确率到达一个阶段后), 才能可视化. 在这之前, 网络没有学习到良好的参数, 你可视化了也没意义, 网络达到不错的准确率了, 你看看其实也就听个响. 同样, 你的网络训练的一塌糊涂, 你可视化也没什么意义, 唯一能够看到的就是中间结果乱七八糟, 或者全黑全白, 这时候你直接看最后准确率就可以知

    < style data-emotion-css="19xugg7"> .css-19xugg7{position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);} < style data-emotion-css="12cv0pi"> .css-12cv0pi{box-sizing:border-box;margin:0;min-width:0;height:100px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);}
    < style data-emotion-css="1pr2waf"> .css-1pr2waf{font-size:15px;color:#09408e;}
    发布于 2020-07-28 17:05
    < style data-emotion-css="ch8ocw"> .css-ch8ocw{position:relative;display:inline-block;height:30px;padding:0 12px;font-size:14px;line-height:30px;color:#1772F6;vertical-align:top;border-radius:100px;background:rgba(23,114,246,0.1);}.css-ch8ocw:hover{background-color:rgba(23,114,246,0.15);}
    < style data-emotion-css="1xlfegr"> .css-1xlfegr{background:transparent;box-shadow:none;} < style data-emotion-css="1gomreu"> .css-1gomreu{position:relative;display:inline-block;}
    人工智能