菜单

机器学习入门生物学

2018年12月26日 - 生物学

 

5.

生物学, 课程中的一些术语:

  Model representation:

  其实就是指学习到的函数的表明格局,可以用矩阵表示。

  Vectorized implementation:

  指定是函数表明式的矢量实现。

  Feature scaling:

  指是将特色的每一维都开展一个尺度变化,比如说都让其均值为0等。

  Normal equations:

  这里指的是多元线性回归中参数解的矩阵形式,这个解方程称为normal
equations.

  Optimization objective:

  指的是亟需优化的靶子函数,比如说logistic中loss
function表达式的公式推导。或者多元线性回归中蕴藏规则性的目标函数。

  Gradient Descent、Newton’s Method:

  都是求目的函数最小值的章程。

  Common variations:

  指的是平整项表达格局的多样性。

4.

前向传输 (Feed-Forward前向申报)

BP网络练习初步往日,对网络的权重和偏置值举行起始化,权重取[-1,1]以内的一个随意数,偏置取[0,1]间的一个随机数。神经网络的操练包含多次的迭代过程,每一趟迭代(训练)过程都接纳训练集的装有样本。

每一轮训练成功后判断磨练样本的归类正确率和最大磨炼次数是否满意设定标准,假诺满意则停止磨炼,不满意则往日向传输进入到逆向传输阶段。

3.

上图中隐藏层只画了一层,但其层数并不曾范围,传统的神经网络学习经历认为一层就足足好,而多年来的深度学习观点认为在必然限制内,层数越多,模型的叙说和还原能力越强。

偏置结点是为了描述操练多少中从不的特性,偏置结点对于下一层的每一个结点的权重的不同而生产不同的偏置,于是可以认为偏置是每一个结点(除输入层外)的特性。

训练一个BP神经网络,实际上就是在外头输入样本的激励下持续调整网络的权重和偏置这五个参数,以使网络的输出不断接近日望的出口,BP神经网络的教练过程分两片段:

 

BP神经网络层与层之间的涉嫌是因此激活函数来描述的,激活函数相当于生物学中细胞体中的细胞核,是对输入信号的处理单元。激活函数必须满意各方可导的尺码,BP中常用的激活函数是Sigmoid。

 

2.

BP神经网络磨炼

     
这部分应该说是全部BP神经网络形成的引擎,驱动着样本训练过程的履行。由BP神经网络的主导模型知道,反馈学习机制包括两大片段,一是BP神经网络暴发预测的结果,二是经过预测的结果和样本的纯正结果举办比对,然后对神经细胞举行误差量的更正。由此,我们用两个函数来表示这样的五个过程,操练过程中还对平均误差
e 举办监督,要是达到了设定的精度即可完成磨炼。由于不自然可以到达预期设定的精度要求,我们抬高一个教练次数的参数,假设次数高达也脱离教练

开首化BP神经网络

     
开始化重即便事关六个方面的法力,一方面是对读取的磨练样本数据开展归一化处理,归一化处理就是指的就是将数据转换成0~1之间。在BP神经网络理论里面,并从未对这么些举行要求,然而实在履行过程中,归一化处理是必需的。因为理论模型没考虑到,BP神经网络没有的速率问题,一般的话神经元的出口对于0~1之间的数量充足灵活,归一化可以分明增强教练效率。可以用以下公式来对其举行归一化,其中
加个常数A 是为了制止出现 0 的图景(0不可以为分母)。

       y=(x-MinValue+A)/(MaxValue-MinValue+A)

      一边,就是对神经细胞的权重举行起首化了,数据归一到了(0~1)之间,那么权重初叶化为(-1~1)之间的数量,另外对修正量赋值为0。实现参考代码如下:

 

有的数量的定义

   首先,大家介绍些下文中讲述的顺序里面的一些重中之重数据的定义。

#define Data  820
#define In 2
#define Out 1
#define Neuron 45
#define TrainC 5500

      Data 用来表示早已了然的多寡样本的多寡,也就是练习样本的多寡。In
表示对于每个样本有些许个输入变量; Out
表示对此每个样本有稍许个出口变量。Neuron 表示神经元的数码,TrainC
来代表磨练的次数。再来我们看对神经网络描述的数额定义,来看下边这张图中间的数据类型都是
double 型。

参考:

http://www.cnblogs.com/jzhlin/archive/2012/07/30/bp_c.html

1.转文:

转载自:

一文弄懂神经网络中的反向传播法——BackPropagation

目前在看深度学习的东西,一起先看的吴恩达的UFLDL教程,有中文版就平素看了,后来意识有些地点总是不是很分明,又去看英文版,然后又找了些资料看,才发觉,中文版的译员在翻译的时候会对简易的公式推导过程进展填空,不过补充的又是错的,难怪觉得有题目。反向传播法其实是神经网络的根基了,不过洋洋人在学的时候总是会遭受有的题目,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。假若不想看公式,可以一向把数值带进去,实际的测算一下,体会一下以此过程之后再来推导公式,那样就会以为很容易了。

  说到神经网络,我们收看这多少个图应该不生疏:

生物学 1

 

  这是独立的三层神经网络的着力组成,Layer L1是输入层,Layer
L2是包含层,Layer
L3是带有层,大家前天手里有一堆数据{x1,x2,x3,…,xn},输出也是一堆数据{y1,y2,y3,…,yn},现在要他们在蕴藏层做某种变换,让你把数据灌进去后拿到你愿意的出口。假使您希望你的输出和原有输入一样,那么就是最广大的自编码模型(Auto-Encoder)。可能有人会问,为何要输入输出都如出一辙啊?有什么样用啊?其实采纳挺广的,在图像识别,文本分类等等都会用到,我会专门再写一篇Auto-Encoder的著作来证实,包括一些变种之类的。即便你的输出和原有输入不一致,那么就是很普遍的人工神经网络了,相当于让原始数据通过一个炫耀来收获我们想要的出口数据,也就是大家先天要讲的话题。

  本文直接举一个例证,带入数值演示反向传播法的经过,公式的演绎等到下次写Auto-Encoder的时候再写,其实也很简短,感兴趣的同窗可以团结演绎下试试:)(注:本文如若你已经通晓基本的神经网络构成,假使完全不懂,可以参照Poll写的笔记:[Mechine
Learning & Algorithm]
神经网络基础

  假设,你有这么一个网络层:

生物学 2

  第一层是输入层,包含六个神经元i1,i2,和截距项b1;第二层是富含层,包含多少个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连续的权重,激活函数我们默认为sigmoid函数。

  现在对她们赋上初值,如下图:

生物学 3

  其中,输入数据  i1=0.05,i2=0.10;

     输出数据 o1=0.01,o2=0.99;

     初叶权重  w1=0.15,w2=0.20,w3=0.25,w4=0.30;

           w5=0.40,w6=0.45,w7=0.50,w8=0.55

 

  目的:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原本输出o1,o2(0.01和0.99)接近。

 

  Step 1 前向传播

  1.输入层—->隐含层:

  总结神经元h1的输入加权和:

生物学 4

神经元h1的输出o1:(此处用到激活函数为sigmoid函数):

生物学 5

 

 

  同理,可总结出神经元h2的出口o2:

  生物学 6

 

  2.隐含层—->输出层:

  统计输出层神经元o1和o2的值:

  生物学 7

生物学 8

 

诸如此类前向传播的进程就截至了,大家收获输出值为[0.75136079 ,
0.772928465],与实际值[0.01 ,
0.99]相距还很远,现在我们对误差进行反向传来,更新权值,重新统计输出。

 

Step 2 反向传来

1.统计总误差

总误差:(square error)

生物学 9

可是有五个出口,所以个别统计o1和o2的误差,总误差为相互之和:

生物学 10

生物学 11

生物学 12

 

2.隐含层—->输出层的权值更新:

以权重参数w5为例,假如我们想精通w5对总体误差发生了有点影响,可以用一体化误差对w5求偏导求出:(链式法则)

生物学 13

下边的图可以更直观的看精晓误差是哪些反向传来的:

生物学 14

现在我们来分别统计每个式子的值:

计算生物学 15

生物学 16

计算生物学 17

生物学 18

(这一步实际上就是对sigmoid函数求导,相比简单,可以自己演绎一下)

 

计算生物学 19

生物学 20

最后三者相乘:

生物学 21

诸如此类我们就统计出完全误差E(total)对w5的偏导值。

回过头来再看看下边的公式,我们发现:

生物学 22

为了表明方便,用生物学 23来代表输出层的误差:

生物学 24

故此,全部误差E(total)对w5的偏导公式可以写成:

生物学 25

比方输出层误差计为负的话,也足以写成:

生物学 26

末尾我们来更新w5的值:

生物学 27

(其中,生物学 28是上学速率,这里我们取0.5)

同理,可更新w6,w7,w8:

生物学 29

 

3.隐含层—->隐含层的权值更新:

 方法其实与地点说的大半,可是有个地方需要变一下,在上文统计总误差对w5的偏导时,是从out(o1)—->net(o1)—->w5,可是在隐含层之间的权值更新时,是out(h1)—->net(h1)—->w1,而out(h1)会接受E(o1)和E(o2)多少个地方传来的误差,所以这么些地方四个都要总结。

 

生物学 30

 

计算生物学 31

生物学 32

先计算生物学 33

生物学 34

生物学 35

生物学 36

生物学 37

同理,计算出:

          生物学 38

双面相加得到总值:

生物学 39

再计算生物学 40

生物学 41

再计算生物学 42

生物学 43

末段,三者相乘:

生物学 44

 为了简化公式,用sigma(h1)表示隐含层单元h1的误差:

生物学 45

最后,更新w1的权值:

生物学 46

同理,额可更新w2,w3,w4的权值:

生物学 47

 

  这样误差反向传播法就到位了,最终我们再把立异的权值重新总计,不停地迭代,在这么些事例中率先次迭代将来,总误差E(total)由0.298371109暴跌至0.291027924。迭代10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734](原输入为[0.01,0.99]),注明效果依旧不错的。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图