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

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

AI-第五期-DarkRabbit

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

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

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


目录

  • 感知机(Perceptron)和多层感知机(Multi-Layer Perceptron)
  • 目录
    • 1 感知机(Perceptron)
      • 1.1 过程
      • 1.2 前馈计算
      • 1.3 逻辑运算
      • 1.4 学习规则
      • 1.5 感知器的局限
    • 2 多层感知机(Multi-Layer Perceptron)
      • 2.1 一些区别(different)
      • 2.2 一些激活函数(activation function)
      • 2.3 反向传播算法(backpropagation, BP)


1 感知机(Perceptron)

1.1 过程

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

y=f(WX+b) y = f ( W ⋅ X + b )

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

f(x)={10x>0x0 f ( x ) = { 1 x > 0 0 x ≤ 0

1.2 前馈计算

  • weighted sum: logit=ω0x0+ω1x1++ωnxn l o g i t = ω 0 x 0 + ω 1 x 1 + ⋯ + ω n x n
  • 其中 ω0=b(bias),x0=1 ω 0 = b (bias,偏置) , x 0 = 1
  • ω=[ω0,ω1,,ωn],x=[x0,x1,x2,,xn] ω = [ ω 0 , ω 1 , ⋯ , ω n ] , x = [ x 0 , x 1 , x 2 , ⋯ , x n ] logit=ωx l o g i t = ω ⋅ x
  • step function: output=f(logit),f(x)={10x>0x0 o u t p u t = f ( l o g i t ) , f ( x ) = { 1 x > 0 0 x ≤ 0

1.3 逻辑运算

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

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

  • 逻辑与:

    • 真值表:

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

      1×ω1+1×ω2+b>01×ω1+0×ω2+b00×ω1+1×ω2+b00×ω1+0×ω2+b0b>(ω1+ω2)bω1bω2b0(ω1+ω2)<bmin(ω1,ω2,0) { 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=2b=3orω1=1ω2=1b=1 { ω 1 = 2 ω 2 = 2 b = − 3 o r { ω 1 = 1 ω 2 = 1 b = − 1

  • 逻辑或

    同逻辑与,最常用的解:

    x1=2,x2=2,b=1 x 1 = 2 , x 2 = 2 , b = − 1

  • 逻辑非:

    同逻辑与,最常用的解:

    x1=2,b=1 x 1 = − 2 , b = 1

  • 逻辑与非:

    同逻辑与,最常用的解:

    x1=2,x2=2,b=3 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):

    sgn(x)={10x>0x0 s g n ( x ) = { 1 x > 0 0 x ≤ 0

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

    sigmoid(x)=11+ex s i g m o i d ( x ) = 1 1 + e − x

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

    tanh(x)=sinhxcoshx=exexex+ex t a n h ( x ) = sinh ⁡ x cosh ⁡ x = e x − e − x e x + e − x

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

    ReLU(x)={x0x>0x0 R e L U ( x ) = { x x > 0 0 x ≤ 0

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

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

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

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

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

E=12(ty)2 E = 1 2 ( t − y ) 2

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

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

oj=sigmoid(netj)=sigmoid(k=1nωkjok+bkj) 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 k 为前一层神经元数目, ok o k 为前一层每个神经元输出, bkj b k j 为偏置 bias, 如果是第一个输入层,那么 ok o k 就是 xk x k

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

Eωij=Eojojnetjnetjωij ∂ E ∂ ω i j = ∂ E ∂ o j ∂ o j ∂ n e t j ∂ n e t j ∂ ω i j

其中:

netjωijojnetjEoj===ωij(nk=1ωkjok)=ωijωijoinetjsigmoid(netj)Ey=y(12(tjyj)2)=oi=yj(1yj)=yjtj ∂ 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ωij=Eojojnetjnetjωij=(yjtj)×yj(1yj)×oi ∂ 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=Enetj=Eojojnetj=(yjtj)×yj(1yj) δ 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ωij=δj×oi ∂ E ∂ ω i j = δ j × o i

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

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

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

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

Δωij=ηEωij=ηδjoi Δ ω i j = − η ∂ E ∂ ω i j = − η δ j o i

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

Ebij=δi ∂ E ∂ b i j = δ i

你可能感兴趣的:(人工智能)