AI(007) - 笔记 - 感知机(Perceptron)和多层感知机(Multi-Layer Perceptron)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darkrabbit/article/details/80740696

感知机(Perceptron)和多层感知机(Multi-Layer Perceptron)

AI-第五期-DarkRabbit

之前并未做过笔记,所以这篇文章是对以下内容回顾,对应:

  • 第六周:(02)感知机
  • 第六周:(03)多层感知机和反向传播
  • 维基百科(en)“Backpropagation” 词条
  • 《机器学习》(西瓜书):第5章 神经网络 - 5.1 神经元模型
  • 《机器学习》(西瓜书):第5章 神经网络 - 5.2 感知机与多层网络
  • 《机器学习》(西瓜书):第5章 神经网络 - 5.3 误差逆传播算法

依然公式比较多,CSDN的app会显示不正常(乱码),请用其它任意方式浏览。


目录


1 感知机(Perceptron)

1.1 过程

inputs(bottom) -> weights -> weighted sum -> step function -> output(top)

y = f ( W X + b )

step function(activation function)(激活函数):

f ( x ) = { 1 x > 0 0 x 0

1.2 前馈计算

  • weighted sum: l o g i t = ω 0 x 0 + ω 1 x 1 + + ω n x n
  • 其中 ω 0 = b (bias,偏置) , x 0 = 1
  • ω = [ ω 0 , ω 1 , , ω n ] , x = [ x 0 , x 1 , x 2 , , x n ] l o g i t = ω x
  • step function: o u t p u t = f ( l o g i t ) , f ( x ) = { 1 x > 0 0 x 0

1.3 逻辑运算

感知器可以进行简单的逻辑运算(不包含异或)。

可以运用真值表进行运算。

  • 逻辑与:

    • 真值表:

      x 1 x 2 output
      1 1 1
      1 0 0
      0 1 0
      0 0 0
    • 由真值表和 step function 得出的不等式方程组:

      { 1 × ω 1 + 1 × ω 2 + b > 0 1 × ω 1 + 0 × ω 2 + b 0 0 × ω 1 + 1 × ω 2 + b 0 0 × ω 1 + 0 × ω 2 + b 0 { b > ( ω 1 + ω 2 ) b ω 1 b ω 2 b 0 ( ω 1 + ω 2 ) < b min ( ω 1 , ω 2 , 0 )

    • 解是一些区间,而其中最常用的解:

      { ω 1 = 2 ω 2 = 2 b = 3 o r { ω 1 = 1 ω 2 = 1 b = 1

  • 逻辑或

    同逻辑与,最常用的解:

    x 1 = 2 , x 2 = 2 , b = 1

  • 逻辑非:

    同逻辑与,最常用的解:

    x 1 = 2 , b = 1

  • 逻辑与非:

    同逻辑与,最常用的解:

    x 1 = 2 , x 2 = 2 , b = 3

1.4 学习规则

感知器类似与线性分类器。具体求解方式参考损失函数(loss/cost function)与梯度下降。

需要注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functional neuron)。

若两类模式是线性可分的的,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛(converge);否则学习过程将发生震荡(fluctuation)

1.5 感知器的局限

  • 仅能做0-1输出
  • 仅能处理线性分类问题(无法处理XOR问题)

多层感知机的出现,解决了这些问题。


2 多层感知机(Multi-Layer Perceptron)

2.1 一些区别(different)

  • 多层感知机在输入层与输出层中间,还多了一层隐层(hidden layer);
  • 隐层中也拥有激活函数的功能神经元;
  • 每层神经元与下一层神经元全互连;
  • 神经元之间不存在同层连接,也不存在跨层连接;
  • 更多的激活函数。

2.2 一些激活函数(activation function)

  • 阶跃函数(step function):

    s g n ( x ) = { 1 x > 0 0 x 0

  • S型函数(sigmoid function),有时也称为挤压函数(squashing function):

    s i g m o i d ( x ) = 1 1 + e x

  • 双曲正切函数(tanh function):

    t a n h ( x ) = sinh x cosh x = e x e x e x + e x

  • 线性整流函数(Rectified Linear Unit, ReLU)

    R e L U ( x ) = { x x > 0 0 x 0

激活函数能够进行非线性的工作了。

2.3 反向传播算法(backpropagation, BP)

当权重 ω 权重需要调整时,需要进行反向传播。

反向传播的计算是从网络的输出层开始,向输入方向逐层计算梯度并更新权重,与前馈运算正好相反。

假设一个输出神经元,平方误差函数为:

E = 1 2 ( t y ) 2

其中, t 为训练样本输出值, y 为真值。

对于层中每个神经元 j ,它的输出 o j 为:

o j = s i g m o i d ( n e t j ) = s i g m o i d ( k = 1 n ω k j o k + b k j )

其中, k 为前一层神经元数目, o k 为前一层每个神经元输出, b k j 为偏置 bias, 如果是第一个输入层,那么 o k 就是 x k

寻找误差的导数:权重偏导数使用了2次链式法则。

E ω i j = E o j o j n e t j n e t j ω i j

其中:

n e t j ω i j = ω i j ( k = 1 n ω k j o k ) = ω i j ω i j o i = o i o j n e t j = n e t j s i g m o i d ( n e t j ) = y j ( 1 y j ) E o j = E y = y ( 1 2 ( t j y j ) 2 ) = y j t j

则:

E ω i j = E o j o j n e t j n e t j ω i j = ( y j t j ) × y j ( 1 y j ) × o i

接下来我们定义

δ j = E n e t j = E o j o j n e t j = ( y j t j ) × y j ( 1 y j )

则:

E ω i j = δ j × o i

更新 ω i j 使用梯度下降,还必须选择学习率(learning rate), η > 0

如果 E ω i j > 0 ,增加 ω i j ,增加 E ;反之增加 ω i j , 减小 E

新的 Δ ω i j 被加在权重上,并乘以学习率、梯度与 1 ,来确保每次 ω i j 改变都是在减少 E

则每层权重改变(Delta Rule)(增量规则)(德尔塔定律):

Δ ω i j = η E ω i j = η δ j o i

相同的,对于每层偏置量 b i a s ,我们有:

E b i j = δ i

猜你喜欢

转载自blog.csdn.net/darkrabbit/article/details/80740696