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

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

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

你可能已经知道,可以使用"小的随机数"初始化神经网络权重,但事情并没有那么简单。所有上述初始化都是使用复杂和详细的数学发现的,这些数学基础说明了它们为什么用起来最好。更重要的是,围绕这些初始化构建了其他神经网络组件,并根据经验使用它们进行测试——使用你自己的初始化可能会使其他研究人员的结果复现得更加困难。

  还需要注意

  其他层可能也需要仔细地进行初始化。网络biases被初始化为零,而其他更复杂的层(如参数激活函数)可能会带有自己的初始化,把这个弄对也同样重要。

  你用的神经网络太深

  问题描述

  更深更好吗?嗯,情况并非总是如此……当我们拼命刷新基准,把某些任务的精度1%、1%地提升时,更深的神经网络一般来说更好。但是,如果你只有3~5层的小网络没有学习任何东西,那么我可以保证你用100层的也会失败,如果不是更糟糕的话。

  怎样解决?

  从3到8层的浅层神经网络开始。只有当你的神经网络跑起来学东西以后,再探索提升精度的方法,并尝试加深网络。

  为什么?

  在过去十年中,神经网络的所有改进都是小的fundamental的变化,这些改变只适用于较小型网络作为深层次的性能。如果您的网络不工作,除深度之外更有可能是其他的问题。

  还需要注意

  从小的网络开始也意味着训练速度更快,推理更快,迭代不同的设计和设置将会更快。最初,所有这些事情都将对准确性产生更大的影响,而不仅仅是堆叠几层。

  使用隐藏单元的数量不对

  问题描述

  在某些情况下,使用太多或太少的隐藏单元(hidden units)都可能使网络难以训练。隐藏单元太少,可能没有能力表达所需任务,而隐藏单元太多,可能会变得缓慢而难以训练,残差噪音很难消除。

  怎样解决?

  从256至1024个之间的隐藏单元开始。然后,看看类似应用的其他研究使用多少,并参考使用。如果其他研究人员使用的与你使用的数字非常不同,那么可能需要有一些具体的原因来解释。

  为什么?

  在决定隐藏单元的数量时,关键要考虑你认为对网络传递信息所需最少数量的真实值。你应该把这个数字弄大一点。对于使用更多冗余表示的网络,dropout可以。如果你要做分类,可以使用五到十倍的class的数量,而如果你做回归,可能需要使用输入或输出变量数量的两到三倍。当然,所有这些都是高度依赖于环境的,没有简单的自动解决方案——拥有很好的直觉对于决定隐藏单元数量是最重要的。

  还需要注意

  实际上,与其他因素相比,隐藏单元的数量通常对神经网络性能影响很小,而在许多情况下,高估所需隐藏单位的数量不会使训练变慢。一旦你的网络工作了,如果你仍然担心,只需尝试很多不同的数字,并测量准确性,直到找到最适合你的网络的数值。

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

网站地图

Top