什么是多层感知机

多层感知机的概念

我们要了解多层感知机,首先应该知道感知机是什么

感知机

  1. 感知机是人工智能最早的模型;
    是一个有监督的学习算法;
  2. 本质上感知机是一个二分类的问题:输入大于0就输出1,否则输出0。

与线性回归的不同:线性回归输出的是一个实数而感知机输出的是一个离散的类。
与softmax的区别:在有n个类的情况下,softmax会输出n个元素,所以可以是一个多分类的问题,但是感知机这里只输出一个元素,说明感知机最多只能做一个二分类问题 。

训练感知机的过程(相当于批量为1 的梯度下降)
在这里插入图片描述
感知机的缺点:

  1. 不能拟合异或函数
  2. 意思是不能用一条直线将四个点分成不同的两类!!!

在这里插入图片描述
感知机相关更详细内容可以参考: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.使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。

激活函数:

  1. Sigmoid函数
    在这里插入图片描述
    1.将x的值投影到一个0和1的开区间中
    2.sigmoid函数实际上是阶跃函数的温和版

  2. Tanh函数
    在这里插入图片描述
    1.与sigmoid相似,区别在于Tanh将x投影在-1到1的区间内。
    2.函数中的x的系数为-2是为了方便求导。

  3. ReLu激活函数
    在这里插入图片描述
    1.目前最常用激活函数
    2.优点是不用做指数运算
    在这里插入图片描述
    去掉中间的隐藏层就是一个softmax回归
    加上中间的隐藏层就是多层感知机
    softmax就是将所有的输入映射到0和1的区间之内,并且所有输出的值加起来等于1,从而转变成概率。
    在这里插入图片描述
    与之前单层感知机的区别是 最后一部做了一个softmax操作

即使用softmax来处理多分类问题

多隐藏层
在这里插入图片描述
多隐藏层超参数的数量有多了
1.要选择隐藏层数
2.每层隐藏层的大小

答疑解惑:

为什么神经网络要增加隐藏层的层数,而不是神经元的个数?

一层神经元越多,导致模型很宽,这叫做浅度学习。并且该模型非常容易过拟合,不好训练。

不同任务下的激活函数是不是不一样?需要通过实验来确认吗?

都差不多,激活函数远远,没有那些选择隐函数超参数的任务重要,所以就用ReLu吧!

为什么现在大家都用MLP而不是SVM,SVM相对与MLP而言更容易调参,效果也较好
深度学习的好处;虽然模型变化很大,但是代码改动比较小,甚至基本没有多大的变动。当MLP效果不好的时候我们可以转CNN、RNN、transformer。

参考文章
课程来源
参考书目

Published by

风君子

独自遨游何稽首 揭天掀地慰生平