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