本文主要给出了在实现网络或者调节代码过程使用的以及平时看一些文章记录下来的一些小技巧,主要针对卷积网络和图像处理。就个人感受,有些技巧还是非常有效的,而且通常可以通过看开源库的一些文档或者源代码来发掘这些内容,最后能够称为自己所用。

1.构造validation set

一般数据集可能不会给出验证集,所以自己会从给的训练集中按照一定比例(9:1)分离出验证集。

2.增加训练数据

为了更好的训练网络,有时候需要增加原始数据集,一般有以下方法[1]:
  • 沿着x轴将图片左右翻转
  • 随机的剪切、缩放、旋转
  • 用pca来改变RGB的强度值,产生分别对应的特征值和特征向量,然后用均值为0方差为0.1的随机数与特征值和特征向量相乘得到新的数据[2]

3.预处理

常见的是减均值、除方差,还有变化到-1~1,主要针对不同尺度的特征,例如房价预测的例子中,每个房子的房屋大小和卧室数量就不在一个数量级上,这种情况就需要对每一维特征进行尺度变换normalize,还有的方法是使用pca白化。但是就图像处理领域,通常就减去一个均值就可以直接拿来计算。

4.权重初始化

不要全部初始化为0,这样会导致大部分的deltaw都一样,一般用高斯分布或者uniform分布。但是这样的分布会导致输出的方差随着输入单元个数而变大,因此需要除以fan in(输入个数的平方根)。

5.卷积tricks

  • 图片输入是2的幂次方,例如32、64、96、224等。
  • 卷积核大小是3*3或者5*5。
  • 输入图片上下左右需要用0补充,即padding,且假如卷积核大小是5那么padding就是2(图片左右上下都补充2),卷积核大小是3padding大小就是1。

5.pooling层tricks

poolin层也能防止过拟合,使用overlapped pooling,即用来池化的数据有重叠,但是pooling的大小不要超过3。
max pooling比avg pooling效果会好一些。

6.避免overfitting

  • drop out能够避免过拟[1],一般在加在全连接层后面[3],但是会导致收敛速度变慢。
  • 正则化也能避免过拟合,L2正则l2正则惩罚了峰值权重,l1正则会导致稀疏权重,趋近于0,l1会趋向选择有用的输入。又或者可以给给权重矢量的模加上上边界(3 or 4),更新时对delta w进行归一化。

7.调参

使用pretrain好的网络参数作为初始值。然后fine-tuning,此处可以保持前面层数的参数不变,只调节后面的参数。但是finetuning要考虑的是图片大小和跟原数据集的相关程度,如果相关性很高,那么只用取最后一层的输出,不相关数据多就要finetuning比较多的层。
初始值设置为0.1,然后训练到一定的阶段除以2,除以5,依次减小。
加入momentum项[2],可以让网络更快的收敛。
  • 节点数增加,learning rate要降低
  • 层数增加,后面的层数learning rate要降低

9.激励函数

Sigmoid作为激励函数有饱和和梯度消失的现象,在接近输出值0和1的地方梯度接近于0(可通过sigmoid的分布曲线观察出)。因而可采用Rectified Linear Units(ReLUs)作为激励函数,这样会训练的快一些,但是relu比较脆弱,如果某次某个点梯度下降的非常多,权重被改变的特别多,那么这个点的激励可能永远都是0了,还有带参的prelu、产生随机值的rrelu等改进版本。但是leaky版本(0换成0.01)的效果并不是很稳定。

10.通过做图来观察网络训练的情况

可以画出随着不同参数训练集测试集的改变情况,观察它们的走势图来分析到底什么时候的参数比较合适。
  • 不同学习率与loss的曲线图,横坐标是epoch,纵坐标是loss或者正确率
  • 不同的batchsize与loss的曲线图,坐标同上

11.数据集不均衡

这种情况如果数据集跟imagenet的比较相近,可以直接用finetuning的方法,假如不相近,首先考虑重新构造数据集的每一类个数,再次可以减少数据量比较大的类(减采样),并且复制数据量比较小的类(增采样)。
以上是在实现卷积神经网络中使用过的和平时看文章中提及到的一些技巧,大多数现在的开源软件都是已经实现好了,直接调用使用即可。
参考:[1] http://cs231n.stanford.edu/
[2]http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html
[3] http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf

深度学习之常见tricks相关推荐

  1. 上手!深度学习最常见的26个模型练习项目汇总

    作者:沧笙踏歌 转载自AI部落联盟(id:AI_Tribe) 今天更新关于常见深度学习模型适合练手的项目.这些项目大部分是我之前整理的,基本上都看过,大概俩特点:代码不长,一般50-200行代码,建议 ...

  2. ML之模型文件:机器学习、深度学习中常见的模型文件(.h5、.keras)简介、h5模型文件下载集锦、使用方法之详细攻略

    ML之模型文件:机器学习.深度学习中常见的模型文件(.h5..keras)简介.h5模型文件下载集锦.使用方法之详细攻略 目录 ML/DL中常见的模型文件(.h5..keras)简介及其使用方法 一. ...

  3. 深度学习中常见的损失函数

    文章来源于AI的那些事儿,作者黄鸿波 2018年我出版了<TensorFlow进阶指南 基础.算法与应用>这本书,今天我把这本书中关于常见的损失函数这一节的内容公开出来,希望能对大家有所帮 ...

  4. 深度学习中常见的打标签工具和数据集资源

    深度学习中常见的打标签工具和数据集资源 一.打标签工具 1. labelimg/labelme 1.1 搭建图片标注环境(win10) (1) 安装anaconda3 (2) 在anaconda环境p ...

  5. 深度学习调参tricks总结!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:山竹小果,来源:NewBeeNLP 寻找合适的学习率(learni ...

  6. 深度学习调参tricks总结

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨山竹小果 来源丨NewBeeNLP 编辑丨极市平台 导读 本文总结了一系列深度学习工作中的调参策 ...

  7. 深度学习计算机视觉常见的29道面试题及解析

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者丨我要鼓励娜扎@知乎 来源丨https://zhuanlan.zhihu.com/p/89 ...

  8. 【深度学习】常见优化器的PyTorch实现

    这里主要讲不同常见优化器代码的实现,以及在一个小数据集上做一个简单的比较. 备注:pytorch需要升级到最新版本 其中,SGD和SGDM,还有Adam是pytorch自带的优化器,而RAdam是最近 ...

  9. 计算机视觉领域还有那些坑,深度学习/计算机视觉常见的8个错误总结及避坑指南...

    人类并不是完美的,我们经常在编写软件的时候犯错误.有时这些错误很容易找到:你的代码根本不工作,你的应用程序会崩溃.但有些 bug 是隐藏的,很难发现,这使它们更加危险. 在处理深度学习问题时,由于某些 ...

最新文章

  1. 浅谈 CAP 和 Paxos 共识算法
  2. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)
  3. 一个Apache CollectionUtils.intersection 方法的简单问题
  4. Codeforces 494D Upgrading Array
  5. Vivado中MIG核中DDR的读写控制
  6. 前端路由的概念与原理
  7. 《机器学习实战》chapter05 Logistic回归
  8. 小甲鱼c++学习视频之运算符重载
  9. 《SQL Server 2008从入门到精通》--20180716
  10. 使用vim的重不重要_VIM高级操作,经常用vim的应该多学习。多开发效率很有大帮助!...
  11. 职场老油条靠它升职后:还用Excel手动做报表?想想就可笑
  12. 征途linux mysql_Linux环境——MySQL安装及配置(5.7版本)
  13. WampServer下开启curl
  14. python nose框架_Python测试框架nose的介绍
  15. 创建一个SpringBoot项目(IDEA版本,保姆级教程)
  16. Python AutoCAD 文件
  17. 创意字体设计,创意思路哪里找
  18. Nik Collection v3.0.7 2020 Mac/Win PS/LR超强调色滤镜合集Nik插件中文版+中文教程
  19. 残差、方差、偏差、MSE均方误差、Bagging、Boosting、过拟合欠拟合和交叉验证
  20. 2021最新Java面试笔试,Java篇

热门文章

  1. 供应链金融3.0化解新车流通金融难题
  2. Google单季度,营收超过753亿美元
  3. eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593 近日,在飞马网主办的“FMI人工智能大数据高峰论坛”上,来自eBay的数据科学家李睿
  4. 电商双11已臻巅峰,众筹的双11才刚刚开始
  5. 人脸识别技术大总结—Face Detection Alignment
  6. 李开复:数位革命——创新创业的黄金时代
  7. java swing 图片切换_使用Javaswing自定义图片作为按钮(原创)
  8. 每日一博 - Java序列化一二事儿
  9. 深入理解分布式技术 - 微服务为什么需要API 网关
  10. Android各种各样的Drawable-更新中