内容简介:(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )在人工智能领域,深度学习已经脱颖而出,越来越成为大型复杂问题的首选解决方案。深度学习相对传统机器学习的区别主要在于,使用模拟人类大脑的神经网络来构建模型。早期的浅层次神经网络也可以认为是机器学习领域的一个分支,但是目前,由于神经网络的层次不断加深,参数越来越复杂,能够的解决实际问题越来越多,研究神经网络,特别是深度神经网络的文章越来越多,故而深度学习
(本文所使用的 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的原因。
感知器的训练过程可以简单概括为:在训练时,每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据感知器规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。
关于感知器的数学推导和基本理论,可以参考博文:感知器(Perception)
那么,从代码上如何训练感知器了?运行下列代码之前,请先通过pip install neurolab来安装neurolab模块。
首先准备数据集,并将数据集的分布情况显示出来,这部分代码太简单,可以直接看代码。
# 建立感知器模型 import neurolab as nl perceptron = 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,感知器的训练在以后的深度学习中用处不大,一般成熟的深度学习框架都已经整合了这部分内容,此处仅仅用于演示。
#################################################################
注:本部分代码已经全部上传到( 我的github )上,欢迎下载。
参考资料:
1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【火炉炼AI】深度学习004-Elman循环神经网络
- 【火炉炼AI】深度学习002-构建并训练单层神经网络模型
- 【火炉炼AI】机器学习033-构建电影推荐系统
- 【火炉炼AI】机器学习036-NLP词形还原
- 【火炉炼AI】机器学习035-NLP词干提取
- 【火炉炼AI】机器学习037-NLP文本分块
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux内核完全剖析
赵炯 / 机械工业出版社 / 2008.10 / 99.00元
本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,介绍了Linux的历史,同时着重说明了各个内核版本的主要区别和改进,给出了......一起来看看 《Linux内核完全剖析》 这本书的介绍吧!