同样都是调参,为什么人家的神经网络比我牛逼100倍?
转自 | 人工智能前沿讲习
No.1
- Bag of Tricks for Image Classification with Convolutional Neural Networks,trick 合集 1。
- Must Know Tips/Tricks in Deep Neural Networks,trick 合集 2。
- 33条神经网络训练秘技,trick 合集 3。
- 26秒单GPU训练CIFAR10,工程实践。
- Batch Normalization,虽然玄学,但是养活了很多炼丹师。
- Searching for Activation Functions,swish 激活函数。
No.2
- uniform均匀分布初始化:
w = np.random.uniform(low=-scale, high=scale, size=[n_in,n_out])- Xavier初始法,适用于普通激活函数(tanh,sigmoid):scale = np.sqrt(3/n)
- He初始化,适用于ReLU:scale = np.sqrt(6/n)
- normal高斯分布初始化:
w = np.random.randn(n_in,n_out) * stdev # stdev为高斯分布的标准差,均值设为0- Xavier初始法,适用于普通激活函数 (tanh,sigmoid):stdev = np.sqrt(n)
- He初始化,适用于ReLU:stdev = np.sqrt(2/n)
- svd初始化:对RNN有比较好的效果。参考论文:https://arxiv.org/abs/1312.6120
- zero-center ,这个挺常用的.
X -= np.mean(X, axis = 0) # zero-center
X /= np.std(X, axis = 0) # normalize - PCA whitening,这个用的比较少.
- 要做梯度归一化,即算出来的梯度除以minibatch size
- clip c(梯度裁剪): 限制最大梯度,其实是value = sqrt(w1^2+w2^2….),如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15
- dropout对小数据防止过拟合有很好的效果,值一般设为0.5,小数据上dropout+sgd在我的大部分实验中,效果提升都非常明显.因此可能的话,建议一定要尝试一下。dropout的位置比较有讲究, 对于RNN,建议放到输入->RNN与RNN->输出的位置.关于RNN如何用dropout,可以参考这篇论文:http://arxiv.org/abs/1409.2329
- adam,adadelta等,在小数据上,我这里实验的效果不如sgd, sgd收敛速度会慢一些,但是最终收敛后的结果,一般都比较好。如果使用sgd的话,可以选择从1.0或者0.1的学习率开始,隔一段时间,在验证集上检查一下,如果cost没有下降,就对学习率减半. 我看过很多论文都这么搞,我自己实验的结果也很好. 当然,也可以先用ada系列先跑,最后快收敛的时候,更换成sgd继续训练.同样也会有提升.据说adadelta一般在分类问题上效果比较好,adam在生成问题上效果比较好。
- 除了gate之类的地方,需要把输出限制成0-1之外,尽量不要用sigmoid,可以用tanh或者relu之类的激活函数.1. sigmoid函数在-4到4的区间里,才有较大的梯度。之外的区间,梯度接近0,很容易造成梯度消失问题。2. 输入0均值,sigmoid函数的输出不是0均值的。
- rnn的dim和embdding size,一般从128上下开始调整. batch size,一般从128左右开始调整.batch size合适最重要,并不是越大越好.
- word2vec初始化,在小数据上,不仅可以有效提高收敛速度,也可以可以提高结果.
- 尽量对数据做shuffle
- LSTM 的forget gate的bias,用1.0或者更大的值做初始化,可以取得更好的结果,来自这篇论文:http://jmlr.org/proceedings/papers/v37/jozefowicz15.pdf, 我这里实验设成1.0,可以提高收敛速度.实际使用中,不同的任务,可能需要尝试不同的值.
- Batch Normalization据说可以提升效果,不过我没有尝试过,建议作为最后提升模型的手段,参考论文:Accelerating Deep Network Training by Reducing Internal Covariate Shift
- 如果你的模型包含全连接层(MLP),并且输入和输出大小一样,可以考虑将MLP替换成Highway Network,我尝试对结果有一点提升,建议作为最后提升模型的手段,原理很简单,就是给输出加了一个gate来控制信息的流动,详细介绍请参考论文: http://arxiv.org/abs/1505.00387
- 来自@张馨宇的技巧:一轮加正则,一轮不加正则,反复进行。
- 同样的参数,不同的初始化方式
- 不同的参数,通过cross-validation,选取最好的几组
- 同样的参数,模型训练的不同阶段,即不同迭代次数的模型。
- 不同的模型,进行线性融合. 例如RNN和传统模型.
https://www.zhihu.com/question/41631631/answer/94816420
No.3
喜欢文章,点个在看
同样都是调参,为什么人家的神经网络比我牛逼100倍?相关推荐
- 同样都是调参,为什么人家的神经网络比我牛逼 100 倍?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI算法与图像处理 No.1 总结一下在旷视实习两年来的炼 ...
- 人工智能从业者:大牛,工程师和调参狗
2019-11-19 11:23:00 你眼中的他和他眼中的他是不是同一个人. 今天准备来点儿干货. 你要问这两天什么火,每个产品经理都会告诉你人工智能和区块链.很多人都还没搞明白这些东西是什么,能解 ...
- 计算机能力挑战赛是线上的吗,全国高校计算机能力挑战赛验证码识别竞赛一等奖调参经验分享...
前言:这是为验证码识别竞赛而开发的一个基于pytorch实现的端到端的验证码识别系统.前后开发大概有2个月,其中大部分时间都在调参,后期参考kaggle大神经验,加入了一些trick,但是由于第一个榜 ...
- Paper---CNN调参论文参考
Paper-CNN调参论文参考 原文链接:A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Ne ...
- GPT-3 1750亿参数少样本无需微调,网友:「调参侠」都没的当了
2020-06-02 12:01:04 OpenAI最强预训练语言模型GPT-3周四发表在预印本 arXiv 上,1750亿参数! GPT系列的预训练语言模型一直是大力出奇迹的典型代表,但是一代和二代 ...
- echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...
点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 开发者在炼丹的过程中会不会遇到这些问题呢?比如说深度学习模型训练过程中盯 Log 盯得头晕眼花 ...
- python调参工作都是干啥的_xgboost原理及调参方法-通俗易懂版本
xgboost是各种比赛中最常使用的方法,网上介绍非常多,但是大部分看起来都比较费劲,这篇文章我将通俗的讲一下xgboost是在干什么,是怎么实现的,每一步的细节中要注意什么问题,达到理解-应用的程度 ...
- python调参工作都是干啥的_Python中Gradient Boosting Machine(GBM)调参方法详解
1.前言 如果一直以来你只把GBM当作黑匣子,只知调用却不明就里,是时候来打开这个黑匣子一探究竟了! 这篇文章是受Owen Zhang (DataRobot的首席产品官,在Kaggle比赛中位列第三) ...
- 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...
一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...
最新文章
- form表单自动填充
- SharpUpdater:开源的.NET桌面程序自动更新组件
- 树莓派python编程自学-一些缩短树莓派学习曲线的书籍、课程和网站
- 5-输入输出系统IO
- 七夕关爱单身狗程序猿:4本书给你一个完整的脱单秘籍
- 在win7下安装VC6.0
- php+mysql+like+通配符+变量
- 数据结构与算法python语言描述答案_《数据结构与算法Python语言描述》习题第二章第一题(python版)...
- python中字节(bytes)是如何转换成整型(long)的?
- 2.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精设定⦁蛇怪类:属性包括:怪物名字,生命值,攻击力方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值
- vivo手机便签扫描功能怎么识别图片文字转为电子文字
- 第三十二章 三更雪压飞狐城(二之全)
- IPv6知识概述 - IPv6地址
- 博客内容导航——你想要的我都有!
- Nodejs+express 代码工程打包 PKG
- Infor CloudSuite Industrial (SyteLine) 工序外协基本流程
- 解决Windows10电脑时间不同步或无法更新问题
- ES的创建索引和文档操作
- 【Python】用Python制作一个名片管理系统
- 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势
热门文章
- 16:00面试,16:08就出来了 ,问的实在是太...
- 基于PyTorch,如何构建一个简单的神经网络
- 怎样才能学好Vue,听听尤雨溪怎么说?
- Python脚本BUG引发学界震动,影响有多大?
- DLM:微信大规模分布式n-gram语言模型系统
- 自然语言处理十问!独家福利
- 图神经网络综述:方法及应用 | Deep Reading
- 新款Tesla最低仅售26.2万,马斯克终于凑齐了S3XY
- 西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019
- 在TensorFlow2.0发布前,帮你掌握TensorFlow的必备内容