感知机

一、感知机

  给定输入x,权重w,偏移b,感知机输出为:

 

   本质上,感知机就是一个二分类问题,与线性回归相比,线性回归输出实数,而这里输出一个离散类;与softmax回归相比,softmax是个多分类问题,输出概率,而这里只是一个二分类问题。

二、训练感知机

  最初对感知机的训练:

  initialize w = 0 and b = 0
  repeat
    if yi[(w, xi) + b] ≤ 0 then
      w ← w + yixi and b ← b + yi
    end if
  until all classified correctly

 

  if语句判断的是分类出错的情况,如果是正类,[(w, xi) + b] 大于0,但整体小于等于0,说明 yi 小于等于0,而正确的 yi 应该是大于0的,所以分类出错;如果是负类,同理。

  如果分类出错,就进行w和b的更新,直到所有的分类正确。

  等价于使用批量为1的梯度下降,并使用如下的损失函数:

 

   这个公式是对应于算法中的if,如果分类正确,损失函数输出为0,不需要做更新,梯度为常熟;如果分类错误,损失输出为 -y(w, x) 。

三、XOR问题

  感知机不能拟合XOR函数,它只能产生线性分割面。

  (XOR函数:如果输入的两个值是相同类型,则输出为-1;反之,输入是不同类型,输出则为+1)

   如图中,红点是同一类,绿点是同一类,而蓝色的线为分割面,可见,若成功分割红色数据,绿色数据则无法兼顾;成功分割绿色数据,那么红色数据也无法兼顾。直接导致了第一次AI的寒冬时期,不过后面解决了该问题,方法是——多层感知机。

四、多层感知机

  如上所述,如果想把XOR完全分类,单线性模型肯定不行,那么就需要如下几步:

  

  (1)用蓝色分类器,以y轴为标准,左区域给正类,右区域给负类

  (2)用黄色分类器,以x轴为标准,上区域给正类,下区域给负类

  (3)对前两步的分类结果进行相乘,最后结果显示完全分类正确

五、单隐藏层

  1、单分类

   

  其中, σ 为按元素的激活函数,必须是非线性,如果是线性的话,那么向量 h 代入到向量 o 中,仍是线性,即最后的输出还是单线性模型,无法解决XOR问题,所以激活函数必须是非线性的。

  1.1 Sigmoid 激活函数

    将输入投影到区间(0,1)

    

  1.2 Tanh 激活函数

    将输入投影到区间(-1,1)

  1.3 ReLU 激活函数

    最常用的激活函数,运算效率高,不需要指数运算

  2、多分类

     本质上来说,其实是softmax的基础上加了若干层隐藏层。

  总的来说,多层感知机其实就是使用隐藏层和非线性的激活函数来得到非线性模型,超参数为隐藏层层数、各个隐藏层大小。

posted @ 2021-11-25 17:05  Sunshine_y  阅读(324)  评论(0编辑  收藏  举报