李沐-动手学深度学习-多层感知机的实现

多层感知机的从零开始实现

1. 多层感知机(MLP)原理简介

             多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

 

 从上图可以看到,多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。 

隐藏层的神经元怎么得来?首先它与输入层是全连接的,假设输入层用向量X表示,则隐藏层的输出就是 f (W1X+b1),W1是权重(也叫连接系数),b1是偏置,函数f 可以是常用的sigmoid函数或者tanh函数:

 注:神经网络中的Sigmoid型激活函数:

       1.  为嘛使用激活函数?

            a. 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。

            b. 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中

最后就是输出层,输出层与隐藏层是什么关系?

      其实隐藏层到输出层可以看成是一个多类别的逻辑回归,也即softmax回归,所以输出层的输出就是softmax(W2X1+b2),X1表示隐藏层的输出f(W1X+b1)。

       MLP整个模型就是这样子的,上面说的这个三层的MLP用公式总结起来就是,函数G是softmax。

        因此,MLP所有的参数就是各个层之间的连接权重以及偏置,包括W1、b1、W2、b2。对于一个具体的问题,怎么确定这些参数?求解最佳的参数是一个最优化问题,解决最优化问题,最简单的就是梯度下降法了(SGD):首先随机初始化所有参数,然后迭代地训练,不断地计算梯度和更新参数,直到满足某个条件为止(比如误差足够小、迭代次数足够多时)。这个过程涉及到代价函数、规则化(Regularization)、学习速率(learning rate)、梯度计算等,本文不详细讨论,读者可以参考本文底部给出的两个链接。

导入需要使用的对应的包

李沐-动手学深度学习-多层感知机的实现_第1张图片

实现一个具有但隐藏层的多层感知机,它包含256个隐藏单元

李沐-动手学深度学习-多层感知机的实现_第2张图片

实现ReLu激活函数

实现我们的模型

李沐-动手学深度学习-多层感知机的实现_第3张图片

多层感知机的训练过程与softmax回归的训练完全相同

李沐-动手学深度学习-多层感知机的实现_第4张图片

李沐-动手学深度学习-多层感知机的实现_第5张图片

 多层感知机的简洁实现

通过高级API更简洁地实现多层感知机

李沐-动手学深度学习-多层感知机的实现_第6张图片

 隐藏层 包含256个隐藏单元,并使用了ReLU激活函数

李沐-动手学深度学习-多层感知机的实现_第7张图片

 训练过程

李沐-动手学深度学习-多层感知机的实现_第8张图片

你可能感兴趣的:(cnn,人工智能,神经网络)