多层感知机 MLP
引言
多层感知机(Multi-Layer Perception)由感知机推广而来,最主要的特点是具有多个神经元层,因此也叫深度神经网络(DNN)。
感知机由两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。也称为阈值逻辑单元(threshold logic unit)
一个感知机的模型示意图如下:
感知机只具有输入层和输出层,通过对输入信号进行加权,使用激活功能,产生输出。可以表示为
u = ∑ i = 1 n w i x i + b u = \sum_{i=1}^n w_ix_i + b u=i=1∑nwixi+b
y = s i g n ( u ) = { + 1 , u > 0 − 1 , u ≤ 0 y = sign(u) = \begin{cases} +1, \quad u>0 \\ -1, \quad u\leq0 \end{cases} y=sign(u)={
+1,u>0−1,u≤0
很显然,感知机仅仅只是一个线性的模型,如果遇到非线性数据就很难进行分类(感知机无法解决异或问题),那么可以通过加深神经元的网络层次来进行拟合,理论上来说,多层网络可以拟合任何复杂的函数。
人工智能奠基人之一的Marvin Minsky与1969年出版了《感知机》一书,书中指出,单层神经网络无法解决非线性问题,而多层神经网络的训练算法尚看不到希望,这个论断直接使神经网络研究进入了“冰河期”,这就是神经网络的第一次低谷。直到后来BP算法的走红,才掀起了神经网络的第二次高潮。
多层感知机能够解决异或问题主要是通过升维,原本的样本是二维的,但中间层有两个节点,每个样本通过中间层的结点计算得到两个值,那么就对原来的样本进行了升维操作。
采用多层感知机后:
随着维度的增高,原本线性不可分的样本,就可以变得可分。引用自知乎答主Yiwen
原理
通过矩阵 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} X∈Rn×d
来表示 n n n个样本的小批量,
其中每个样本具有 d d d个输入特征。
对于具有 h h h个隐藏单元的单隐藏层多层感知机,
用 H ∈ R n × h \mathbf{H} \in \mathbb{R}^{n \times h} H∈Rn×h表示隐藏层的输出,
称为隐藏表示(hidden representations)。
在数学或代码中, H \mathbf{H} H也被称为隐藏层变量(hidden-layer variable)
或隐藏变量(hidden variable)。
因为隐藏层和输出层都是全连接的,
所以我们有隐藏层权重 W ( 1 ) ∈ R d × h \mathbf{W}^{(1)} \in \mathbb{R}^{d \times h} W(1)∈Rd×h
和隐藏层偏置 b ( 1 ) ∈ R 1 × h \mathbf{b}^{(1)} \in \mathbb{R}^{1 \times h} b(1)∈R1×h
以及输出层权重 W ( 2 ) ∈ R h × q \mathbf{W}^{(2)} \in \mathbb{R}^{h \times q} W(2)∈