数据预处理

What:输入神经网络数据的好坏直接关系着网络训练结果,一般需要对数据进行预处理,常用的数据预处理方式有:

  • 去均值:每个原始数据减去全部数据的均值,即把输入数据各个维度的数据都中心化到0;

  • 归一化:一种方式是使用去均值后的数据除以标准差,另外一种方式是全部数据都除以数据绝对值的最大值;

  • PCA/白化:这是另外一种形式的数据预处理方式,一种方式是降维处理,另外一种是进行方差处理;

Why:通过对数据进行预处理能够使得它们对模型的影响具有同样的尺度或其他的一些目的。

Ref:CS231n Convolutional Neural Networks for Visual Recognition.

初始化

What:权重若初始化合理能够提升性能并加快训练速度,偏置一般设置为0,对于权重而言,建议统一到一定区间内:

  • 对于线性层[1]:区间为[-v,v],v = 1/sqrt(输入尺寸),sqrt表示开根号;

  • 对于卷积层[2]:区间为[-v,v],v = 1/sqrt(卷积核的宽度x卷积核的高度x输入深度);

  • 批量标准化[3]在某些方面的应用降低了调整权值初始化的需要,一些研究结果页提出了相应的替代公式。

Why:使用默认的初始化,每个神经元会随着输入数量的增多而存在一个方差,通过求根号缩放每个权重能确保神经元有近似的输出分布。

Ref

  • 1.Stochastic Gradient Descent Tricks, Leon Bottou;

  • 2.在Torch中默认这么操作;

  • 3.Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, S. Ioffe and C. Szegedy;

What:对于长短期记忆网络(LSTM),遗忘偏置一般设置为1,可以加快训练过程。

Why:直觉是训练开始时,想要信息在细胞之间传播,故不希望细胞忘记它的状态。

Ref:An Empirical Exploration of Recurrent Network Architectures, Rafal Jozefowicz et al.

What:对于t-分布领域嵌入算法(t-SNE),原作者建议对于大小为5000~10000之间的数据集,将困惑度设置为5和50之间[1],对于更大的数据集,相应的困惑度也会增。

Why:困惑度决定了每个点的高斯分布的方差大小,更小的困惑度将获得更多的集群,大的困惑度与之相反,太大的困惑度没有任何意义;另外需要考虑的是画出的聚类不能保留原有的规模,聚类之间的距离不一定代表原始的空间几何,不同的困惑度能在数据结构上提供互补的信息,每次运行都会产生不同的结果[2]。

Ref

  • 1.Visualizing High-Dimensional Data Using t-SNE, L.J.P. van der Maaten.

  • 2.How to Use t-SNE Effectively, Wattenberg, et al., Distill, 2016.

训练

What:除了使用真值硬化目标外,同样可以使用软化目标(softmax输出)训练网络。

Ref:Distilling the Knowledge in a Neural Network / Dark knowledge, G. Hinton et al.

What:学习率可能是需要调参中最重要的一个参数,一种策略是选择一些参数均有随机化学习率,并观察几次迭代后的测试误差。

Ref:Some advice for tuning the hyperparameters. Ref: Goodfellow et al 2016 Book

正则化

What:在RNN中使用Dropout,它仅仅应用于非循环连接[1],但是一些最近的文章提出了一些技巧使得Dropout能应用于循环连接[2]。

Ref

  • 1.Recurrent Neural Network Regularization, Wojciech Zaremba et al.

  • 2.Recurrent Dropout without Memory Loss, Stanislau Semeniuta et al.

What:批量标准化(Batch Normalization, BN),增添了一个新的层,作者给出一些额外的技巧加速BN层的工作:

  • 增大学习率;

  • 移除/减少dropout:在不增加过拟合发生的条件下加快训练;

  • 移除/减少L2范数权值归一化;

  • 加快学习率衰减速度:使得网络训练更快;

  • 移除局部响应归一化;

  • 将训练样本打乱地更彻底:防止相同的样本总出现在小批量中(验证集上提高了1%);

  • 减少光度失真;

Why:一些好的解释在此。

Ref:Accelerating Deep Network Training by Reducing Internal Covariate Shift, S. Ioffe and C. Szegedy.

网络结构

What:使用跳跃式连接,直接将中间层连接到输入/输出层。

Why:作者的观点是通过减少神经网络的底端与顶端之间的处理步骤使得训练深层网络更加简单,并减轻梯度消失问题。

When:在一些CNN结构中或RNN中一些重要的层。

Ref:Generating Sequences With Recurrent Neural Networks, Alex Grave et al.What:为LSTM增加窥视孔连接(连接之前输出到门的输入),根据作者的观点,这个操作对长时间依赖关系有用。

Ref:Learning Precise Timing with LSTM Recurrent Networks, Felix A. Gers et al.

What:大多数的深度学习框架提供了一个结合SoftMax和Log的函数或者是在损失函数中计算SoftMax(在Tensorflow中是softmax_cross_entropy_with_logits,在Torch中是nn.LogSoftMax),这些应该被更好地使用。

Why:Log(SoftMax)在数值上不稳定是小概率,从而导致溢出等不良结果。另外一种流行的方法是在Log中加入一些小数避免不稳定。

自然语言处理(NLP)

What:对于RNN和seq2seq模型的一些技巧:

  • 嵌入尺寸:1024或620。更小的维度比如256也能导致很好的表现,但是更高的维度不一定导致更好的表现;

  • 对于译码器而言:LSTM>GRU>Vanilla-RNN;

  • 2-4层似乎普遍足够,但带有残差的更深网络看起来很难收敛,更多去挖掘更多的技巧;

  • Resd(密集的残差连接)>Res(近连接先前层)>无残差连接;

  • 对于编码器而言:双向>单向(反向输入)>单向;

  • 注意力(加法)>注意力(乘法)>无注意力;

  • 使用光束会导致更好的结果;

Ref:Massive Exploration of Neural Machine Translation Architectures, Denny Britz, Anna Goldie et al.

What:对于seq2seq而言,翻转输入序列的顺序,保持目标序列的完整。

Why:根据作者的观点,这种简单的数据变换极大提升了LSTM的性能。

Ref:Sequence to Sequence Learning with Neural Networks, Ilya Sutskever et al.

What:对于seq2seq而言,为编码器和译码器网络使用不同的权值。

Ref:Sequence to Sequence Learning with Neural Networks, Ilya Sutskever et al.

What:当训练时,强制更正译码器的输入;在测试时,使用先前的步骤,这使得训练在开始时非常高效,Samy等人提出了一种基于模型转变的改进方法[1]。

Ref:1.Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks, Samy Bengio et al.

What:以无监督的方式训练一个网络去预测文本的下一个字符(char-RNN),该网络将学习一种能用来监督任务的表示(比如情感分析)。

Ref:Learning to Generate Reviews and Discovering Sentiment, Ilya Sutskever et al.

增强学习

What:异步:以不同的勘探政策同时训练多个代理,提升了鲁棒性。

Ref:Asynchronous Methods for Deep Reinforcement Learning, V. Mnih.

What:跳帧:每隔4帧计算一次动作,而不是每帧都计算,对于其它帧,重复这个动作。

Why:在Atari游戏中工作得很好,并且使用这个技巧以大约4倍的速度加快了训练过程。

Ref:Playing Atari with Deep Reinforcement Learning, V. Mnih.

What:历史:不是仅仅将当前帧作为输入,而是将最后的帧与输入叠加,结合间隔为4的跳帧,这意味着我们有一个含t、t-4、t-8及t-12的帧栈。

Why:这允许网络有一些动量信息。

Ref:Deep Reinforcement Learning with Double Q-learning, V. Mnih.

What:经验回放:为了避免帧间的相关性,作为一个代理不是更新每一帧,最好是在过渡时期的历史中采样一些样本,该思想类似于有监督学习中训练前打乱数据集。

Ref:Prioritized Experience Replay, Tom Schaul et al.

What:Parallel Advantage Actor Critic(PAAC):通过代理的经验以及使用一个单一的同步更新模型使得简化A3C算法成为可能。

Ref:Efficient Parallel Methods for Deep Reinforcement Learning, Alfredo V. Clemente et al.

网络压缩

What:在推理中,为了减少层数,通过批量归一化(BN)层能够吸收其它的权值。这是因为在测试时批量归一化进行地是一个简单的线性缩放。

干货丨一份不可多得的深度学习技巧指南相关推荐

  1. 干货丨一文读懂深度学习(附学习资源,据说点赞2W+)

    文章来源:新智元 人工智能(AI)和机器学习(ML)都属于目前最热门的话题. 在日常生活中,AI这个术语我们随处可见.你或许会从立志高远的开发者那里听说她(他)们想要学习AI.你又或许会从运营者那里听 ...

  2. 干货丨2017年AI与深度学习要点大全

    2017已经正式离我们远去~ ~ ~ 博客WILDML的作者.曾在Google Brain做了一年Resident的Denny Britz,就把他眼中的2017年AI和深度学习的大事,进行了一番梳理汇 ...

  3. 干货丨一文读懂深度学习与机器学习的差异

    作者:oschina 如果你经常想让自己弄清楚机器学习和深度学习的区别,阅读该文章,我将用通俗易懂的语言为你介绍他们之间的差别.机器学习和深度学习变得越来越火.突然之间,不管是了解的还是不了解的,所有 ...

  4. 称霸Kaggle的十大深度学习技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在各种Kaggle竞赛的排行榜上,都有不少刚刚进入深度学习领域的程 ...

  5. 谷歌大脑深度学习炼丹指南出炉,Hinton点赞!

    编辑 | 机器之心 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 「大量的实践经验已被提炼成这份强大的深度学习 ...

  6. 深度学习技巧应用7-K折交叉验证的实践操作

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用7-K折交叉验证的实践操作.K折交叉验证是一种机器学习中常用的模型验证和选择方式,它可以将数据集分为K个互斥的子集,其中K-1个子集作为训练集, ...

  7. 【AI参赛经验】深度学习入门指南:从零开始TinyMind汉字书法识别——by:Link

    各位人工智能爱好者,大家好! 由TinyMind发起的#第一届汉字书法识别挑战赛#正在火热进行中,比赛才开始3周,已有数只黑马冲进榜单.目前TOP54全部为90分以上!可谓竞争激烈,高手如林.不是比赛 ...

  8. 实战例子_Pytorch官方力荐新书《Pytorch深度学习实战指南》pdf及代码分享

    PyTorch是目前非常流行的机器学习.深度学习算法运算框架.它可以充分利用GPU进行加速,可以快速的处理复杂的深度学习模型,并且具有很好的扩展性,可以轻松扩展到分布式系统.PyTorch与Pytho ...

  9. TensorFlow 深度学习实战指南中文版

    TensorFlow 深度学习实战指南中文版 第 1 章入门 安装 TensorFlow 简单的计算 逻辑回归模型构建 逻辑回归训练 第 2 章深度神经网络 基本神经网络 单隐藏层模型 单隐藏层的说明 ...

最新文章

  1. 如何使用MATLAB绘制不同类型的二维图形
  2. ajax中datatype是json,dataType:'json'vs data:$ .ajax中的JSON.stringify(obj)
  3. 关键词之间用分号_如何选择关键词?快看这几个要点
  4. 数据库关键字搜索查询html,在所有数据库中搜索关键字
  5. SQL在线格式化工具
  6. MySQL数据库基本操作
  7. 国外LEAD赚钱提现到WMZ,附赚钱项目
  8. 窗口置顶工具v2.1.0
  9. 这4大场景正被区块链“残忍屠杀”,15个活生生的例子了解一下?
  10. 以太网、网络拓扑结构分类、双绞线的传输距离和分类
  11. 渗透服务器修改数据,渗透测试之:从端口入侵服务器
  12. 计算机弹钢琴的音乐音符,钢琴音乐谱曲基础知识
  13. DC-DC直流隔离升压高压输出电源模块12v24v48v转50V110V200V250V350V400V500V600V800V1000V微功率
  14. 数据库连接:Can`t connect to MySQL server on “localhost“(10038)
  15. Qos(Quality of Service)
  16. 51单片机语音声控智能台灯可调光冷暖光人检测锂电池供电太阳能和USB充电
  17. FZUOJ Problem 2178 礼品配送
  18. Cobalt Strike客户端连接被拒绝
  19. mall商城(PC端)
  20. 从Excel到数据分析师,我到底经历了什么?

热门文章

  1. 数据分析IJCAI 2020:录用率12.6%,华人占据半壁江山,表征学习、GNN成热点 | AI日报...
  2. 5月书讯:流畅的Python,终于等到你!
  3. C语言与C++不得不说的那点事
  4. GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data
  5. 手把手教你写一个生成对抗网络
  6. 送你一份概率图模型笔记
  7. 收藏 | 数据智能与计算机图形学领域2019推荐论文列表(附链接)
  8. 李飞飞团队CVPR论文:让AI识别语义空间关系(附论文、实现代码)
  9. 发现一篇专门吐槽 NLP 内卷现状的 ACL 论文 ...
  10. 技术人员突围就业寒冬的最优途径 | 拿不到AI核心岗位Offer全额退款