共计 1725 个字符,预计需要花费 5 分钟才能阅读完成。
多层感知机(MLP)
本文章基于 3Blue1Brown 视频并且联合本人学习总结的笔记视频链接:
https://www.youtube.com/watch?v=aircAruvnKk 本文只能帮你疾速建设对常识了解,如果想
细入理解常识——本人查阅文献以及书籍本人也在学习深度学习(花书),会不断更新此文章,尽可能的让这篇文章完满
能够拜访我的集体博客:https://shangxiaaabb.github.io/
引入
以手写字体辨认为例,咱们人类能够很容易对一个手写字体进行辨认比方下图:
咱们能够非常自信的说:这个数字是 3!然而对于计算机并非如此!计算机并没有如同人类一样的视觉细胞,那么怎么让计算机意识这数字呢?咱们在 K 近邻算法中有一个手写字体辨认试验,咱们是间接将数字进行 2 值化
将数字转化为 0 -1,如下图:
而后将 32×32 的图像间接转化为 1 ×1024,而后利用 K 近邻算法进行判断。这无妨是一个很好的方法,另外一种更加间接的方法就是将数字转化为不同的灰度值矩阵,如下:
咱们后续介绍多层感知机也是灰度值变换后图像进行判断。
什么是多层感知机
在介绍多层感知机前(不解释定义之类的,都能够自行百度),咱们先理解 单层神经网络 的根本构造,单层神经网络个别由:输出层、输入层形成。如下:
先临时不解释各个层的作用,咱们持续介绍多层感知机:
比照两图最显著的区别就是 多层感知机 相较于 单层神经网络 额定的多了一个 暗藏层 。是不是该解释一下 1 每一层的作用了呢?不!(间接对概念下定义是很难了解的)咱们借助咱们引入的例子来对没一层进行解释。咱们设计一个多层感知机模型如下(为什么这样设计后续解释,从左至右: 输出层(784)–> 暗藏层(n)–> 暗藏层(n)–> 输入层(10)):
- 括号外面数字代表层的数目
引入中咱们曾经提到手写数字曾经被咱们转化为一个28×28 的灰度值矩阵,上面开始解释每一层都在干些什么事件!
输出层
咱们晓得数字曾经转化为了一个 28×28 的灰度值矩阵,咱们相似 K 近邻算法将其再次转为为 1 ×784 的矩阵,咱们将矩阵中的每一个数字(灰度值)作为咱们的 神经元,也就是说咱们领有 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)}
$$
函数图像如下: