前言:
今天小伙伴们对“导数算法存在误差吗”大约比较关注,看官们都想要分析一些“导数算法存在误差吗”的相关资讯。那么小编在网上汇集了一些关于“导数算法存在误差吗””的相关文章,希望我们能喜欢,同学们快快来学习一下吧!观众老爷好!这期继续讲人工智能相关的知识!观众老爷请拿出喜欢的零食和饮料,放松心情随小编一起走进智能化信息时代!
观众老爷是否还记得第一期的问题:我们人类是如何学习的?我们如何理解知识的?同样信息在我们大脑中如何处理的?我们的文字和语言有什么规律?我们看到的物体如何判断的?我们对事物的关系如何理解的?我们的世界是什么样子的?为什么可以用模型去拟合呢?那计算机又是如何进行学习的呢?同样计算机可不可以模拟世界?
观众老爷继续上期话题,权重和阀值的调整可以说是人工神经网络关键部分,是常用的算法,而且有一个好听的名称:反向传播算法。为什么叫反向传播算法呢?从输入端到中间激活神经细胞,再将信号传播到输出端,这是正向传播。那方向相反从输出端的信号来调整输入的权重和阀值就是反向信号传播,反向传播的意义又是什么?
认知误差
观众老爷还记得小编《机器学习与人工智能之二:认知的过程》内容么?里有提到小编小时候写得倒二字!我们小时候对事物的观念都有着偏差的,如果不是父母的监督,我们就很难形成自己的价值观和人生观,可能就会走入歧途,小编也不会在这里给观众老爷写文章了!父母是孩子最好的老师,小时候的记忆会影响我们的终身!在人工神经网络算法当中如果输出不是我们期望的,比如我们给了一个苹果的图片或者音频,通过深度学习算法运算后却告诉我们,这不是苹果,是梨。估计是个正常的人都会气的暴跳如雷吧!当然如果把这个当做一个刚出生的婴儿,我们都会一笑了之,毕竟我们不能把小孩当大人,孩子气是我们允许的。一个婴儿在没有成年以前,他做的错事,只要不是太过,我相信没人去严厉苛责的。不过最近一篇新闻报道却是让小编有些感慨:一个成年人,且不问,这个小孩犯了什么错,你持刀将其杀害,这是得多大的仇恨才能做的事,小孩子是调皮或者顽皮对你家女儿有骚扰,你完全可以让你女儿转学,转班,惹不起躲得起啊!你不理智的将其杀害,这对于你的女儿和这个小孩的家庭的伤害,难到不比转学转班的影响大!冲动是魔鬼啊,我们做什么事之前还是需要冷静思考,办法总比问题多。小编又感慨多了!
如果期望输出不是我们想要的,这里我们用Yq表示,而正常输出用Yo表示,这里就产生了输出与期望输出的误差用E表示。
Yo=SIGN( X1*W1+X2*W2+……+Xn*Wn - θ );
E=Yq -Yo;
认知误差是经常出现的事,我们需要作出纠正。就像父母知道我们做的事是错的,就会惩罚或者教导我们,这个错下次不能再犯了,这个事下次该如何如何做!首先我们要知道自己错在哪里?是行为错了,还是认知错了,还是方法不对,如果下次遇到同样的事,我们该如何处理!我们要面对事情,而不是逃避;如果逃避,下次同样的错可能会再犯!
记忆更新
当我们知道错了后,首先要回忆当初犯得错是什么错误,认知的错误,就改变认知,辨别的错误,就调整辨别范围,方法出错,就改变处理事物的方法。神经网络算法的阀值θ和权重W掌握着整个记忆的核心,输入X是事物的信号,Y是判断事物的最终结果,而激活函数控制事物的辨别范围。当我们得到事物的信号,进行运算,得到的结果是不是我们需要的?如果不是我们需要的,我们如何处理。同样面对众多同一事物的样本信号输入,我们多多少少都有判断错误的时候!比如小编上学学习英语的时候,经常是记不住单词的意思,有时候会写,但不会念;有时候会念,却不会写。认知是天然存在缺陷的,我们需要不停的模仿、训练和强行记忆来达到学习的目的,最终形成概念。相信很多观众老爷有体会吧。没有人天生是什么都会的,学习是人类进步的动力,创造力是人类最大的优势。我们要秉着不耻下问,达者为师的态度,这样才能不停的进步。
那神经网络算法又是如何更新记忆的呢?用什么算法呢?当然小编也只是举其中比较容易明白的示例,更深入的观众老爷可以去网上查找资料或者观众老爷可以自己去设计算法。前几期小编自己设计了一个算法,当然只是一个框架,很多细节小编没有总结好,感兴趣的观众老爷自己可以将其完善!小编相信,观众老爷有能力做到!数学知识非常重要!希望观众老爷看过小编文章后,多学习数学!
我们出现认知的错误,并不是一下就能纠正的,需要不停的去修正,记忆存在偏差也不是全部推倒重建的,相信没人可以把脑袋归档,那我们如何修改认知和辨别的错误呢?那就是学习认知同样事物的不同面,通过了解这个事物的不同角度的样子和现象,达到认知和辨别以及联想!学习是有着很低的效率的,百分百学习,这是我们梦寐以求的能力。喜好,状态,观念等都影响学习的效率。神经网络算法同样有学习效率,用α表示学习率,学习率α是一个小于1大于0的常量,学习率α是为了进行调整阀值θ和权重W而设定的一个常量;学习率越低,调整的范围变化就相对较小,对拟合有好处,但有时候会降低学习速度,这个看情况而定。
神经网络算法输出与期望输出存在的偏差,是权重w和阀值θ的范围达不到概念相同但特征不同样本的取值范围,也就是同样信号向量投影取值不同,或者回路链接出现偏差而导致的输出不一样。出现偏差我们就需要进行权重W和阀值θ的调整,原来的权重用Wn表示,阀值用θn,,调整的值我们用△W和△θ表示。
W = Wn + △W;
△W = α * X * E;
Θ = θn + △θ;
△θ = α *(-1) *E;
上述的算法只适用于单层网络结构,如果多层的网络结构就需要梯度算法,也就是误差梯度,误差梯度算法的定义是激活函数的导数与神经元输出误差的积,梯度算法是为了逐层进行阀值W和权值Θ的调整。梯度值用δ表示具体如下,还有多层网络算法都有下标,这里进行简单的介绍:
输出层权重校正:
δ = dY/dX*E;误差梯度函数
W = Wn + △W;
△W = α *X * δ;
隐藏层权重校正:
W = Wn + △W;
△W = α *Y * δ;隐藏层的输入是上一层的输出
阀值调整:
Θ = θn + △θ;
△θ = α *(-1) *δ;
现在很多神经网络算法的修改大多在权重、阀值、激活函数、感知器层数、输入方式、输出纠正方式上进行算法的调整,后面小编会写一下常用神经网络算法的文章,当然小编还是不会涉及具体编程语言!
观众这期就到这里了!小编希望观众老爷观看小编所有的文章,做到知其然,知其所以然,在具体编程时可以做到任意自如,想用什么算法就用什么算法,而且自己可以修改、编写算法的程度!观众老爷下期再会,小编会不定期更新,观众老爷记得关注我哦!
标签: #导数算法存在误差吗