微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 深度学习之神经网络11大常见陷阱及对策

深度学习之神经网络11大常见陷阱及对策

时间:09-19 来源: 点击:

  你忘记预处理数据了

  问题描述

  大多数数据是很棘手的——通常我们知道的数据是类似的,可以用非常不同的数字表示。以角色动画( character animaTIon)为例:如果我们使用角色的关节相对于运动捕捉的studio的中心的3D位置来表示数据,那么在某个位置或面向某个方向执行动作时,相较于在不同的位置、或不同的方向执行同一个动作,可能会产生大量不同的数字表示。那么我们需要以不同的方式表示数据——例如在一些局部reference框架(例如相对于角色的质量中心),以便相似的动作有相似的数值表示。

  怎样解决?

  思考你的特征表示什么——是否有一些简单的transformaTIon,可以确保表示相似东西的数据点总是得到相似的数值表示?是否有一个局部的坐标系统可以更自然地表示数据——或许是更好的颜色空间——不同的格式?

  为什么?

  对于作为输入的数据,神经网络仅作一些基本的假设,其中之一是数据所处空间是连续的——对于大部分空间来说,两个数据点之间的点至少有一些"mix",两个相邻的数据点某种意义上表示"相似"的东西。在数据空间中存在较大的不连续性(disconTInuities),或存在表示同样事物的大量分离数据(separated data),将使得学习任务变得更加困难。

  还需要注意

  数据预处理的另一种方法是试着减少所需数据变化的组合爆炸。例如,如果在角色动画数据训练的神经网络必须在每个位置和每个方向学习相同的动作组合,那么网络有大量容量被浪费了,并且大部分的学习过程是重复的。

  忘记使用正则化了

  问题描述

  正则化(Regularization)——通常以dropout、noise或网络随机过程的某种形式进行,是训练神经网络的另一个无法改变的方面。即使你认为你拥有比参数多得多的数据量,或过拟合不重要的情况,或没出现过拟合,你仍然应该添加dropout或其他形式的noise。

  怎样解决?

  正则化神经网络的最基本方法是在网络的每个线性层(卷积层或dense层)之前添加dropout。从中等到高的retainment probability开始,例如0.75或0.9。根据过拟合的可能性进行调整。如果你仍然认为不可能出现过拟合,那么可以将retainment probability设置到很高,例如0.99。

  为什么?

  正则化不仅仅是有关控制过拟合。通过在训练过程中引入一些随机过程,你在某种意义上是"平滑"(smoothing)了损失格局。这可以加快训练速度,帮助处理数据中的异常值,并防止网络的极端权重配置。

  还需要注意

  数据增强(data augmentation)或其他类型的noise也可以像dropout一样作为正则化的方式。虽然通常dropout被认为是将序偶多随机子网络的预测结合起来的技术,但也可以将dropout视为通过在训练过程中产生许多类似输入数据的变化来动态地扩展训练集大小的方法。而且我们知道,避免过拟合和提高网络准确性的最佳方式是拥有更多网络未见过的数据。

  使用的Batch太大

  问题描述

  使用太大的batch可能会对网络在训练过程中的准确性产生负面影响,因为这样会降低梯度下降的随机性。

  怎样解决?

  找到在训练时你能接受的最小的batch。在训练时能够最大限度利用GPU并行性的批量大小,对于准确性来说可能并不是最好的,因为在某些时候,更大的batch需要训练更多回(epoch)才能达到相同的准确度。不要担心从非常小的batch开始,比如16、8甚至是1。

  为什么?

  使用更小的batch生产更方便(choppier)、更随机的权重更新。这样做有两大好处。首先,能帮助训练"跳出"原本可能被卡住的局部最小值;其次,可以使训练在"更平坦"的最小值结束,一般而言,后者会代表更好的泛化性能。

  还需要注意

  数据中的其他元素有时也能像批量大小一样生效。例如,在处理图像时,将分辨率翻倍,可能会有把批量大小×4类似的效果。直观一点看,在CNN中,每个滤波器的权重更新将在输入图像的所有像素以及批处理中的每个图像上进行平均。将图像分辨率翻番,将产生超过四倍像素的平均效果,就像将批量大小提高了4倍一样。总之,重要的是考虑在每次迭代中最终的渐变更新将被平均多少,并在负面影响与尽可能多地利用GPU并行性之间保持平衡。

  学习率不正确

  问题描述

  学习率可能会对网络好不好训练有很大的影响。如果你刚刚入行,在常见深度学习框架各种默认选项的影响下,几乎可以肯定你没有把学习率设置对。

  怎样解决?

把梯度剪裁(gradient clipping)关掉。找到在训练时不会发生错误的最高的学习率的值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top