学习背景:ANN几乎已经是现在机器学习入门必备的知识技能了,很多框架模型都是在ANN的基础上改进或者添加,所以不妨静下心来认真学习。
1)ANN出现的背景
我发现我是个研究什么技术都想知道知道背景的人,因为技术需要记忆,记忆需要逻辑,我喜欢来龙去脉。话不多说,开始。
网络
对于复杂问题,采用分而治之的方法,或者采用树,或者采用网络。在网络中,一般只有两类数据,一是节点v,一是边e。节点可以看成是处理器,具有各种处理能力,由函数完成处理器的功能。
神经网络
当将节点视作神经单元,网络就成了神经网络。神经网络的来源是参考了人类神经元中的树突传递信息。树突的生物形象可以简化成一个节点带一条边,让我灵魂画手来给你们画幅画。
![](https://img.haomeiwen.com/i7437869/6f7cc479613930f3.png)
在生物学上,神经元一的神经传导物质的释放,会使得神经元二的受体结合,而这个神经传导物质本身可能是兴奋或者抑制两种可能,就使得神经元二有了不同的反应,而人工神经网络ANN就是借鉴了这种机制,在结点中设置了函数,比如sigmoid或者tanh函数,来完成抑制或激活的目标。
经过符号化的神经元突触结构变成了下面这种类型:
![](https://img.haomeiwen.com/i7437869/1369d004b48298c0.png)
输入可以理解为神经递质,神经递质可以是多个,而每个神经递质可以是不同类型、不同数量的,然后每个神经地址的权重不同,可以是正负或零。这些权重的初始值一般是随机的,一开始会得到一个初始输出值,而将初始输出值和我们想要的结果进行对比,会发现差距,然后这时候就需要调整权重,以此来得到我们想要的结果,这个过程就称为“学习”或者“训练”的过程。而“学习”的方法有很多种,一般比较常见的就是后向传播算法学习。下面学习后向传播算法。
后向传播算法
![](https://img.haomeiwen.com/i7437869/fe95115aae6ac7ff.png)
后向传播算法中,其实先是激活函数起作用:
![](https://img.haomeiwen.com/i7437869/80989ae4e7374a88.png)
激活函数其实就是权重和输入的乘积和。如果输出函数不作为,那么最后结构就是激活函数的结果,但是一般的输出函数都是一个非线性函数,才导致神经网络能够处理非线性的任务。数学函数如下图所示:
![](https://img.haomeiwen.com/i7437869/4a279033421b155b.png)
激活函数图像如图所示:
![](https://img.haomeiwen.com/i7437869/a701f50beeee5f4c.png)
设想我们最简单的模型只有三层,输入层,中间隐藏层,最后输出层,现在输出层的结果和我们实际拿到的结果存在误差,这个时候就为这个输出神经元配备一个误差函数:
![](https://img.haomeiwen.com/i7437869/ae325f67109f0d3f.png)
如果输出层中存在多个神经元,只需要把他们的误差相加,就是最后的误差结果:
![](https://img.haomeiwen.com/i7437869/bd211b10752692bf.png)
从以上的公式中我们可以看到,后向传播误差来源于三个部分:1)输入2)权重3)输出,然后通过梯度下降法来调整权值:
![](https://img.haomeiwen.com/i7437869/0531b01d30f0b4df.png)
现在我们按照这个公式来计算:
1)
![](https://img.haomeiwen.com/i7437869/719b424cb797e649.png)
2)
![](https://img.haomeiwen.com/i7437869/5c2649be8530ebf4.png)
3)
![](https://img.haomeiwen.com/i7437869/2de0e6e436ba6e08.png)
当存在多层的网络时,如何不断进行反向误差计算呢?,首先我们要搞清楚,多一层其实只是对第二层来说,输入是第一层输出,而不是x,所以只需要把公式(7)(8)(9)中的xi用wij来替换即可,实际中
上前一层中的误差(设为Vik),是这样的:
![](https://img.haomeiwen.com/i7437869/c28e9eb65204aaa1.png)
一部分是:
![](https://img.haomeiwen.com/i7437869/781f7a30f9578e51.png)
另一部分是:(可以假设是输入值为uk,权重为vik的信号进入神经元,反向误差求到了输入层)
![](https://img.haomeiwen.com/i7437869/4921229afbd31f99.png)
总的来说如果还需要多加层,也是一样的。
参考文章:
[给初学者们讲解人工神经网络(ANN)](https://blog.csdn.net/tdkcs/article/details/29561511)
网友评论