作家
登录

神经网络理论基础及Python实现

作者: 来源: 2017-07-18 11:59:52 阅读 我要评论

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!


一、独裁前向神经收集

独裁前向神经收集由三部分构成:输出层、隐蔽层、输出层,每层由单位构成;

输入层由练习集的实例特点向量传入,经由连接结点的权重传入下一层,前一层的输出是下一层的输入;隐蔽层的个数是随便率性的,输入层只有一层,输出层也只有一层;

1、由输入层向前传送:

除去输入层之外,隐蔽层和输出层的层数和为n,则该神经收集称为n层神经收集,如下图为2层的神经收集;

一层中加权乞降,根据非线性方程进行转化输出;理论上,如不雅有足够多的隐蔽层和足够大年夜的练习集,可以模仿出任何方程;

二、设计神经收集构造

应用神经收集之前,必须要肯定神经收集的层数,以及每层单位的个数;

为了加快进修过程,特点向量在传入输入层前,平日须要标准化到0和1之间;

比如:特点值A可能去三个值(a0,a1,a2),那么可以应用3个输入单位来代表A

  • 如不雅A=a0,则代表a0的单位值取1,其余取0;
  • 如不雅A=a1,则代表a1的单位值取1,其余取0;
  • 如不雅A=a2,则代表a2的单位值取1,其余取0;

神经收集既解决分类(classification)问题,也可以解决回归(regression)问题。对于分类问题,如不雅是两类,则可以用一个输出单位(0和1)分别表示两类;如不雅多余两类,则每一个类别用一个输出单位表示,所以输出层的单位数量平日等一类其余数量。

没有明白的规矩来设计最佳个数的隐蔽层,一般根据实验测试误差和精确率来改进实验。

三、交叉验证办法

若何计算精确率?最简单的办法是经由过程一组练习集和测试集,练习集经由过程练习获得模型,将测试集输入模型获得测试结不雅,将测试结不雅和测试集的┞锋实标签进行比较,获得精确率。

在机械进修范畴一个常用的办法是交叉验证办法。一组数据不分成2份,可能分为10份,

  • 第1次:第1份作为测试集,残剩9份作为练习集;
  • 第2次:第2份作为测试集,残剩9份作为练习集;
  • ……

如许经由10次练习,获得10组精确率,将这10组数据求平均值获得平均精确率的结不雅。这里10是特例。一般意义大将数据分为k份,称该算法为K-fold cross validation,即每一次选择k份中的一份作为测试集,残剩k-1份作为练习集,反复k次,最终获得平均精确率,是一种比较科学精确的办法。

四、BP算法

经由过程迭代来处理练习集中的实例;

反偏向(大年夜输出层=>隐蔽层=>输入层)来最小化误差,来更新每个连接的权重;

4.1、算法具体介绍

输入:数据集、进修率、一个独裁神经收集构架;

输出:一个练习好的神经收集;

初始化权重和偏向:随机初始化在-1到1之间(或者其他),每个单位有一个偏向;对于每一个练习实例X,履行以下步调:

结合神经收集示意图进行分析:

由输入层到隐蔽层:

由隐蔽层到输出层:

两个公式进行总结,可以获得:

Ij为当前层单位值,Oi为上一层的单位值,wij为两层之间,连接两个单位值的权重值,sitaj为每一层的偏向值。我们要对每一层的输出进行非线性的转换,示意图如下:

当前层输出为Ij,f为非线性转化函数,又称为激活函数,定义如下:

即每一层的输出为:

比较经由神经收集后猜测值与真实值之间的差;

如许就可以经由过程输入置魅正向获得每一层的输出值。

2、根据误差反向传送 对于输出层:个中Tk是真实值,Ok是猜测值

对于隐蔽层:

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  开发者自述:我是这样理解强化学习的

【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! 定义强化进修是机械进修的一个重要分支,是多学科多范畴交叉的一个产品,它的本质是解决 decision making>>>详细阅读


本文标题:神经网络理论基础及Python实现

地址:http://www.17bianji.com/lsqh/36265.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)