开发者学堂课程【神经网络概览及算法详解:单层感知器-1】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/40/detail/923
单层感知器-1
内容介绍:
一、单层感知器
二、单层感知器的使用场景
三、单层感知器的学习算法
之前已经学习了神经网的一些基础知识,包括神经元模型,神经网络模型以及神经网的学习规则等等。在接下来的时间里,将把这些知识结合起来,看一下相关的神经网络的模型算法。
一、单层感知器
首先来看第一章,单层感知器,单层感知器模型看上去会很熟悉,和之前介绍的Mp模式比较像,感知器perceptron是1958年由frank rosenblatt提出了一种具有单层计算单元的神经网络,本质是一个非线性的前馈网络,在讲神经网络分类的时候,非线性的前馈网络,就是同一个层类没有相互的连接。
不同层之间的没有反馈,就是单向的,不会存在一个输出返回的作为输入的这种现象,是由下层向上层传递。另外它的输入输出都是离散值,就是神经元对输入加权求和之后,有一个预值函数来决定它最终输出是什么。
如下图
这个图实际上由几个神经元组成,分别为输入信号,只有一层,还有一个输出层,单独看一个节点时,实际上就是一个mp模型。感知器模型是罗森布拉特首次提出了学习的概念,按照网络拓扑结构建好网络模型之后,因为需要加权,权重也都设出来,就是如何去通过一批样本来训练网络使这个网络的相关的参数都得到确认,这就是学习的概念,是罗森布拉特在感知器模型中首次提出来的。
一个学习的方案就是给定一个有输入,有输出的训练机,知道感知器模型,实际上是一个有监督学习的例子。使用感知器学习的过程就是对每一个样本儿,通过这个模型得到一个输出。如果感知器的输出值比实际值低,就比样本中的输出值低。那这个时候就增加这个权重,如果高,就接着群众通过不断的去试错,去调整权重。这就是整个的学习过程,直到选择了一组权重值,对当前的样本都能得到一个符合预期的输出,那学习过程就结束,然后得到参数就会存储到网络中,可以直接使用网络模型去对新的数据进行预测。
二、单层感知器的使用场景
主要是用来处理这种线性分类的,单层感知器通过计算权重和输入成绩的和f(x)=sign(Σ(w*x)),根据和的正负来判断分类。计算过程很简单,有输入,且每一个输入都有对应的权重,将输入和权重乘起来,再相加,即权重乘以样本的输入值,然后加起来,使用一个sign符号函数,如果输入值这一部分大于0,那它输出就是1,小于0是就是–1,通过函数作用之后的输出值来判断最后的输出是正还是负。
对于任一个训练Xi,其输入特征为(Xi1, Xi2),i表示第几个样本,比如可能输出样本机可能有100个,那i就是从1~100,对每一个项目来讲,假设它有两个分量,那在求和时就很简单,sum=x1*w1+x2*w2+b,通常sum写为nate,近求和值,激活函数,当x1*w1+x2*w2+b>0时,为正类,当x1*w1+x2*w2+b<=0时,为负类,即x1*w1+x2*w2+b=0为正负类的分界超平面,分界超平面在二维空间即为一条直线,直线上的点为正类,直线下的点为负类。
在三维空间中,分界超平面为一个平面,在四维空间中极为三维的一个分界超平面。
以二维空间为例,已知x1*w1+x2*w2+b=0,求出x和b的值来之后就认为x1*w1+x2*w2+b=0是分类直线。将直线方程x1*w1+x2*w2+b=0整理成习惯的公式为f(x1)=–w1/w2*x1–b,–w1/w2是斜率,–b是截距。
画出函数为
一个样本假设有两个分量,做到一个平面里,因为样本X1 ,X2的取值不一样,在图中标注出来的位置就不一样,并且它本身有一个类别,样本它本身有结果,平面上为正,平面下为负,通过神经网络可以求出的权重值和偏置量来得到一个方程,这个方程就能把样本很好的隔离开。
注意,这个时候可以看到单层感知器它实际上处理的是线性可分的问题,就是样本本来就是可以通过一个直线来分开,才能使用单层感知器。
三、单层感知器的学习算法
采用离散感知器的算法,在之前介绍神经网络学习算法的时候,也讲过。他的公式为
ΔWj = n[dj - sgn(wt jX)]X
是一个学习信号,用期望输出减掉实际输出,用差乘以输入x,用向量表示
Δwy = n[dj-sgn(wt/jx)|xi,
写成用分量来表示的格式
具体步骤:
1,初始化权值,赋予w较小的非零随机数,如果输入样本线性可分,可通过直线进行分割。无论初始值如何取,都会稳定收敛。都能得到一个把样本很好分开的分界超平面。
2,输入样本 {X,Y},其中 x(1) =(1,x’,x2)…,xn),i=1,2,…,k,共k条n+1个分量的输入,输出为k条m个分量的向量:y(i)=(y(i),yi),…,y)), i = 1,2,,…,k
可能有多个分类,1是偏置量,假设共k条n+1个分量的输入,就是这个样板机总共有k条记录,每一条记录有n+1个分量,输出的也是开条,因为输入一条就会输出一条是m的分量的向量,就是最终的输出,结果为:y(i)=(y(i),yi),…,y)), i = 1,2,,…,k,就是有M个最终的输出就是有m个分量的值,就说明N+1个输入节点,那m个分量的输出,就表明输出层上有m个节点。
3,计算各输出节点的实际输出: o() = sgn(w]x(1)) , i = 1,2,…,k, j= 1,2,…,m
先求代数和,用sign函数进行处理,得到最终输出o。
4,按照实际输出值和期望值之间的差更新权重。
[wj'=w(+n[d1-o@]x,n为学习速率
计算方式是新的权重由上一次的权重加上△w的变化量。
5,返回第二步处理下一组输入样本。
6,循环上述过程,直到感知器的所有样本的实际输出和期望输出一致。算法终止。
注意: 如果收入样本线性可分,无论初始值如何去都会稳定收敛,因此样本的实际输出和期望输出是一致的。