前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习与神经网络:单层感知机

深度学习与神经网络:单层感知机

作者头像
云时之间
发布2018-04-10 18:21:38
1.2K0
发布2018-04-10 18:21:38
举报
文章被收录于专栏:云时之间云时之间

今天这个文章让我们一起来学习下感知机:

一个传统的单层感知机如上图所示,其实理解起来很简单,我们可以直接理解为输入节点接受信号之后直接传输到输出节点,然后得到结果y.

就和上图一样,我们给出了权向量W=[W1,W2,W3]=[0.3,0.3,0.3],这时候我们输入[X1,X2,X3],并且于输出节点的t相结合,这样就可以得到方程式:

y = 0.3X1+0.3X2+0.3X3+0.4

在我们给定训练数据集之后,第一次给定的权值基本不会是适合的,因此我们需要使用给定的训练数据集进行迭代学习,规则如下:

给定的测试样例为(X,Y),而如今现在的模型输出为y,此时我们要对权值进行调整:

而这里边的η被称为学习率,这个学习率∈(0,1),并且很大程度上这个学习率是根据我们的经验得到的.如果我们选择的学习率过大,容易造成权值计算的不稳定.如果选择的学习率太小,不能够充分体现出对于权值的修正,迭代次数太多.就跟我们显微镜对焦一样,左调调,右调调就会看的越来越清楚.

从上边的式子来看,如果输出的实际值y和训练集中的Y一致,则Wi就不会发生变化,从而感知机就不会发生变化,否则感知机就会根据错误的大小进行权值的处理.

所以从上述来看,本质上感知机只能够对输出层进行处理,学习能力是很有限的,泛化能力很差.我们不妨分析下:对于与,或,非这样的问题,如图所示:

是可以形成一个线性超平面,从而进行分类划分.

如果是异或这样的问题,是无法形成一个线性超平面进行划分的.

在这里我们总结一下单层感知器的局限:

1:单层感知器没有泛化的能力

2:结构简单,激活函数只能是符号函数

3:只对于线性可分问题进行收敛,如果非线性可分问题,不会产生超平面,无法收敛.

4:如果存在离群点,则需要花费太多的训练时间.

下面我们用MATLAB来实际操作搭建一个单层感知器:

首先我们在MATLAB中输入P,T,p,t,P和T是训练集和训练集结果,p,t则是模型的参数,这里我们在nevp()中使用hardlims,这个参数是单层感知机的激活函数名称.

训练后我们输入测试集:

因此我们输入之后,可以得到一个正确的结果.

而MATLAB中也有一个nntool,可以使用图形化界面进行操作:

我们在命令行输入nntool.

注意选择上边的参数.

选择好输入的数据集

进行训练,训练后输入测试集:

输入结果,是-1,跟之前我们的测试集是一致的.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.03.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档