多层感知器(MLP)
逻辑回归:逻辑回归拥有向东的决策函数,但是分类做出了不同的决策,通过S函数能够把任何的值转化到0-1之间的范围内,因此s函数可以输出有效的概率。
对于复杂的问题,单个逻辑回归不能很好的做出分类,如下图例子,需要三个不同的边界线共同进行分类。在这个过程中我们把x_1,x_2两个点的特征,转化成为z_1,z_2,z_3三个特征,我们相信这三个特征能够很好的适合当前的分类任务。最终的模型关于z_1,z_2,z_3的逻辑回归函数,z又是x_1,x_2的逻辑回归函数,这就是一个简单的MLP模型
多层感知机(MLP)模型都有较为整齐的格式,决策函数-s函数,您可以验证我们的功能组合可以转换为这些计算图:
MLP结构如下:输入层、隐藏层、输出层
隐藏层每个node包含线性组合函数和激活函数
如果使用线性激活函数或者不使用激活函数,那么无论你的神经网络有多少层,一直在做的只是计算线性激活函数,所以不如直接去掉全部隐藏层。因为这种算法和没有任何隐藏层的标准逻辑logistic回归是一样的。因此激活函数一般是非线性函数,如S函数、tanh、Relu、weaklyRelu等
MLP结构:
隐藏层的个数
每层隐藏层的神经元数量
激活函数的种类
隐藏层数量
选择稠密层(dense layer)还是全连接层(fully connected layer)
链式法则
自动计算MLP的梯度(gradient)需要用到链式法则(Chain rule),链式法则如下:
在MLP中求导的计算图如下:
对于两层的MLP求导过程
反向传播
在反向传播中,求导部分有的计算会重复使用,我们可以命名成变量dp, dz1, dz1, dx2等,是反向传播更加效率
在反向传播中需要用到,因此梯度下降过程中不仅需要反向转播,也需要正向传播
反向传播过程如下:
反向传播过程的使用numpy矩阵运算运行效率会比较高,如果可以选择矩阵运算的情况下,尽量选择矩阵进行循环的计算。在反向传播矩阵中,每个元素都是使用链式法则对参数进行的求导,对于SGD(Stochastic Gradient Descent,随机梯度下降)计算过程如下:
对于mini-batch批次梯度下降方法是的梯度dw和db两个样本的加和,通过矩阵运算过程如下:
反向传播推导过程可以使用雅各比矩阵(Jacobian)进行推导。