深度学习关键技术解析
1. 非线性激活函数
传统神经网络由于在训练阶段存在数值问题,大多局限于三层。这些问题主要源于反向传播过程中多层间的梯度消失,而试图避免梯度消失又会导致梯度发散。在梯度消失和发散之间取得平衡是一项困难的任务,这使得网络层数在几十年内都被限制在三层,也限制了神经网络在实际中的应用,最终导致该领域研究资金的削减。
如今,通过一些研究人员的开创性工作,我们知道对训练过程和网络结构进行一些调整,就可以实现大量层的堆叠。常见的激活函数有sigmoid和tanh函数,其表达式分别为:
- sigmoid函数:$\varphi_{\sigma}(x) = \frac{1}{1 + e^{-x}}$
- tanh函数:$\varphi_{t}(x) = \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$
sigmoid函数将实数变量$x$映射到$0 \leq \sigma(x) \leq 1$的范围,可解释为给定事件的概率,但非零均值会在网络训练过程中产生偏差。tanh函数可看作sigmoid函数的缩放零均值版本,即$\varphi_{t}(x) = 2\varphi_{\sigma}(2x) - 1$。然而,这两个函数在$|x|$较大时存在强饱和区域,导数非常小,会导致梯度消失,减缓甚至停止深层网络的训练。
为避免这一问题,引入了ReLU函数,定义为$\varphi_{r}(x) = \max(0, x)$。它不仅简单,而且梯度计算更简单,在正半轴无饱和问题,能加速训练过程。目前,在众多激活函数中,ReLU应用最广泛,不过tanh也是不错的选择,而sigmoid函数在需要[0,1]区间
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



