前面讲解 感知机 , 说明其有一个很大的不足之处,即它无法求解非线性问题或者异或问题。后面就发展出了多层感知机(deep feebforward network or multilayer perceptron),以及求解使用的BP算法。这也是深度学习的基础。
http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/DL%20(v2).pdf
1. 多层感知机
1.1 Neuron
我们将逻辑回归抽象成一个neural network的一个“Neuron”,而多层感知机即是将这些神经元连接在一起。对于深度学习网络来说,它也是有一个个神经元组成,但是它可以有各个不同的网络结构(网络堆叠)。
1.2 Multilayer Perceptron
多层感知机,其中一个小白色长方形(f)为一个一个”Neuron”,每一层可以有多个 Neruon, 而多层感知机可以有很多层。其中灰色部分为隐含层(Hidden Layer),绿色为输入层(Input Layer),黄色部分为输出层 (Output Layer) 。蓝色线可以看作是一个权重(w), 而 f 代表激活函数(activate function)。 目前激活函数有很多种,常用的有 Sigmoid
、Relu
、Tanh
、Leaky Relu
、Softmax
等。
多层感知机是一种监督模型,它可以解决分类和回归问题(输出层的结构有所不同)。一般在解决分类问题时,它会在输出层前增加一层 softmax 处理,来模拟各个分类的概率。
下面一分类问题为例子,来了解它的整个运作过程。
1.2.1 数据流动
数据是如何在感知机内流动的?
本质上,多层感知机是一个个矩阵的乘法运算,它的数据流是从前向后流动的,即 Feedforward
如,输入为
对于隐含层第元素有:
代表第L层的j个z值与第L-1层的第i个输入之间的权重 代表第L层的偏移量 代表第L层输出的第i的元素,同时是第L+1的输入的第i个元素 - f为激活函数
对于输入层有:
对于输出层有(这里不考虑softmax):
数据流通为:
其中 jxi
得 matrix
, j
为第L
层的输出Dimensions
,i
为第``L层的输入的Dimensions
。
根据公式1, 2
,可以推出输出为:
1.2.2 损失函数
由于多层感知机可以处理分类和回归问题,所有其损失函数也分为两类,下面以分类问题为例。
可以看作是多分类问题,这是可以采取最大似然概率来作为其损失函数(交叉熵)。
做分类问题时,需要在输出层之前增加一个 softmax
层。
Tips 这里看出多层感知机其实是一个
discriminative model
。
假设共有m个类别 Loss Function
为:
或者使用
其中 one-shot vector
的样式
Tips:
- 如果是回归模型的话,无需添加 softmax 层,而且可以使用 mean square errors 作为损失函数
Thinking
- 式4和式5在使用过程中,有什么区别呢?那个效果更好呢?
了解了损失函数之后,那么如何来寻找损失函数的极大值呢?或者是如何解决这个优化问题呢?这里就引出了BackPropagation, 即BP算法
2. BP算法
由式子(5) 可知, 使用SGD来解该优化问题,在给定x的情况下, 令 c 为损失函数。
首先对隐含层某个参数求偏导数,如
其中
其中
令
则
由于
因此找到了
令
又因为:
故有
在输出层有:
Tips 如果是softmax的话,应该怎么做?
因此,对最后一个隐含层的输出有
然后一次向前求解,即可求出对所有参数的倒数。
对
因此
- 本文标题:多层感知机与BP算法
- 本文作者:codeflysafe
- 创建时间:2020-09-23 16:14:19
- 本文链接:https://codeflysafe.github.io/2020/09/23/多层感知机与BP算法/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!