多层感知机的概念
我们要了解多层感知机,首先应该知道感知机是什么
感知机
- 感知机是人工智能最早的模型;
是一个有监督的学习算法; - 本质上感知机是一个二分类的问题:输入大于0就输出1,否则输出0。
与线性回归的不同:线性回归输出的是一个实数而感知机输出的是一个离散的类。
与softmax的区别:在有n个类的情况下,softmax会输出n个元素,所以可以是一个多分类的问题,但是感知机这里只输出一个元素,说明感知机最多只能做一个二分类问题 。
训练感知机的过程(相当于批量为1 的梯度下降)
感知机的缺点:
- 不能拟合异或函数
- 意思是不能用一条直线将四个点分成不同的两类!!!
感知机相关更详细内容可以参考:https://blog.csdn.net/m0_37957160/article/details/113922919
多层感知机
前面介绍感知机存在不能拟合异或i函数,而多层感知机解决了感知机的异或问题。
那么它是如何解决的呢?
举个例子:
先学习蓝色的线1、2记作+ 2、4记作-在学习黄色的线1、2记作+ 3、4记作-如下图表格所示
第三行结果是根据前两行的异或运算(相同为+,不同为-)
先进入黄色的分类器,在进入蓝色的分类器。
假设一次做不了,那么就先学一个函数,然后在学一个函数,最后组合起来。
单隐藏层
输入层的大小是固定的,输出层的大小等于类别的数量,也就是说唯一可以设置的是隐藏层的大小
问题:神经网络一层到底是什么?答:权重+激活函数+函数
所以上图总共有两层神经网络
注意:输入层不算一层!!! 因为只有两层的w所以神经网络只有两层
1.箭头+h
2.箭头+0
为什么需要非线性激活函数?
线性的激活函数或导致最终输出还是一个线性函数,就等价于一个单层的感知机了
a.不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
b.使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。
激活函数:
-
Tanh函数
1.与sigmoid相似,区别在于Tanh将x投影在-1到1的区间内。
2.函数中的x的系数为-2是为了方便求导。 -
ReLu激活函数
1.目前最常用激活函数
2.优点是不用做指数运算
去掉中间的隐藏层就是一个softmax回归
加上中间的隐藏层就是多层感知机
softmax就是将所有的输入映射到0和1的区间之内,并且所有输出的值加起来等于1,从而转变成概率。
与之前单层感知机的区别是 最后一部做了一个softmax操作
即使用softmax来处理多分类问题
多隐藏层
多隐藏层超参数的数量有多了
1.要选择隐藏层数
2.每层隐藏层的大小
答疑解惑:
为什么神经网络要增加隐藏层的层数,而不是神经元的个数?
一层神经元越多,导致模型很宽,这叫做浅度学习。并且该模型非常容易过拟合,不好训练。
不同任务下的激活函数是不是不一样?需要通过实验来确认吗?
都差不多,激活函数远远,没有那些选择隐函数超参数的任务重要,所以就用ReLu吧!
为什么现在大家都用MLP而不是SVM,SVM相对与MLP而言更容易调参,效果也较好
深度学习的好处;虽然模型变化很大,但是代码改动比较小,甚至基本没有多大的变动。当MLP效果不好的时候我们可以转CNN、RNN、transformer。
参考文章
课程来源
参考书目