神经网络基础-多层感知机

1. 多层感知机的概念

由于单层感知机被证明不能解决异或问题,神经网络的发展一度进入寒潮期,直到多层感知机的提出。多层感知机(Multi Layer Perceptron, MLP)在单层感知机的基础上引入了隐藏层。

神经网络基础-多层感知机_第1张图片

图1 多层感知机 

H=XW_{1}=[x1,x2,x3,x4]\begin{bmatrix} w11 & w12& w13& w14& w15\\ w21 & w22 & w23& w24 &w25 \\ w31 & w32& w33& w34& w35\\ w41 & w42& w43& w44 &w45 \end{bmatrix}_{4\times 5}=[h1,h2,h3,h4,h5]

神经网络基础-多层感知机_第2张图片

权重矩阵的行数是输入层的变量个数,列数是输出层的变量个数。

2. 多层感知机的激活函数

激活函数在多层感知机中至关重要,如果没有激活函数,多层感知机将退化为单层网络

神经网络基础-多层感知机_第3张图片

那么输出O可以整理为:

说到底,多次线性变换可以用一次线性变换得到。

但是,非线性的激活函数加入可以避免网络退化,输出O没办法整理为一层变换。

神经网络基础-多层感知机_第4张图片

3. 常见激活函数

 在每一层线性变换后,引入激活函数,可以避免多层感知机退化为一层,多层感知机成为真正意义上的多层。

激活函数将非线性引入神经网络,非线性+线性的组合使神经网络可以逼近任意非线性函数,原理参考万能逼近定理(universal approximator)。

  • 激活函数需要具备如下几个特点:

(1)连续可导,但允许少数点上不可导,这样有利于实现数值优化的方法学习网络参数;

(2)激活函数及其导数应尽可能简单,便于计算;

(3)激活函数的导数值域要在合适的区间范围内,不能太大或太小,防止梯度消失或梯度爆炸。

  •  以下是三种常见激活函数。

(1)Sigmoid函数,经常用于二分输出的激活函数,将结果变换到[0,1]区间,使其符合概率分布的形式;在RNN中使用也较多,作为门控单元的激活函数,控制保留或遗忘。

(2)Tanh函数与Sigmoid函数相近,但值域有所不同,相比sigmoid函数,tanh函数更适合对值域有对称性要求的情况。

(3)Relu函数与前两种不同,不存在饱和区,因此经常被使用。可以观察到relu的导函数在Z=0处不可导,也就是激活函数的要求连续可导(但允许少数点上不可导)的情况。在实际使用中可以将z=0处的导数设置为0或1。

Sigmoid函数 和 Tanh函数 被称为饱和函数,都存在饱和区,即函数曲率为0,导函数值为0的区域,此区域会使梯度消失。Relu函数是非饱和函数。

神经网络基础-多层感知机_第5张图片神经网络基础-多层感知机_第6张图片神经网络基础-多层感知机_第7张图片

图2 激活函数(蓝色线为函数曲线,橙色线为导函数曲线)

你可能感兴趣的:(深度学习,神经网络,深度学习)