博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【火炉炼AI】深度学习001-神经网络的基本单元-感知器
阅读量:6262 次
发布时间:2019-06-22

本文共 2179 字,大约阅读时间需要 7 分钟。

【火炉炼AI】深度学习001-神经网络的基本单元-感知器

(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

在人工智能领域,深度学习已经脱颖而出,越来越成为大型复杂问题的首选解决方案。深度学习相对传统机器学习的区别主要在于,使用模拟人类大脑的神经网络来构建模型。早期的浅层次神经网络也可以认为是机器学习领域的一个分支,但是目前,由于神经网络的层次不断加深,参数越来越复杂,能够的解决实际问题越来越多,研究神经网络,特别是深度神经网络的文章越来越多,故而深度学习被划分到一个单独的分支中。

1. 感知器简介

为了更好的理解神经网络,我们首先来看看神经网络的基本组成单元-神经元,神经元是生物学的术语,在计算机领域,我们称之为感知器。

感知器是一种早期的神经网络模型,由美国学者F.Rosenblatt于1957年提出.感知器中第一次引入了学习的概念,使人脑所具备的学习功能在基于符号处理的数学到了一定程度模拟,所以引起了广泛的关注。

感知器的结构:

1,输入:一个感知器有一个或多个输入,用于接收特征数值。

1,权重:每个输入都有一个权重,表示该输入对结果的影响力。

2,偏置:虽然权重能够表示该输入对结果的影响力,但为了更好的拟合结果,有时还需要对输入进行左右移动,即平行地增大或减小,故而有了偏置。

3,输出:经过计算后会给出一个或多个输出。

通俗一点来理解,感知器就像一个复杂一点的函数y=f(u,v),其中的u,v就是输入的特征数值,f表示权重和偏置的组合方式,也就是计算过程,y为输出。所以可以用下列公式来表示感知器。

其中的x表示输入,w为权重,sita为偏置,f则为激活函数,v为输出。所以,完全可以将感知器理解成一个复杂一点的函数。

2. 感知器的训练

如果我们要用一条直线拟合一系列数据,假设该直线的方程为y=a*x+b,那么,我们要做的就是计算出最合适的a和b即可。同理,由于感知器的函数中有两个未知变量(权重和偏置),故而,我们要做的就是计算出最合适的权重和偏置,这一计算过程就是感知器的训练。

感知器的训练是基于感知器规则的,感知器规则认为,如果样本输入函数是线性可分的,那么感知器学习算法经过有限次迭代之后,便可以收敛得到正确的权值和偏置,也就是说,不管开始时权重和偏置是多少,经过N次迭代后,总能得到唯一的确定的权重和唯一的确定的偏置。这也就是为什么我们在初始时设置权重和偏置为随机数或0的原因。

感知器的训练过程可以简单概括为:在训练时,每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据感知器规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。

关于感知器的数学推导和基本理论,可以参考博文:

那么,从代码上如何训练感知器了?运行下列代码之前,请先通过pip install neurolab来安装neurolab模块。

首先准备数据集,并将数据集的分布情况显示出来,这部分代码太简单,可以直接看代码。

# 建立感知器模型import neurolab as nlperceptron = nl.net.newp([[dataset_X[:,0].min(),dataset_X[:,0].max()], # 指定特征1的最小和最大值                          [dataset_X[:,1].min(),dataset_X[:,1].max()]], # 特征2的min和max                          1) # 只有1个感知器# 为了适合于train,需要将dataset_y处理成二维dataset_y=dataset_y[:,np.newaxis]cost=perceptron.train(dataset_X,dataset_y,epochs=50,show=10,lr=0.01) # 训练该单个感知器,50个回合,每10个回合显示一下训练结果,学习速率为0.01# 显示下训练过程中cost的变化趋势plt.plot(cost)plt.xlabel('Number of epochs')plt.ylabel('Training cost')plt.grid()plt.title('Training cost progress')复制代码

########################小**********结###############################

1,感知器方面主要是理解其基本的含义和理论知识,因为感知器是神经网络的基本组成单元。

2,感知器的训练在以后的深度学习中用处不大,一般成熟的深度学习框架都已经整合了这部分内容,此处仅仅用于演示。

#################################################################

注:本部分代码已经全部上传到()上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译

转载地址:http://fykpa.baihongyu.com/

你可能感兴趣的文章
Java虚拟机工作原理详解 ( 二 )
查看>>
对象的序列化(Serialization)
查看>>
理解 Glance - 每天5分钟玩转 OpenStack(20)
查看>>
编译pure-ftpd时提示错误Your MySQL client libraries aren't properly installed
查看>>
Impala SQL
查看>>
STL源代码分析--萃取编程(traits)技术的实现
查看>>
Linux ALSA声卡驱动之一:ALSA架构简介【转】
查看>>
为了解决linux配置Nginx 只能关闭防火墙才能访问的问题
查看>>
CentOS7.2 创建本地YUM源和局域网YUM源
查看>>
ubuntu设置root密码及 Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次...
查看>>
[转]WCF RIA Services
查看>>
R的绘图实例集锦
查看>>
How do you select a particular option in a SELECT element in jQuery? - Stack Overflow
查看>>
emacs 快捷键设置 基础知识篇
查看>>
艾伟:C# 4.0下的新特性
查看>>
Android ROM开发--ubuntu下编译CyanogenMod生成SDK
查看>>
Cocos2d下TexturePacker2.3版会给iphone, ipad通用版带来的问题
查看>>
全新的互动广告牌,待遇男女有别
查看>>
Language modeling meets inference networks
查看>>
mvc3学习之--安装
查看>>