多层感知机:从感知机到深度神经网络
多层感知机:从感知机到深度神经网络
多层感知机(MLP)是深度学习中最基本的神经网络模型之一,它通过在输入层和输出层之间添加一个或多个隐藏层,解决了单层感知机无法处理非线性可分问题的局限性。本文将从感知机的基本概念出发,逐步介绍多层感知机的结构、训练方法和激活函数,帮助读者全面了解这一重要的神经网络模型。
1 前言
在上一节中,我们介绍了线性神经网络中的两个重要的技术——线性回归和softmax回归,用它们可以解决简单的预测和多分类问题。
然而,线性意味着单调,这将限制我们许多。在预测模型中,我们通常认为房价与房子的面积成正比,总的来看这是有道理的,但是二者却不是线性相关的;再比如,如果我们用体温预测死亡率,那么大于37摄氏度时,体温越高则风险越高,而在小于37摄氏度时,体温越高反而风险越低,这是完全违反单调性的。在分类模型中,我们同样会遇到类似的问题。当我们训练softmax回归模型处理Fashion-MNIST分类问题时,我们单单评估每一个像素的强度,而事实上对于图片来说,几个像素之间的关联可能才是决定一个分类的关键。
现在,我们知道了单纯的线性模型已经不足以满足我们处理更为复杂的预测和分类问题,本章节将从线性走向非线性,真正进入到深度神经网络之中。
2 感知机
2.1 模型结构
感知机是机器学习中最简单也是最早提出的模型之一,用以解决二分类问题。给定输入x,权重w,和偏移b,感知机输出:
o = σ ( < w , x > + b ) o = σ(<w,x> + b)o=σ(<w,x>+b),σ ( x ) = { 1 if x > 0 − 1 otherwise σ(x) = \left{\begin{array}{ll} 1 & \text{if x > 0} \ -1 & \text{otherwise} \end{array} \right.σ(x)={1−1 if x > 0otherwise
与线性回归相比,线性回归输出实数,感知机输出的是离散的类。与Softmax回归相比,Softmax回归如果有n个类的话会输出n个元素可以多分类,感知机只输出一个元素最多只能二分类。
2.2 训练感知机
最原始的感知机训练方式可以看做是批量大小为1的梯度下降。
1、首先,将初始化的w和b都设为0。
2、然后重复计算y i [ < w , x i > + b ] y_i[<w,x_i> + b]yi [<w,xi >+b]这里y i y_iyi 是样本的真实分类,[ < w , x i > + b ] [<w,x_i> + b][<w,xi >+b]是预测,如果二者同号(乘积>0),则说明分类正确,若二者异号(乘积<0),则说明分类错误,并进行一次梯度下降。
3、重复这样的循环,直到所有的分类都正确,我们可以得到一条决策边界:w x + b = 0 wx + b = 0wx+b=0。
2.3 收敛定理
如果线性训练集是线性可分的,那么我们一定能得到这条决策边界,换句话说,感知机学习算法可以在有限步收敛。
证明过程如下(如有错误欢迎批评指正):
3 多层感知机
3.1 XOR问题
XOR问题(异或问题)是机器学习中的一个经典的简单非线性可分问题。
对于两个二进制输出x 1 x_1x1 和x 2 x_2x2 ,XOR运算的输出y为:
y = x 1 ⊕ x 2 y = x_1 \oplus x_2y=x1 ⊕x2
如果x 1 x_1x1 和x 2 x_2x2 相同(均为1或均为0),则y = 0 y = 0y=0。
如果x 1 x_1x1 和x 2 x_2x2 不同(一个为0,一个为1),则y = 1 y = 1y=1。
在二维平面上,XOR问题的数据点无法用一条直线将两类店完全分开,因此,XOR问题是一个典型的非线性可分问题。
为了解决XOR问题,一层感知机是不够的,但我们可以通过使用两次感知机来对上述问题进行解决。
我们可以先根据x轴进行一次二分类,再根据y轴进行一次二分类,两次输出结果相同的为1,输出不同的为-1,这就使得感知机从线性变成了非线性。
3.2 加入隐藏层
我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制。最简单的方法是将许多全连接层堆叠在一起,每一层都输出到上面的层,直到生成最后的输出,这种架构就称为多层感知机。
下面我们介绍一个单隐藏层多分类问题:
1、输入层:x ∈ R n x \in \mathbb{R}^nx∈Rn,x是一个长度为n的向量。
2、隐藏层:W 1 ∈ R m × n W_1 \in \mathbb{R}^{m \times n}W1 ∈Rm×n,b 1 ∈ R m b_1 \in \mathbb{R}^mb1 ∈Rm。h = σ ( W 1 x + b 1 ) h = \sigma(W_1x + b_1)h=σ(W1 x+b1 )
3、输出层:w 2 ∈ R m w_2 \in \mathbb{R}^mw2 ∈Rm,b 2 ∈ R b_2 \in \mathbb{R}b2 ∈R。o = w 2 h + b 2 o = w_2h + b_2o=w2 h+b2
4、预测值:y = softmax ( o ) y = \text{softmax}(o)y=softmax(o)
其中σ \sigmaσ是一个非线性的激活函数,隐藏层的大小是一个超参数。
3.3 激活函数
在神经网络中,如果没有激活函数,那么所有的层都只是线性变换的组合,无论网络有多少层,最终是的模型仍是一个线性模型。
假设有一个两层神经网络:
第一层:h = W 1 x + b 1 h = W_1x + b_1h=W1 x+b1
第二层:o = w 2 h + b 2 o = w_2h + b_2o=w2 h+b2
那么o = w 2 W 1 x + b ′ o = w_2W_1x + b^{\prime}o=w2 W1 x+b′,相当于只有一层,因此每少一个激活函数都相当于少一层。
而加入激活函数可以引入复杂的非线性关系,还能使神经网络可以逼近任意复杂的函数。下面将介绍三种常用的激活函数。
3.3.1 Sigmoid函数
将输入投影到(0,1)是一个软的σ ( x ) = { 1 if x > 0 0 otherwise σ(x) = \left{\begin{array}{ll} 1 & \text{if x > 0} \ 0 & \text{otherwise} \end{array} \right.σ(x)={10 if x > 0otherwise
sigmoid ( x ) = 1 1 + exp ( − x ) \text{sigmoid}(x) = \frac{1}{1 + \text{exp}(-x)}sigmoid(x)=1+exp(−x)1
3.3.2 Tanh函数
将输入投影到(-1,1) 是一个软的σ ( x ) = { 1 if x > 0 − 1 otherwise σ(x) = \left{\begin{array}{ll} 1 & \text{if x > 0} \ -1 & \text{otherwise} \end{array} \right.σ(x)={1−1 if x > 0otherwise
tanh ( x ) = 1 − exp ( − 2 x ) 1 + exp ( − 2 x ) \text{tanh}(x) = \frac{1 - \text{exp}(-2x)}{1 + \text{exp}(-2x)}tanh(x)=1+exp(−2x)1−exp(−2x)
3.3.3 ReLU函数(最常用)
ReLU: rectified linear unit
因为ReLU的计算只需要比较和取最大值,不需要进行指数运算,因此可以提高计算效率,加快训练过程,在神经网络中最为常用。
ReLU ( x ) = max ( x , 0 ) \text{ReLU}(x) = \text{max}(x,0)ReLU(x)=max(x,0)
3.4 多隐藏层
了解了激活函数,我们可以把每一次在隐藏层的操作看作对输入样本进行一次特征的提取,一个隐藏层可能把有关联的特征进行不同的组合,这样的组合有助于神经网络更深入地学习。
下面以一个多隐藏层多分类问题对隐藏层的进行更深入的理解:
第一个隐藏层:h 1 = σ ( W 1 x + b 1 ) h_1 = \sigma(W_1x + b_1)h1 =σ(W1 x+b1 )
第二个隐藏层:h 2 = σ ( W 2 h 1 + b 2 ) h_2 = \sigma(W_2h_1 + b_2)h2 =σ(W2 h1 +b2 )
第三个隐藏层:h 3 = σ ( W 3 h 2 + b 3 ) h_3 = \sigma(W_3h_2 + b_3)h3 =σ(W3 h2 +b3 )
输出层:o = W 4 h 3 + b 4 o = W_4h_3 + b_4o=W4 h3 +b4
预测值:y = softmax(o) y = \text{softmax(o)}y=softmax(o)
在人像识别问题中,第一个隐藏层可能把像素组成不同的五官,第二个隐藏层可能把五官组成不同的面部,第三个隐藏层将面部进一步细化成对象,最后我们就能判断图像上的人是谁了。
4 小结
在本节内容中,我们从最原始的二分类感知机出发,介绍了感知机的训练和工作原理,并且对于线性可分的数据集,我们总能得到分类的决策边界。由于单层感知机不能解决非线性的XOR问题,因此我们引入了多层感知机,隐藏层中的激活函数把将线性变成非线性,进而我们能解决更多复杂的问题。常用的激活函数有Sigmoid函数、Tanh函数和ReLU函数等。在建立模型时,还需要设置隐藏层层数和隐藏层大小等超参数。