感知机(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(W⋅X+b) y = f ( W ⋅ X + b )
step function(activation function)(激活函数):
f(x)={10x>0x≤0 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>0x≤0 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+b≤00×ω1+1×ω2+b≤00×ω1+0×ω2+b≤0⟹⎧⎩⎨⎪⎪⎪⎪b>−(ω1+ω2)b≤−ω1b≤−ω2b≤0⟹−(ω1+ω2)<b≤min(−ω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>0x≤0 s g n ( x ) = { 1 x > 0 0 x ≤ 0
S型函数(sigmoid function),有时也称为挤压函数(squashing function):
sigmoid(x)=11+e−x s i g m o i d ( x ) = 1 1 + e − x
双曲正切函数(tanh function):
tanh(x)=sinhxcoshx=ex−e−xex+e−x t a n h ( x ) = sinh x cosh x = e x − e − x e x + e − x
线性整流函数(Rectified Linear Unit, ReLU)
ReLU(x)={x0x>0x≤0 R e L U ( x ) = { x x > 0 0 x ≤ 0
激活函数能够进行非线性的工作了。
2.3 反向传播算法(backpropagation, BP)
当权重 ω ω 权重需要调整时,需要进行反向传播。
反向传播的计算是从网络的输出层开始,向输入方向逐层计算梯度并更新权重,与前馈运算正好相反。
假设一个输出神经元,平方误差函数为:
E=12(t−y)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=∂E∂oj∂oj∂netj∂netj∂ωij ∂ E ∂ ω i j = ∂ E ∂ o j ∂ o j ∂ n e t j ∂ n e t j ∂ ω i j
其中:
∂netj∂ωij∂oj∂netj∂E∂oj===∂∂ωij(∑nk=1ωkjok)=∂∂ωijωijoi∂∂netjsigmoid(netj)∂E∂y=∂∂y(12(tj−yj)2)=oi=yj(1−yj)=yj−tj ∂ 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=∂E∂oj∂oj∂netj∂netj∂ωij=(yj−tj)×yj(1−yj)×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=∂E∂netj=∂E∂oj∂oj∂netj=(yj−tj)×yj(1−yj) δ 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 ,我们有:
∂E∂bij=δi ∂ E ∂ b i j = δ i