4、前馈神经网络
前馈神经网络
1、神经元
- 假设一个神经元接受 d个输入 x1, x2, · · · , xd,令向量x = [x1; x2; · · · ; xd]来表示这组输入,并用净输入(net input) z ∈ R表示一个神经元所获得的输入信号 x的加权和,则
- 净输入 z 在经过一个非线性函数后,得到神经元的活性值(activation) a,a = f(z)
- 下图展示了一个典型的神经元结构
常用的**函数
- 1.Sigmoid型**函数
-
sigmoid型**函数是指一类S型曲线函数,常用的有:Logistic函数和tanh函数。
-
Logistic函数:
σ’(x) = σ(x) (1-σ(x))
-
tanh函数:
tanh(x) = 2 σ(2x) - 1
tanh’(x) = 1 - tanh2(x) -
曲线图:
-
hard-logistic(x):
- hard-logistic(x) = max(min(0.25x + 0.5, 1), 0)
-
hard-tanh(x):
- hard-tanh(x) = max(min(x, 1), −1)
-
曲线图:
-
-
2.修正线形单元(ReLU)
-
函数:
-
优点:
- 采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。ReLU函数被认为有生物上的解释性,比如单侧抑制、 宽兴奋边界(即兴奋程度可以非常高)。
- 相比于 sigmoid型函数的两端饱和, ReLU函数为左饱和函数,且在 x > 0时导数为 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。
-
缺点:
- ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外, ReLU神经元在训练时比较容易“死亡”。(死亡 ReLU 问题)
-
带泄露的ReLU
- 函数:
-
带参数的ReLU
- 函数:
-
ELU
- 函数:
-
Softplus函数
- 函数:
-
图像:
-
-
3.总结
- 常见**函数及其导数:
2、网络结构
-
目前常用的网络结构有三种
- 前馈网络:每一层中的神经元接受前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播。前馈网络包括全连接前馈网络和卷积神经网络等。
- 反馈网络:反馈网络中神经元不但可以接收其它神经元的信号,也可以接收自己的反馈信号。和前馈网络相比,反馈网络中的神经元具有记忆功能,在不同的时刻具有不同的状态。反馈网络包括循环神经网络, Hopfield网络、玻尔兹曼机等。
- 图网络:是定义在图结构数据上的神经网络。图中每个节点都一个或一组神经元构成。节点之间的连接可以是有向的,也可以是无向的。每个节点可以收到来自相邻节点或自身的信息。包括图卷积网络、纤细传递网络等。
3、前馈神经网络
-
组成:输入层、隐藏层、输出层
-
参数优化:使用误差反向传播算法
4、优化问题
- 神经网络的参数学习比线性模型要更加困难,主要原因有:(1)非凸优化问题和(2)梯度消失问题。
- 非凸优化问题:神经网络的优化问题是一个非凸优化问题。
- 梯度消失问题:差从输出层反向传播时,在每一层都要乘以该层的**函数的导数。当我们使用 sigmoid型函数时,其导数的值域都小于1,误差经过每一层传递都会不断衰减。当网络层数很深时,梯度就会不停的衰减,甚至消失,使得整个网络很难训练。这就是所谓的梯度消失问题(Vanishing GradientProblem),也叫梯度弥散问题。