前面讲解 感知机 , 说明其有一个很大的不足之处,即它无法求解非线性问题或者异或问题。后面就发展出了多层感知机(deep feebforward network or multilayer perceptron),以及求解使用的BP算法。这也是深度学习的基础。 多层感知机与BP算法 - 图1> http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/DL%20(v2).pdf.pdf)

1. 多层感知机

1.1 Neuron

image.png
我们将逻辑回归抽象成一个neural network的一个“Neuron”,而多层感知机即是将这些神经元连接在一起。对于深度学习网络来说,它也是有一个个神经元组成,但是它可以有各个不同的网络结构(网络堆叠)。
image.png

1.2 Multilayer Perceptron

多层感知机,其中一个小白色长方形(f)为一个一个”Neuron”,每一层可以有多个 Neruon, 而多层感知机可以有很多层。其中灰色部分为隐含层(Hidden Layer),绿色为输入层(Input Layer),黄色部分为输出层 (Output Layer) 。蓝色线可以看作是一个权重(w), 而 f 代表激活函数(activate function)。 目前激活函数有很多种,常用的有 SigmoidReluTanhLeaky ReluSoftmax 等。
image.png
多层感知机是一种监督模型,它可以解决分类和回归问题(输出层的结构有所不同)。一般在解决分类问题时,它会在输出层前增加一层 softmax 处理,来模拟各个分类的概率。

下面一分类问题为例子,来了解它的整个运作过程。

1.2.1 数据流动

数据是如何在感知机内流动的?

本质上,多层感知机是一个个矩阵的乘法运算,它的数据流是从前向后流动的,即 Feedforward

  1. image.png

如,输入为 多层感知机与BP算法 - 图6, 其中多层感知机与BP算法 - 图7, 即单个x存在m个特征。
对于隐含层第元素有:

  • 多层感知机与BP算法 - 图8代表第L层的j个z值与第L-1层的第i个输入之间的权重
  • 多层感知机与BP算法 - 图9代表第L层的偏移量
  • 多层感知机与BP算法 - 图10代表第L层输出的第i的元素,同时是第L+1的输入的第i个元素
  • f为激活函数
  • 多层感知机与BP算法 - 图11
  • 多层感知机与BP算法 - 图12

对于输入层有:

  • 多层感知机与BP算法 - 图13

对于输出层有(这里不考虑softmax):

  • 多层感知机与BP算法 - 图14

数据流通为:

多层感知机与BP算法 - 图15

其中多层感知机与BP算法 - 图16为 jxi 得 matrix, j为第L层的输出Dimensions,i为第L层的输入的Dimensions。
根据公式1, 2,可以推出输出为:

多层感知机与BP算法 - 图17

1.2.2 损失函数

由于多层感知机可以处理分类和回归问题,所有其损失函数也分为两类,下面以分类问题为例。
可以看作是多分类问题,这是可以采取最大似然概率来作为其损失函数(交叉熵)。
做分类问题时,需要在输出层之前增加一个 softmax 层。

Tips 这里看出多层感知机其实是一个 discriminative model

假设共有m个类别 多层感知机与BP算法 - 图18多层感知机与BP算法 - 图19 为所有的参数,则 Loss Function 为:

多层感知机与BP算法 - 图20

或者使用

多层感知机与BP算法 - 图21

其中 多层感知机与BP算法 - 图22 , one-shot vector 的样式

Tips:

  1. 如果是回归模型的话,无需添加 softmax 层,而且可以使用 mean square errors 作为损失函数

Thinking

  1. 式4和式5在使用过程中,有什么区别呢?那个效果更好呢?

了解了损失函数之后,那么如何来寻找损失函数的极大值呢?或者是如何解决这个优化问题呢?这里就引出了BackPropagation, 即BP算法

2. BP算法

由式子(5) 可知, 使用SGD来解该优化问题,在给定x的情况下, 令 c 为损失函数。
image.png

首先对隐含层某个参数求偏导数,如 多层感知机与BP算法 - 图24

多层感知机与BP算法 - 图25

其中多层感知机与BP算法 - 图26

多层感知机与BP算法 - 图27

其中多层感知机与BP算法 - 图28

多层感知机与BP算法 - 图29

多层感知机与BP算法 - 图30, 多层感知机与BP算法 - 图31, 多层感知机与BP算法 - 图32

多层感知机与BP算法 - 图33

由于多层感知机与BP算法 - 图34, 故:
多层感知机与BP算法 - 图35

因此找到了多层感知机与BP算法 - 图36多层感知机与BP算法 - 图37 之间的关系,一旦得到了多层感知机与BP算法 - 图38就可以求出多层感知机与BP算法 - 图39
多层感知机与BP算法 - 图40
又因为:
多层感知机与BP算法 - 图41

故有

多层感知机与BP算法 - 图42

在输出层有:多层感知机与BP算法 - 图43, 这个要根据具体的损失函数来确定

多层感知机与BP算法 - 图44 这个如果没有 softmax 层或者说是回归问题的话,值因为1

Tips 如果是softmax的话,应该怎么做?

因此,对最后一个隐含层的输出有

多层感知机与BP算法 - 图45

然后一次向前求解,即可求出对所有参数的倒数。

多层感知机与BP算法 - 图46求导数时:

多层感知机与BP算法 - 图47

因此
多层感知机与BP算法 - 图48