作家
登录

深度学习的这些坑你都遇到过吗?神经网络11大常见陷阱及应对方法

作者: 来源: 2017-09-07 16:01:38 阅读 我要评论

问题描述

应用ReLU激活函数的深层收集平日会受所谓“逝世神经元”的影响,而后者是由不良梯度引起的。这可能会对收集的机能产生负面影响,在某些情况下甚至完全无法练习。

如何解决?

如何解决?

如不雅你发明练习误差经由多个epoch后都没有变更,可能是应用了ReLU激活函数,让所有的神经元都逝世掉落了。测验测验切换到另一个激活函数,例如leaky ReLU或ELU,然后再看看是否还存在如许的情况。

为什么?

ReLU激活函数的梯度对于正值为1,负值为0。这是因为当输入小于0时,输入的一个很小变更不会影响输出。短期看,这可能不是一个问题,因为正值的梯度很大年夜。然则,层与层可以叠在一路,负的权重可以将那些梯度很大年夜的┞俘值变为梯度为0的负值;平日情况下,一些甚至所有隐蔽单位对于成本函数都具有零梯度,无论输入是什么。在这种情况下,我们说收集是“逝世的”,因为权重完全无法更新。

还须要留意

任何具有零梯度的运算(如裁剪、舍入或最大年夜/最小),在被用于计算成本函数相对于权重的导数时,都将产生不良梯度。如不雅它们在符号图里有出现,那么必定要异常当心,因为它们往往会带来不测的问题。

没有精确地初始化收集权重

问题描述

一般来说,神经收集中特点的范围也决定了其重要性。如不雅输出中的有一个特点范围很大年夜,那么竽暌闺其他特点比拟它会产生更大年夜的缺点。类似地,输入中的大年夜范围特点将主导收集并导致下流产生更大年夜的变更。是以,应用神经收集库的主动规范化往往是不敷的,这些神经收集库会在每个特点的基本膳绫扦目地减去平均值并除以方差。你可能有一个输入特点,平日范围在0.0到0.001之间——这个特点典范围如斯之小,因为它是一个不重要的特点(在这种情况下,你可能不想从新scale),或者因为与其他特点比拟它有一些小的单位(在这种情况下,你可能想从新scale)?类似地,要当心具有如许一个较小范围的特点,它们的方差接近或等于0,如不雅将它们规范化,则会导致NaN不稳定。细心推敲这些问题很重要——推敲你的每个特点真正代表什么,并将所有输入特点的“units”相等,将这一过程视为规范化。这是我认为深度进修中人在这个loop中真正须要的几个方面之一。

如不雅你没有精确地初始化你的神经收集权重,那么神经收集根本就不太可能练习。神经收集中典范多其他组件都有某些精确或标准化的权重初始化,并将权重设置为零,或者应用你本身的自定义随机初始化不起感化。

如何解决?

为什么?

你可能已经知道,可以应用“小的随机数”初始化神经收集权重,但工作并没有那么简单。所有上述初始化都是应用复杂和具体的数学发明的,这些数学基本说清楚明了它们为什么竽暌姑起来最好。更重要的是,环绕这些初始化构建了其他神经收集组件,并根据经验应用它们进行测试——应用你本身的初始化可能会使其他研究人员的结不雅复现得加倍艰苦。

还须要留意

其他层可能也须要细心地进行初始化。收集biases被初始化为零,而其他更复杂的层(如参数激活函数)可能会带有本身的初始化,把这个弄对也同样重要。

你用的神经收集太深

问题描述

更深更好吗?嗯,情况并非老是如斯……当我们拼命刷新基准,把某些义务的精度1%、1%地晋升时,更深的神经收集一般来说更好。然则,如不雅你只有3~5层的小收集没有进修任何器械,那么我可以包管你用100层的也会掉败,如不雅不是更糟糕的话。

收集里有坏的梯度

如何解决?

大年夜3到8层的浅层神经收集开端。只有当你的神经收集跑起来学器械今后,再摸索晋升精度的办法,尝尝试加深收集。

在以前十年中,神经收集的所有改进都是小的fundamental的变更,这些改变只实用于较小型收集作为深层次的机能。如不雅您的收集不工作,除深度之外更有可能是其他的问题。

还须要留意

大年夜小的收集开端也意味着练习速度更快,推理更快,迭代不合的设计和设置将会更快。最初,所有这些工作都将对精确性产生更大年夜的影响,而不仅仅是堆叠几层。

数据中的其他元素有时也能像批量大年夜小一样生效。例如,在处理图像时,将分辨率翻倍,可能会有把批量大年夜小×4类似的效不雅。直不雅一点看,在CNN中,每个滤波器的权重更新将在输入图像的所有像素以及批处理中的每个图像长进行平均。将图像分辨率翻番,将产生跨越四倍像素的平均效不雅,就像将批量大年夜小进步了4倍一样。总之,重要的是推敲在每次迭代中最终的渐变改革将被平均若干,并在负面影响与尽可能多地应用GPU并行性之间保持均衡。

应用隐蔽单位的数量纰谬

为什么?

问题描述

如何解决?

“he”,“lecun”或“xavier”的权重初始化都是很受迎接的选择,在几乎所有情况下都能很好地工作。钠揭捉?一个就好(我最爱好的是“lecun”),当你的神经收集正常运作今后,你也可以自由地进行实验呀。

大年夜256至1024个之间的隐蔽单位开端。然后,看看类似应用的其他研究应用若干,并参考应用。如不雅其他研究人员应用的与你应用的数字异常不合,那么可能须要有一些具体的原因来解释。

为什么?

在决定隐蔽单位的数量时,关键要推敲你认为对收集传递信息所需起码数量的┞锋实值。你应当把这个数字弄大年夜一点。对于应用更多冗余表示的收集,dropout可以。如不雅你要做分类,可以应用五到十倍的class的数量,而如不雅你做回归,可能须要应用输入或输出变量数量的两到三倍。当然,所有这些都是高度依附于情况的,没有简单的主动解决筹划——拥有很好的直觉对于决定隐蔽单位数量是最重要的。


  推荐阅读

  程序员都应该懂一点开源协议

让雷军倍感压力的00后CEO,联袂300名最小年纪仅为10岁出头的员工们,竟豪言:一些三四十岁的老前辈已经看不懂互联网。可就在被查访的短视频方才传递开来的时刻,剧情忽然三百六十度大年夜>>>详细阅读


本文标题:深度学习的这些坑你都遇到过吗?神经网络11大常见陷阱及应对方法

地址:http://www.17bianji.com/lsqh/37227.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)