小白版深度学习:多层感知机MLP和BP神经网络
写在前面
虽说是写在前面,但是建议在看完文章后再看
多层感知机是一个网络,BP是一个算法,他不是一个网络,之所以我们能够随处可见“BP神经网络”这样的名词,其是对一种多层感知机的叫法,指的是使用了BP算法优化的多层感知机。
本文主要讲述四个部分:感知机 -> 多层感知机 -> BP算法 -> BP神经网络
本系列课程图片均为网络图片或者本人随意画的,无需计较一些细节
神经元
较于一些博客介绍这部分从生物学引申,所谓神经元,就是一个计算单元,或者说是一个计算标志,数据到达神经元,在此处进行数值计算,你也可以理解为此处内置一个激活函数。
感知机
什么是感知机?感知机能干什么?
感知机是一个能够进行二分类的线性模型。什么是二分类?例如人类,可分为男人、女人两类,那么如果我有一个人的一些信息,那么我讲这些信息输入到感知机,我能通过他的输出知道这个人是男人还是女人。即我们将一些事物分成一些类别,而我们关注其中的两个类别,这两个类别的并集是全部的事物,例如男人、女人,这两类是人类性别的全部,即人类不是男人就是女人。
感知机结构如下图所示,输入层进行数据输入,第一层红色框标出的就是神经元,可以简单地理解就是在此处进行计算,在此处进行计算,W指数据输入到神经元的权重,y表示输出,f表示激活函数,当然该函数并不是必须的,此处假设使用了激活函数。
上图神经元进行计算方式如下:
f指神经元的激活函数,里面的x1*w1+...这些你为输入到神经元的数据,实际上式中应该有偏置b,但由于图中未标出,故未写出,对于上式子中的乘法累加,你是否记得矩阵的乘法呢?前置知识 一元函数 导数 偏导 激活函数 矩阵运算,把W看作大小为1 * n的矩阵,把X看作大小为N * 1的矩阵,则W * X结果只有一个元素,该元素计算方式就与上图中计算式中的计算式一致,故我们可以写为如下格式:
当我们把偏置加上后,就可以得到如下式子:
我们计算出了输出y。
为了更直观的展示计算,我们假设输入矩阵X具有三个元素,分别为1、2、3,W对应的为3、2、1,B对应都为0,神经元激活函数为sigmoid函数,则直接计算式为:
难道这就叫深度学习?显然不是,我们此时只是提供了一种数值顺着神经元计算的方式,让我们知道了输入一组数据怎么获得网络输入的过程。我们缺少了神经网络中最重要的过程——训练,
什么是训练?加入我们输入数据矩阵X,而我们想要的y是0,但是此时网络输出却是1,这显然是不符合预期的,此时我们怎样才能获得y=0呢?通过计算式可知,y的值和W、X、B有关,此时X是我们的输入,不能改变,那么我们可以调整矩阵W和矩阵B来使得y=0,这个调整的过程就是训练的过程,不断地调整W和B,使得输出y符合我们的预期。
那么我们应该怎么调整呢?不知你是否还记得小白深度学习:基于梯度优化方法中的优化方法?我们使用梯度来不断地调整W、B,直到找到符合的W、B.
当我们找到了W、B后,我们怎么预测呢?就是按照神经元的计算方式直接计算即可!
多层感知机
结构如下图:
输入层输入数据,经过几个隐藏层,然后输出,每一个神经元对下一层所有神经元进行的全连接,即给下一层每个神经元都进行连接,每个神经元计算方式与上述感知机计算方式一致。
BP算法
BP神经网络
未完待续......