多层感知机(MLP)

本文章基于3Blue1Brown视频并且联合本人学习总结的笔记视频链接:

https://www.youtube.com/watch?v=aircAruvnKk本文只能帮你疾速建设对常识了解,如果想

细入理解常识——本人查阅文献以及书籍本人也在学习深度学习(花书),会不断更新此文章,尽可能的让这篇文章完满

能够拜访我的集体博客:https://shangxiaaabb.github.io/

引入

以手写字体辨认为例,咱们人类能够很容易对一个手写字体进行辨认比方下图:

咱们能够非常自信的说:这个数字是3!然而对于计算机并非如此!计算机并没有如同人类一样的视觉细胞,那么怎么让计算机意识这数字呢?咱们在K近邻算法中有一个手写字体辨认试验,咱们是间接将数字进行2值化

将数字转化为0-1,如下图:

而后将32x32的图像间接转化为1x1024,而后利用K近邻算法进行判断。这无妨是一个很好的方法,另外一种更加间接的方法就是将数字转化为不同的灰度值矩阵,如下:

咱们后续介绍多层感知机也是灰度值变换后图像进行判断。

什么是多层感知机

在介绍多层感知机前(不解释定义之类的,都能够自行百度),咱们先理解单层神经网络的根本构造,单层神经网络个别由:输出层、输入层形成。如下:

先临时不解释各个层的作用,咱们持续介绍多层感知机:

比照两图最显著的区别就是多层感知机相较于单层神经网络额定的多了一个暗藏层。是不是该解释一下1每一层的作用了呢?不!(间接对概念下定义是很难了解的)咱们借助咱们引入的例子来对没一层进行解释。咱们设计一个多层感知机模型如下(为什么这样设计后续解释,从左至右:输出层(784)-->暗藏层(n)-->暗藏层(n)-->输入层(10)):

  • 括号外面数字代表层的数目

    引入中咱们曾经提到手写数字曾经被咱们转化为一个28x28的灰度值矩阵,上面开始解释每一层都在干些什么事件!

输出层
咱们晓得数字曾经转化为了一个28x28的灰度值矩阵,咱们相似K近邻算法将其再次转为为1x784的矩阵,咱们将矩阵中的每一个数字(灰度值)作为咱们的神经元,也就是说咱们领有784个神经元(也就解释了为什么要设计输出层的数目为784)。


输入层
咱们晓得阿拉伯数字只有0-9(别抬杠说10,难道不是由0-1形成),那么是不是咱们数据在通过解决之后返回的后果也应该是0-9,这0-9也就形成了咱们的输入层(也就解释了输入层为什么是10)


暗藏层
至于暗藏层为什么设计两层,而且每层的数目是n。其实很容易解释,首先你无妨在纸上写任意几个数字(如果你写的是数字9),手写数字9是不是大体上能够分为两局部:9的头部的圆、9的尾部的竖线。顺次类推任意数字咱们都能够才分成几个局部组成(只管由类似然而不影响咱们对数字辨认)。好啦假如咱们曾经对数字划分结束,曾经划分若干组成成分——咱们也就形成了咱们第二层暗藏层,顺次类推是不是还能够持续细分呢?9的头部的圆(o)是不是能够细分其余款式呢?——第一层暗藏层


解释完各个层都在干嘛,你也没解释咱们怎么辨认数字呀!别急!接下来就解释!咱们假如咱们在第二层暗藏层失去了一个圈和一个竖线通过组合是不是能够失去数字9?为什么不是数字6呢?咱们假如第二次暗藏层的数目是$a_1.....a_n(每一个a_i代表不同数字组成部分)$,仔细的你必定曾经发现了不同层之间有着许多线进行连贯,他们是干嘛的呢?权重,正是因为这些权重能力保障咱们能够辨认数字是9而不是6。以此类推第一场暗藏层也如此!
以上都是一些口语化解释并没有波及过多的专业名词,上面开始解释一些实践上的内容!

激活函数

激活函数判断来确定神经元是否应该被激活,常见三类激活函数如下:

sigmoid函数

$$sigmoid(x)=\frac{1}{1+exp(-z)}$$

$$z=w_1a_1......w_na_n+b_0$$

$b_0$代表偏置,用于判断激活函数为多少状况下神经元是否被激活
函数图像如下:

Relu函数

$$Relu(z)=max(x,0)$$

函数图像如下:


所有小于0的数字都解决为0

tanh函数

$$tanh(z)=\frac{1+exp(-2z)}{1+exp(-2z)}$$

函数图像如下: