感知机-动手学深度学习

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了感知机-动手学深度学习脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1 感知机

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

二分类:-1或1

线性回归:输出实数

softmax回归:输出回归概率

感知机-动手学深度学习

1.1 训练感知机

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

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

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

感知机-动手学深度学习

1.2 例子

感知机-动手学深度学习

1.3 收敛定理

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

感知机-动手学深度学习

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

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

1.4 XOR问题

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

感知机-动手学深度学习

1.5 总结

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

2 多层感知机

2.1 解决XOR问题

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

感知机-动手学深度学习

2.2 单隐藏层

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

2.2.1 单类分类

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

感知机-动手学深度学习

2.2.2 激活函数

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

sigmoid激活函数:

就是把σ给软化了

感知机-动手学深度学习

Tanh激活函数:

感知机-动手学深度学习

ReLU激活函数:

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

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

感知机-动手学深度学习

2.2.3 多类分类

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

感知机-动手学深度学习

2.3 多隐藏层

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

感知机-动手学深度学习

2.4 总结

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

3.Q&A

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

脚本宝典总结

以上是脚本宝典为你收集整理的感知机-动手学深度学习全部内容,希望文章能够帮你解决感知机-动手学深度学习所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: