开发者学堂课程【神经网络概览及算法详解:神经网络学习规则-3】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/920
神经网络学习规则-3
内容介绍:
一、感知器
二、离散感知器学习规则
三、离散感知器学习规则步骤
四、离散感知器学习规则例题
一、感知器(Perceptron)
由 Rosenblatt 定义的具有单层神经计算单元的神经网络结构。实际上为一种前馈网络,同层内无互连,不同层间无反馈,由下层向上层传递,其输入、输出均为离散值,神经元对输入加权求和后,由阈值函数(激活函数)决定其输出。
二、离散感知器学习规则
代表一种有导师的学习方式,与赫布规则不同,可以度量实际输出与预计输出之差,其规定将神经元期望输出(教师信号)与实际输出之差作为学习信号,学习信号越小越好,该差等于0最好,或者等于可接受的范围,学习过程中可以通过减小这个差来调整权值,直到实际输出满足要求(等于或者接近于期望输出)。
在该学习规则中:
学习信号r等于神经元的期望输出与实际输出之差:
r=dj-oj=dj-f(wTJx), f(wTJx)是net值,(wTJx) 为累加代数和,就是输入和输入对应的权值的乘积累加起来,如果 f 函数是 sgn(·) 函数,直接代入就可以。
权值调整公式为:
ΔWj = ŋrX = n(dj -oj)x = n[dj - f(wTJx)]x ŋ为学习率,是常数,r=期望输出-实际输出,再乘对应的分量,表示出来。
用分量形式表示:
权向量各个分量调整为:
Δwi j = n[dj - f(wTJx)]x¡ = n(dj - oj)xi , i = 0,1,…,n
三、离散感知器学习规则步骤
初始化权值参数W,学习速率η。
对每一样本,实际输出和期望输出的差满足要求;
根据输入记录,更新权重值。满足要求退出循环,如果没有满足要求,就继续更新,直到满足要求。
四、离散感知器学习规则例题
如题:
阈值:T=0,学习速率:n=1,初始权值:w0)=(1-10,0.5)T,(需要计算4个权重值)输入样本有:x(1)=(1,-2,1.5.0)T,输入样本有: x(1)=(1,-2,1.5,0)T , 使用第一个样本 x1=1 , x2=-2 , x3=1.5 , x4=0 ; x(2) = (1,-0.5,-2,-1.5)T,x(3) = (0,1,-1,1.5)T,输出为d =(1,0,1)T; (第一个样本输出是1,第2个样本输出是0,第3个样本输出是1.)激活函数:f(x)=sgn(x),离散感知器学习规则训练网络。
对于第一个样本x1,期望输出d=1;对于第二个样本x2,期望输出d=0;对于第三个样本,期望输出d=1.
首先代入第一个样本x,计算net1。
net1=当前的权重值乘第一个样本,结果为3,
最终的输出为:
0j=f(net,)=sgn(3)= 1
该样本的学习信号:
r=dj-0j=1-1=0,计算出的期望输出为1,实际输出为1,期望输出-实际输出=0,说明实际输出和期望输出一致,无需更新权重,对样本1来说,当前的权重值满足需要。即W(0)=w(1)。
代入第二个样本 x,计算 net1。
net1=上一个的权重值乘第2个样本,结果为0.75,实际输出等于1:
0j =f(net1)=sgn(0.75)= 1,期望输出为0,该样本的学习信号: r=d-0j=0-1=-1。
为0就更新权重:w(2)=w(1)+ΔWj=w(1)+n(dj -oj)x(2)
w1加n乘学习信号(期望输出与实际输出之差)再乘第二个样本。得到当前的权重。
使用新的权重对第二个样本 X,计算 net1
net1=(W(2))Tx(2)=(0.9 -0.95 0.2 0.65) =0
oj = f(net,) = sgn(0) = 0
该样本的学习信号: r=dj-0j=0-0=0 ,权重满足期望输出的要求;
实际输出和期望输出一致,无需再更新权重:W(3)=W(2)
代入第三个样本 X,计算net1:
net1= (W(3))Tx(3) = (0.9 -0.95 0.2 0.65) =-0.175
oj=f(net,)=sgn(-0.175)= 0
该样本的学习信号: r=dj-oj=1-0=1,学习信号不满足。
更新权重:按照公式进行更新:w(4)=w(3)+ΔWj=w(3)+n(dj -oj)x(3)
使用新权重对第三个样本 X,计算 net1:
net;=(W(4))Tx(3)= (0.9 -0.85 0.1 0.8) =0.25
oj=f(net1)=sgn(0.25)= 1
该样本的学习信号: r=dj-0j=1-1=0
实际输出和期望输出一致,无需再更新权重:w(5) =W(4)
注意:由于更新过权重之后并不知道对其他样本的影响,所以需要验证:
验证:使用得到权重对三个样本x计算 oj:
net1=(W(5))Tx=(2.75 -0.075 0.25)
直接用所有的样本来算,net1=(W(5))Tx即最新的权重,如下图中,第一个公式,第一列为第一个样本,第2列为第2个样本,第3列为第3个样本。将矩阵与(0.9 -0.95 0.2 0.65)相乘,得到结果(2.75 -0.075 0.25) 。将第一个权重与第一个样本相乘得到 net 值 2.75,依此类推,即将权重值与样本值相乘得到 net 值。
求出o的输出值为:(1 0 1):
o=f(net1)=(W(5))Tx=(1 0 1)
与预期结果一样。
d-o=(1 0 1)-(1 0 1)=(0 0 0 )
整个学习结束。
(0.9 -0.95 0.2 0.65)就是最终期望的权重值。就可以用这种模型做神经网络预测。