文章目录
- 1. 神经元模型
- 2. 激活函数
- 3. 梯度消失和梯度下降
- 4. BP神经网络改进
1. 神经元模型
1. 神经元结构图如下所示。三种形式表示的意义都是一样的。
2. 三要素:(1)具有突触或连接,用权重表示神经元的连接强度。(2)具有时空整合功能的输入信号累加器。(3)激励函数用于限制神经网络的输出。
3. 神经网络是一个并行和分布式的信息处理网络结构,它一般由许多个神经元组成,每个神经元只有一个输出,它可以连接到很多其他的神经元,每个神经元输入有多个连接通道,每个连接通道对应于一个连接权系数。
f
f
f 作用函数功能:(1)控制输入对输出的激活作用。(2)对输入、输出进行函数转换。(3)将可能无限域的输入变换成指定的有限范围内的输出。
4. BP(back propagation)神经网络的学习有信息的正向传播和误差的反向传播两个过程组成,学习规则采用Widrow-Hoff学习规则(最小均方差规则,梯度下降法),通过反向传播,不断调整网络的权重和阈值,使网络的误差平方和最小。
隐层节点的输出:
输出节点的输出:
5. BP神经网络模型的描述:
2. 激活函数
1. s i g m o i d sigmoid sigmoid 函数表达式: f ( x ) = 1 / ( 1 + e − x ) f(x)=1/(1+e^{-x}) f(x)=1/(1+e−x)。它的导数为: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x)=f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
2. 使用
s
i
g
m
o
i
d
sigmoid
sigmoid 作为激活函数存在以下几个问题:
(1)梯度饱和。当函数激活值接近于
0
0
0 或者
1
1
1 时,函数的梯度接近于
0
0
0。在反向传播计算梯度过程中:每层残差接近于
0
0
0,计算出的梯度也不可避免地接近于
0
0
0。这样在参数微调过程中,会引起参数弥散问题,传到前几层的梯度已经非常靠近
0
0
0 了,参数几乎不会再更新。
(2)函数输出不是以
0
0
0 为中心的。我们更偏向于当激活函数的输入是
0
0
0 时,输出也是
0
0
0 的函数。因为上面两个问题的存在,导致参数收敛速度很慢,严重影响了训练的效率。因此在设计神经网络时,很少采用
s
i
g
m
o
i
d
sigmoid
sigmoid 激活函数。
3.
t
a
n
h
tanh
tanh 函数表达式为:
f
(
x
)
=
t
a
n
h
(
x
)
=
1
+
e
x
/
1
+
e
−
x
f(x)=tanh(x)=1+e^x/1+e^{−x}
f(x)=tanh(x)=1+ex/1+e−x。它的导数为:
f
′
(
x
)
=
1
−
f
2
(
x
)
f'(x)=1-f^2(x)
f′(x)=1−f2(x)
t
a
n
h
tanh
tanh 函数将一个实数输入映射到
[
−
1
,
1
]
[-1,1]
[−1,1] 范围内,如上图所示。当输入为
0
0
0 时,
t
a
n
h
tanh
tanh 函数输出为
0
0
0,符合我们对激活函数的要求。然而,
t
a
n
h
tanh
tanh 函数也存在梯度饱和问题,导致训练效率低下。
3. 梯度消失和梯度下降
1. 梯度消失是指在更新模型参数时采用链式求导法则反向求导,越往前梯度越小。最终的结果是到达一定深度后梯度对模型的更新就没有任何贡献了。
2. 梯度下降学习规则:
(1) 梯度下降学习规则的要点为在学习过程中,保持误差曲线的梯度下降。
(2) 误差曲线可能会出现局部的最小值,在网络学习时,应尽可能摆脱误差的局部最小值,而达到真正的误差最小值。
3. 后向传播(Back Propagation, BP)学习,是目前应用最为广泛的神经网络学习规则。
这里可以看一下王改华的神经网络与深度学习书上的第12页的例题。
4. BP神经网络改进
1. BP算法改进的主要目标是为了加快训练速度,避免陷入局部极小值和改善其它能力。讨论的方法:带动量因子算法和自适应学习速率。
2. 带动量因子算法:该方法是在反向传播法的基础上,在每一个权值的变化上加上一项正比于前次权之变化的值,并根据反向传播法来产生新的权值变化。带有附加动量因子的权值调节公式如下。其中 k k k 为训练次数, m c mc mc 为动量因子,一般取0.95左右。
附加动量法的实质是将最后一次权值变化的影响,通过一个动量因子来传递。以此方式,当增加动量项后,促使权值的调节向着误差曲面底部的平均方向变化,当网络权值进入误差曲面底部的平坦区时, δ i δ_i δi 将变得很小,于是 Δ W i j ( k + 1 ) ≈ Δ W i j ( k ) ΔW_{ij}(k+1)≈ΔW_{ij}(k) ΔWij(k+1)≈ΔWij(k),从而防止了 Δ W i j ( k ) = 0 ΔW_{ij}(k)=0 ΔWij(k)=0 的出现,有助于使网络从误差曲面的局部极小值中跳出。
η η η 是学习率; δ i δ_i δi 是第 i i i 个节点的输出误差; P j P_j Pj 表示输入。
3. 对于一个特定的问题,要选择适当的学习速率并不是一件容易的事情。对训练开始初期功效很好地学习速率,不见得对后来的训练合适。为了解决值一问题,人们自然会想到在训练过程中自动调整学习速率。
下面给出一个自适应学习速率的调整公式。初始学习速率
η
(
0
)
η(0)
η(0) 的选取范围可以有很大的随意性。