谈谈激活函数以零为中心的问题 |
您所在的位置:网站首页 › 京剧是以什么为中心的艺术 › 谈谈激活函数以零为中心的问题 |
谈谈激活函数以零为中心的问题
转载:https://liam.page/2018/04/17/zero-centered-active-function 今天在讨论神经网络中的激活函数时,陆同学提出 Sigmoid 函数的输出不是以零为中心的(non-zero-centered),这会导致神经网络收敛较慢。关于这一点,过去我只是将其记下,却并未理解背后的原因。此篇谈谈背后的原因。 神经元 图片来自:https://zhuanlan.zhihu.com/p/25110450如图是神经网络中一个典型的神经元设计,它完全仿照人类大脑中神经元之间传递数据的模式设计。大脑中,神经元通过若干树突(dendrite)的突触(synapse),接受其他神经元的轴突(axon)或树突传递来的消息,而后经过处理再由轴突输出。 在这里,诸 x i x_i xi 是其他神经元的轴突传来的消息,诸 w i w_i wi 是突触对消息的影响,诸 w i x i w_ix_i wixi 则是神经元树突上传递的消息。这些消息经由神经元整合后( z ( x ⃗ ; w ⃗ , b ) = ∑ i w i x i + b z(\vec{x};\vec{w},b)=\sum_iw_ix_i+b z(x ;w ,b)=∑iwixi+b)再激活输出( f ( z ) f(z) f(z))。这里,整合的过程是线性加权的过程,各输入特征之间没有相互作用。激活函数(active function)一般来说则是非线性的,各输入特征 x i x_i xi 在此处相互作用。 Sigmoid 与 tanh此篇集中讨论激活函数输出是否以零为中心的问题,因而不对激活函数做过多的介绍,而只讨论 Sigmoid 与 tanh 两个激活函数。 Sigmoid 函数Sigmoid 函数的一般形式是 σ ( x ; a ) = 1 1 + e − a x \sigma(x;a)=\frac{1}{1+e^-ax} σ(x;a)=1+e−ax1 这里,参数 a a a 控制 Sigmoid 函数的形状,对函数基本性质没有太大的影响。在神经网络中,一般设置 a = 1 a=1 a=1,直接省略。 Sigmoid 函数的导数很好求 σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma'(x)=\sigma(x)(1-\sigma(x)) σ′(x)=σ(x)(1−σ(x)) 图片来自:https://zhuanlan.zhihu.com/p/25110450 tanh 函数tanh 函数全称 Hyperbolic Tangent,即双曲正切函数。它的表达式是 t a n h ( x ) = 2 σ ( 2 x ) − 1 = e x − e − x e x + e − x tanh(x)=2\sigma (2x)-1=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=2σ(2x)−1=ex+e−xex−e−x 双曲正切函数的导数也很好求 t a n h ′ ( x ) = 1 − t a n h 2 ( x ) tanh'(x)=1-tanh^2(x) tanh′(x)=1−tanh2(x) 图片来自:https://zhuanlan.zhihu.com/p/25110450 一些性质Sigmoid 和 tanh 两个函数非常相似,具有不少相同的性质。简单罗列如下 优点:平滑优点:易于求导缺点:幂运算相对耗时缺点:导数值小于 ,反向传播易导致梯度消失(Gradient Vanishing)对于 Sigmoid 函数来说,它的值域是 ,因此又有如下特点 优点:可以作为概率,辅助模型解释缺点:输出值不以零为中心,可能导致模型收敛速度慢此篇重点讲 Sigmoid 函数输出值不以零为中心的这一缺点。 收敛速度这里首先需要给收敛速度做一个诠释。模型的最优解即是模型参数的最优解。通过逐轮迭代,模型参数会被更新到接近其最优解。这一过程中,迭代轮次多,则我们说模型收敛速度慢;反之,迭代轮次少,则我们说模型收敛速度快。 参数更新深度学习一般的学习方法是反向传播。简单来说,就是通过链式法则,求解全局损失函数 L ( x ⃗ ) L(\vec{x}) L(x ) 对某一参数 w w w的偏导数(梯度);而后辅以学习率 η \eta η,向梯度的反方向更新参数 w w w。 w ← w − η ⋅ ∂ L ∂ w w\leftarrow w-\eta \cdot \frac{\partial L}{\partial w} w←w−η⋅∂w∂L 考虑学习率 η \eta η 是全局设置的超参数,参数更新的核心步骤即是计算 ∂ L ∂ w \frac{\partial L}{\partial w} ∂w∂L。再考虑到对于某个神经元来说,其输入与输出的关系是 f ( x ⃗ ; w ⃗ , b ) = f ( z ) = f ( ∑ i w i x i + b ) f(\vec{x};\vec{w},b)=f(z)=f(\sum_{i}^{}w_ix_i+b) f(x ;w ,b)=f(z)=f(i∑wixi+b) 因此,对于参数 w i w_i wi来说, ∂ L ∂ w i = ∂ L ∂ f ∂ f ∂ z ∂ z ∂ w i = x i ⋅ ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial w_i}=\frac{\partial L}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_i}=x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} ∂wi∂L=∂f∂L∂z∂f∂wi∂z=xi⋅∂f∂L∂z∂f 因此,参数的更新步骤变为 w i ← w i − η x i ⋅ ∂ L ∂ f ∂ f ∂ z w_i\leftarrow w_i-\eta x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} wi←wi−ηxi⋅∂f∂L∂z∂f 更新方向由于 x i x_i xi 是上一轮迭代的结果,此处可视为常数,而 η \eta η 是模型超参数,参数 w i w_i wi 的更新方向实际上由 x i ⋅ ∂ L ∂ f ∂ f ∂ z x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} xi⋅∂f∂L∂z∂f 决定。 又考虑到 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} ∂f∂L∂z∂f 对于所有的 w i w_i wi 来说是常数,因此各个 w i w_i wi 更新方向之间的差异,完全由对应的输入值 x i x_i xi 的符号决定。 以零为中心的影响至此,为了描述方便,我们以二维的情况为例。亦即,神经元描述为 f ( x ⃗ ; w ⃗ , b ) = f ( w 0 x 0 + w 1 x 1 + b ) f(\vec{x};\vec{w},b)=f(w_0x_0+w_1x_1+b) f(x ;w ,b)=f(w0x0+w1x1+b) 现在假设,参数 w 0 w_0 w0 , w 1 w_1 w1 的最优解 w 0 ∗ w_0^* w0∗, w 1 ∗ w_1^* w1∗满足条件 { w 0 < w 0 ∗ w 1 ≥ w 1 ∗ \left\{\begin{matrix} w_0 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |