【动手学深度学习】03-感知机

1 感知机

给予输入,权重和偏差,然后感知机输出1或0,其实是个二分类问题

二分类:-1或1

线性回归:输出实数

softmax回归:输出回归概率

image-20220217115523159

1.1 训练感知机

标记$y_i$有值为1和-1,分别对应着二分类中的两个类。如果$< w,x_i >+b$的值小于等于0,即预测的为-1对应的类,但是真实的$y_i$是1,二者相乘结果为非整数表示分类错误,就需要调整参数。

停止条件:如此反复直到所有的数据都分类正确。

等价于使用批量大小为1的梯度下降,每一次拿一个样本去算梯度做更新,不是随机梯度下降是因为感知机是一边又一边的去扫描数据,不是随机取值。损失函数使用max来判断是否分类正确,若正确则取值为0,常数的梯度

image-20220217173503976

1.2 例子

image-20220217180730249

1.3 收敛定理

暂时不做证明,证明见这里

image-20220217180914646

余量ρ使得存在一个分界面,该分界面对于所有的数据都分类正确。

r代表着数据大小,所以收敛的步数与r成正比。ρ是分界面的大小,如果分割面很大,那么就会把数据分类分的很开,就所需要的步数变少,所以步数和ρ成反比。

1.4 XOR问题

他只能产生线性分割面,不能拟合XOR函数。该问题直接导致了AI的第一次寒冬。

image-20220217181414975

1.5 总结

  • 感知机是一个二等分模型,是最早的AI模型之一
  • 它的求解算法等价于使用批量大小为1的梯度下降
  • 它不能拟合XOR函数,导致的第一次AI寒冬

2 多层感知机

2.1 解决XOR问题

解决XOR问题,单线性模型是不行的,所以使用多层。蓝色的线根据x轴坐标分类,黄色的线根据y轴的坐标分类,之后再把蓝色和黄色的分类结果相乘即可得到正确的分类结果。即如果一个函数解决不了,那就先用几个简单地函数来解决,之后再对简单的函数进行分类解决。

image-20220217160050472

2.2 单隐藏层

隐藏层的大小是超参数。原因:输入的大小是不能改的,输出的大小取决于要分多少类,唯一能够设置的就是超参数的大小。

2.2.1 单类分类

输入:一个n维向量。隐藏层:$W_1$是一个m*n的矩阵,偏移是一个m维的向量。输出层:为一个m维的向量,有多少个分类,就是多少维。

image-20220217162751684

2.2.2 激活函数

函数σ的结果是一个mn的矩阵,该结果作为输入数据到输出层中,再经过输出层的运算得到结果。如果σ是线性的(比如σ=a*x)那么输出层结果是一个线性函数,等价于一个单层的感知机。

sigmoid激活函数:

就是把σ给软化了

image-20220217164324889

Tanh激活函数:

image-20220217164426432

ReLU激活函数:

rectified linear unit,其实就是一个max而已,主要的好处就是算起来很快,不需要做指数运算。

指数运算是一个很贵的事情,在cpu上一次指数运算可能相当于上百次乘法运算,在GPU上好一点,但是还是很贵

image-20220217164855396

2.2.3 多类分类

定义和单类没有太大区别,就是输出层$W_2$变成了m*k,$b_2$变成了k维向量,然后对output做一次softmax

image-20220217165347369

2.3 多隐藏层

每层的大小一般都是越来越小的(也可以先扩张再缩小),如果input的维度比较高可以使用多层隐藏层慢慢压缩。

image-20220217170157089

2.4 总结

  • 多层感知机使用隐藏层和激活函数来得到非线性模型
  • 常用激活函数是Sigmoid,Tanh,ReLU(ReLU用的最多)
  • 使用softmax来处理多类分类
  • 超参数为隐藏层数,和各隐藏层大小

3.Q&A

  • 1、神经网络中的一层网络到底是指什么?
  • 一层通常是带有权重的一层,输入层不算做一层
  • 2、数据的区域r怎么求,ρ怎么设定?实际中我们确实想找到数据分布的区域,可以找到吗?
  • 收敛定理是统计学上的理论,数学上不去计算
  • 3、XOR函数有什么应用呢?
  • 没有什么用处,只是举个反例
  • 4、是不是x轴是特征1,y轴是特征2,红蓝是他们的label?是这么对应每一条数据吗?所以感知机不能处理XOR?
  • 对的,对于4个样本二维特征的样本都不能拟合,体现了感知机的局限性
  • :label:5、为什么神经网络要增加隐藏层的层数,而不是神经元的个数?
  • 网络可以采用层数少而神经元多的模型(矮胖),也可以使用层数多而神经元少的模型(高瘦)。但是,前者不好训练,后者容易训练。后者即是深度学习,前者是“浅度学习”。不好训练的原因就是需要一次拟合大量的神经元,一口气吃成胖子很难,而把一个复杂的东西分成多个步骤去学习就很容易了,所以叫“深度学习”
  • 6、ReLU为什么管用,激活函数的本质是要做什么事?
  • ReLU是一个非线性的函数,激活函数的本质是引入非线性型,不再去干别的事情
  • 7、不同任务下的激活函数是不是都不一样?
  • 激活函数的确定不是很重要,没有特殊情况就用ReLU。你可以去选,但是没有本质的区别

【动手学深度学习】03-感知机
https://zhaoyunlai.github.io/posts/fbeef9592554/
作者
拉胯
发布于
2022年3月12日
许可协议