本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【源码搜搜+账户】【21金维他溯源码】【传奇地图源码分析】胶囊算法源码_胶囊网络算法

2024-11-25 00:05:00 来源:休闲 分类:休闲

1.�����㷨Դ��
2.胶囊网络(Capsule)碎碎念
3.CVPR2019 |《胶囊网络(Capsule Networks)综述》,胶囊胶囊附93页PPT下载
4.14.胶囊网络(Capsule Network)
5.CapsNet入门系列之二:胶囊如何工作
6.胶囊网络到底是算法算法什么东东?

胶囊算法源码_胶囊网络算法

�����㷨Դ��

       来自意大利的科学家提出了一种新型的胶囊网络,仅需原始版本胶囊网络参数的源码2%,就能在多个数据集上获得最先进的网络结果。这种胶囊网络引入了一种基于自注意机制的胶囊胶囊非迭代路由算法,有效应对后续层胶囊数量减少的算法算法源码搜搜+账户问题。胶囊网络具有更好的源码概括能力,理论上可以使用较少的网络参数数量并获得更好的结果。然而,胶囊胶囊这一优势并未得到广泛关注。算法算法

       近期,源码意大利研究者提出了一种高效的网络自注意路由胶囊网络(Efficient-CapsNet),在参数量降低至原始CAPSNET的胶囊胶囊2%的情况下,仍能在三个不同数据集上实现最先进的算法算法结果。该网络采用新颖的源码非迭代、高度并行的路由算法,利用自我注意机制,能对小数量的胶囊进行处理。研究者在其他胶囊上也进行了实验,证明了Efficient-CapsNet的有效性,证实了胶囊网络能嵌入更为泛化的可视化表示。

       Efficient-CapsNet的总体架构可以分为三个部分。前两个部分主要实现胶囊层与输入空间之间的交互。主胶囊利用深度可分卷积,创建它们所代表的特征的向量表示。每个胶囊使用下面的卷积层过滤器,将像素强度转换为特征的矢量表示。活跃胶囊内的21金维他溯源码神经元活动体现了学习到的样本属性。概率由向量长度表示,与自我注意路由算法兼容。网络的最后一部分在自我注意算法下运行,将低级胶囊路由到它们所代表的整体。

       Efficient-CapsNet具有较少的可训练参数,效率更高。在实验中,该网络的计算成本和操作效率得到验证。在数字重构任务上,网络保留了重要细节。在MNIST分类任务上,测试错误率较低,与近十年最先进方法相比效果显著。在smallNORB分类任务上,测试错误率也表现出优势。更多详细信息请参考论文链接。

胶囊网络(Capsule)碎碎念

       革新视觉认知:胶囊网络的深度解析

       年,深度学习巨擘Hinton等人提出了革命性的胶囊网络(CapsNet)和动态路由算法,为图像识别领域带来了全新的视角。本文将分三个章节深入探讨这一创新技术:

走进胶囊网络:革新理念与优势

超越CNN的局限:CNN的短板在于空间理解,它容易忽略物体的位置信息,需要大量数据才能适应姿态变化。而胶囊网络引入了向量表示,赋予每个特征概率和特征解读,从而理解图像中的关系。

向量的智慧:胶囊网络通过向量输入和输出,赋予每个特征动态性,传奇地图源码分析提高了对物体位置和姿态的感知能力。

核心算法揭秘:矩阵运算与动态路由

构建深层胶囊:通过矩阵运算和独特的squash函数,构建了多层次的胶囊结构,每个胶囊都代表着物体的一部分信息。

参数更新的艺术:动态路由算法如画师般精细调整,根据底层特征与输出胶囊的向量相似度调整权重,增强模型的关联性,进一步提升图像理解。

架构与优势揭示:

理解图像的钥匙:胶囊网络在少量数据下就能展现出卓越性能,它强调对图像整体结构的理解,而非孤立特征。

       其中,动态Routing算法的核心在于,它通过计算低层特征与输出胶囊向量的相似度,实现对物体特征的精细捕捉,进而增强模型在图像识别中的表现力。而squash函数则如雕塑家的手法,将输出胶囊的向量压缩,模长表示类别概率,向量则承载着特征细节。

       在 CapsNet的架构设计中,以手写数字识别为例,它包括了卷积层(个9x9核)、主胶囊层(个8维胶囊)、数字胶囊层(个维),最后通过Squash非线性映射,将信息精炼为富有洞察力的注入呼出窗口源码输出。

       深入研究的源泉是Sabour、Frosst和Hinton的论文,以及《论智》系列文章,它们为理解胶囊网络的原理提供了宝贵的理论基础。

       总而言之,胶囊网络凭借其独特的设计,挑战了传统CNN的局限,为我们揭示了视觉理解的新可能。让我们一同探索这一创新技术如何塑造未来图像识别的边界。

CVPR |《胶囊网络(Capsule Networks)综述》,附页PPT下载

       Capsule Networks,一种由年图灵奖得主Geoffrey Hinton提出的创新神经网络结构,已在CVPR大会上引起关注。这个教程专门探讨了胶囊网络如何解决卷积神经网络的局限性,并在计算机视觉领域展现出强大的性能。胶囊网络通过有效捕捉实体间局部到全局的关联,学习出视角不变的表示,从而在诸如视频中的人类行为定位、医学图像目标分割、文本分类等多个任务中取得了卓越表现,且所需的参数相对较少。在此次会议中,Yogesh Rawat的综述PPT《Capsule Networks: A Survey》提供了深入的探讨,以下是部分内容摘要:

       该PPT深入剖析了胶囊网络的工作原理和优势,包括它们如何通过多层次的结构捕捉物体的复杂结构,以及如何通过动态路由算法处理不同视角下的不变性。此外,铸造nft平台源码PPT还展示了胶囊网络在实际应用中的成功案例,证明了其在复杂视觉任务中的优越性。如果你想深入了解这个前沿技术,只需在微信公众号“人工智能前沿讲习”回复“CNSV”,即可获取完整的页PPT下载链接。

.胶囊网络(Capsule Network)

        接下来,我们来讲一下胶囊网络(Capsule)。Capsule是Hilton的paper,他发表在NIPS。

        Capsule是什么呢?Capsule是一个你可以想成他想要取代neuron,原来neuron是output一个值, 而Capsule是output一个vector,在其余的部分它的用法你就把它想成是一个一般的neuron。

        所以如下图所示:有个Capsule,Capsule的output就是一个 ,这边的写成 ,那Capsule的input是什么?Capsule的input就是其它的Capsule,我这边有一个黄色的Capsule,他会输出 ,这边有一个绿色的Capsule它会输出 ,这两个vector会当做蓝色的Capsule的input,蓝色Capsule的output也可以变成其他Capsule的input。

        我们知道在一个network里面,每一个neuron的工作就是负责底dectect一个specific pattern。

        举例来说有一个neuron,假设你做影像辨识,有一个neuron的工作只是detect往左的鸟嘴,另外一个neuron的工作只是detect向右的鸟嘴;其实不太可能有一个neuron,它可以同时做两件事情,一个neuron它其实就是侦测一种鸟嘴而已,所以你很难说有一个neuron,它就是看说有向左边的鸟嘴,他被activate;向右边的鸟嘴,它也这被activate。

        举例来说同样是鸟嘴的pattern,也许看向左看的鸟嘴,他output的 的第一维就是 ,向右看的鸟嘴,它output的 ,它第一维就是 ,但这两个 可能长度是一样的,因为都出现鸟嘴,但是他们内部的值是不一样的,代表说现在输入的pattern有不同的特性。

        输入两个 , 分别乘上另外两个matrix ,得到 。所以 ,接下来把 和 做weighted sum, 得到 ,接下来把 通过一个叫做挤压的方式得到 ,这个挤压是怎么回事?挤压这件事,它只会改变 的长度,它不会改变 的方向。怎么改变它?把 先除以它的长度,让它变成是一个长度为 的 ,变成长度为 的 以后,前面再乘上一个值,这个值是什么意思?如果今天 的长度非常长,这个值会趋近于 , 的长度就趋近于 。 如果今天 非常短,今天前面这个值就会很小, 的长度就会趋近于 。

        总而言之,反正就是输入 ,然后经过一连串的运算,得到 ;在这一连串的运算里面有 有 ,Squashing这个挤压是固定的,其实你就可以把它当做是一个激活函数一样, 跟 是参数,这个参数要通过backpropagation learn出来的。

        今天的特别地方是这边 和 ,他们不是通过backpropagation learn出来的。 和 叫做coupling coefficients,他们是在testing的时候在使用这个Capsule的时候动态去决定的。这个决定的process叫做dynamic routing。

        所以 和 你可以想成就好像是pooling一样。Max pooling就是你有一组neuron,然后只选最大那个值出来,到底哪一个neuron的值会被选, 在training的时候我们不知道,在testing的时候才去dynamic决定的;它这个coupling coefficients跟max pooling是一样的,它也是online的时候决定的。max pooling你可以想成是要被max的那一个neuron,它的位置就是1,其它为的就是零。其实今天这个coupling coefficients,dynamic routing,你就想成是max pooling的一个进阶版,他不是1或者是0,这边可以是不一样的实数,但是我记得, 的和必须要是1,但它不一定要是1或0,他跟max pooling很像,他是在测试的时候动态决定的。

        接下来讲 , 又是怎么确定的?

        我们先来看dynamic routing的演算法:一开始我们现在假设输入 ,把 用 做weighted sum以后,我们得到 , 再通过挤压就得到Capsule最后的 。

        那么我们来看看 是怎么运作的,首先你要有一组参数 , 的初始值都是 ,而 就对应到 ;假设今天就跑 个iteration, 是一个Hyper-parameter,你要事先定好的。

        接下来我们把 做softmax得到 ,所以我刚才讲说 的和必须是 。有了 以后你就可以做weighted sum,得到 , 还不是最终的 ,我们把得到的 做挤压得到 ,这个 也不是最终的结果 ,这是我们另外计算得到的 和 ;然后接下来我们用计算出来的 去update 的值,你就把 计算出来的结果去跟每一个 做内积,如果某个 和 的内积结果特别大,即他们特别接近的话,对应到的input的值就会增加。

        如上图所示,我们举个例子:假设右下角红黄绿三个点是 ,然后经过一番计算以后,你得到 是这边灰色的点,这个点跟红色的点、绿色的点比较像,红色点的跟绿色点它们的 就会上升,而他们的然后它的 上升,他们的 也就会跟着上升;然后接下来灰色的点就会往红色的点跟绿色的点更靠近。

        所以今天dynamic routing这件事,他在决定这个 的时候有点像是排除离群点(outlier)的感觉,因为想想看,你把 作weighted sum,然后再得到 ;我们假设 就跟weighted sum的结果很像,如果今天有某一个人,比如说 跟其他人都很不像,今天算出来的 就会跟他很不像,他的weight就会比较小,再算出它的coupling coefficients的时候,它算出来就有一点小。

        总结一下就是:今天在input的这一组vector里面,如果有某些人跟其他人都比较不像,它的weight就会越来越小。

        现在假设跑了 个iteration以后,我们就得到了 个iteration的 ,这个就是我们最后要拿来计算 跟 的coupling coefficients,或者是如果我们用图示来展开的话,看起来像是这个样子:

        我们有 然后分别乘上 得到 ,然后我们初始值 都是 。

        接下来根据 我们可以得到 ,有了 以后,我们可以计算出一个 ,然后得到 ,根据 我们可以决定下一轮的 ,怎么决定下一轮的 呢?你要透过这个式子: ,去计算 跟 和 的相似的程度,如果 跟 比较像,之后 就会增加,如果 跟 比较像,之后 就会增加;看 跟谁像谁的weight就会增加,好,所以有了 以后你就会去update你的 ;有了新的 以后,你就计算出新的 ,然后你就得到 ,根据 你就可以得到新的weight: ……以此类推,就可以得到 ,就是最终的输出 了。

        而这整个process其实它就跟 rnn是一样的。你output的 ,会再下一个时间点被使用;这个在 rnn里面就好像是hidden layer的memory里面的值一样,在前一个时间点的输出会在下一个时间点使用。

        所以在training 的时候,实际上你train的时候你还是用backpropagation,很多农场文都说Hilton他要推翻backpropagation,其实我看也好像不是这样的,你刚刚看农场再下到吃手,其实也好像也不是这个样子,最后train的时候还是用backpropagation,怎么用呢?这个training就跟RNN很像,就是说这个dynamic routing你就可以想成是一个RNN,然后train下去就像train RNN一样,train下去你就得到那个结果。

        实际上这个Capsule怎么train?

        首先Capsule可以是convolution的。我们知道说在做卷积的时候,我们会有一堆filter,然后扫过那个图片,Capsule可以取代filter,filter就是input一幅图片的一小块区域得到output的value;那么Capsule就是input一幅图片的一小块区域得到一个 ,就这样的差别而已。Capsule最后的output长什么样子?

        假设我们现在要做的是手写数字辨识,辨识一张image,原来如果是一般的neuron network,你 output就是十个neuron,每个neuron对应到一个可能的数字,如果是Capsule,你output 就是十个Capsule,每一个Capsule就对应到一个数字。

        可是你说Capsule的输出是一个vector,我们怎么知道说在这个vector里面这个数字有没有出现呢?我们刚才讲过说vector的norm就代表了pattern出现的confidence。所以今天如果你要知道数字1有没有出现,你就把对照数字1的Capsule,取他的对应1的vector那个norm,那也就是得到了数字1的confidence。同理其他数字;

        那么在training的时候,输入数字 你当然希望输出数字 的confidence越大越好,所以今天如果输入是数字 ,你就希望说 的norm越大越好,你希望 的norm被压小,细节的式子我们就不列出来,精神就是这个样子的:

        而在Hilton 的paper里面,它还加了一个reconstruction的network,是说他把Capsule的output吃进去,然后output reconstruct出原来的image。这个CapsNet的output他其实是一排vector,如果是手写数字辨识,它的output就是十个vector。那如上图绿色方框NN这个neuron network就把这十个vector的串接吃进去,然后希望可以做reconstruction。在实作上的时候,如果今天知道input的数字是 ,那么就会把对应到 的Capsule的output乘 ,其他数字统统都会乘 。如果今天对应的数字输入的数字是 ,那就是就会把对应到 的Capsule的output乘 ,其他数字统统都会乘 。得到neuron network,希望可以reconstruct回原来的输入。

        如下图所示,接下来我们先来看一下Capsule的实验结果,这个实验结果baseline应该是一个CNN的network,在MNIST上错误率其实很低,0.%的错误率。接下来四行分别是Capsule的结果,routing 1次或者是routing 3次,没有reconstruction和有reconstruction,这边很明显的有reconstruction 的performance有比较好,至于routing 1次或者是routing 3次谁比较好就有点难说,在没有reconstruction的时候,然后routing 1次比较好,有reconstruction的时候,routing 3次比较好。

        这边有另外一个实验是想要展示CapsNet它对抗noise的能力,他的robust的能力,所以今天这个实验把MNIST的CapsNet做一个affine transformation,但注意一下training没有affine transformation,所以training 跟testing是有点mismatch。 把testing故意作为一个affine以后,因为training 跟testing是mismatch的,所以当然理论上你的network performance是会变差,所以CapsNet的正确率掉到%。但是traditional convolutional neuron networkmodel掉的更多,他是%的正确率,这显示说CapsNet它比较Robust,你有做一下affine transformation, CapsNet的performance掉的量是比较少的。

        我们刚才有说每一个Capsule的output 的每一个dimension就代表了现在pattern的某种特征。怎么验证这一件事呢?

        我刚不是说有一个会做reconstruction的network嘛,用它吃Capsule的output就可以变回image。好,我们就让他吃某一个Capsule的output,然后故意调整这个Capsule的output某一个dimension,就可以知道说这个Capsule的output的dimension,他代表了什么样的特征。举例来说在Hilton的paper的实验上看到说有某些dimension,他代表了笔画的粗细,有某些dimension代表了旋转等等,就每一个dimension都是代表了今天你要侦测的pattern的某一种特征。

        如下图所示,为实验结果:

        最后这个实验是想要显示Capsule的reconstruction的能力,这个实验是这样,他是把network train在MultiMNIST上面,也就network在train的时候她看到的image本来就是有重叠,我觉得这个实验其实如果有另外一个版本是:training的时候是没有重叠的一般数字,testing的时候有重叠还可以辨识出来,我就真的觉得我钦佩的五体投地,但这个不是这样,这个应该是training和testing都是有重叠的数字的。

        那么machine需要做的工作是把这两个数字辨识出来。做法是:给machine看着这一张数字,不知道是哪两个数字的叠合,然后machine它辨识出来是7跟1的结合的可能性比较大。接下来再分别把7跟1丢到reconstruction里面,你就可以分别把7跟1 reconstruct回来,所以这边就显示一下reconstruct的结果,我们看第一排第一张图:看起来是4,其实是2跟7叠在一起,然后她被reconstruct以后,它就可以看出来说红色部分是2,绿色的部分是7。再看第一排第五张图,如果它辨识出来是5跟0,但是你要求他reconstruct 5和7,你把7的那个vector 即:对应到7的Capsule的output丢到reconstruct network里面叫他reconstruct,明明没有看到7,所以7的部分就会消失。好,这个是CapsNet的一些实验。好,为什么CapsNet会work呢?接下来,我们就来看看这个结构的特色。

        有两个特性,一个叫Invariance,一个叫Equivariance。

Invariance是什么意思?input一张image,得到这样的output;我input另外一张image,也得到这个output;他们都是1,虽然有点不一样,network学会无视这个差别得到一样的输出。如下图左边所示;

        所谓的Equivariance意思是说我们并不是希望network input不一样的东西就输出一样东西,我们希望network输出完全地反映了现在看到的输入,比如说你输入这张1,得到结果是这样,你输另外一张1,其实这个1是左边这张1的翻转,那它的输出就是左边的vector的翻转。如下图右边所示;

        那CNN的max pooling的机制,只能做到Invariance,不能够真的做到Equivariance。为什么?CNN就是一组neuron里面选最大的出来,现在input是 ,max pooling选 ,max pooling选3。 input不一样的东西,output一样的东西,它只做到Invariance;

        但CapsNet可以做到Equivariance这件事情,怎么做到呢?现在input这个 出来, 进去,然后让Capsule的output要说看到 的confidence很高,input另外一张 ,CapsNet要说我看到 的confidence也很高,今天它在对应到 的Capsule的output的 ,他们的norm都要是大的;在输入这两张image的时候,但是他们在取norm之前的vector里面的值可以是不一样,而这个不一样可以反映的这两个 之间的差异。

        所以如果要打个比方的话,你就可以想成说Invariance其实是说这个network很迟钝,他是个特别迟钝的人,人家赞美他或批评他对他来说是没差的,因为它看起来就是没差别。但是Capsule不一样,他知道差别,但是他选择不去理会,就是输入的差别在Capsule的output有被呈现,只是取norm的时候,最后没有用到差别。

        至于Dynamic Routing,为什么会work呢?我直觉觉得Dynamic Routing非常像Attention-based model加multi-hop,我们之前已经讲过memory network嘛,我们说里面有attention的机制,然后有multi-hop的机制。

        Dynamic Routing其实很像这个,你可以把input的 就想成是这边的document。然后这边的 你就想成是attention的weight,你先得到一组attention的weight,抽出一个vector,然后再回头再去做attention,再抽出一个vector再回头去做attention,跟memory network里面的attention加multi-hop的机制是一样,是非常类似的,至于他为什么会work,其实我没有很确定,我觉得这边其实需要一个实验,这个实验是什么?你敢不敢让那些 的值也跟着backpropagation一起被learn出来这样子,因为今天我们并没有验证说如果 的值用别的方法取得performance会不会比较好,如果今天 的值也跟着backpropagation一起被learn出来,但他的performance比capsule还要差的话,我就会觉得说Dynamic Routing提这件事情是真的有用。

        这边就是一些reference给大家参考,

CapsNet入门系列之二:胶囊如何工作

       在Max Pechyonkin的系列文章中,第二篇深入探讨了胶囊网络的工作原理。胶囊网络不同于传统神经元,它引入了胶囊这一概念,旨在捕捉更丰富的特征表示和不变性。胶囊是具有内部计算能力的局部单元,它们不是简单地输出单一标量,而是生成包含信息量丰富的输出向量。这些向量不仅能表示特征的存在概率,还包含了实例参数,如位姿、照明和变形信息。

       与传统的卷积神经网络不同,胶囊网络不追求神经元活动的视角不变性,而是通过“胶囊”实现等变性。每个胶囊能识别和适应特定的观察条件,即使对象在图像中移动,胶囊检测概率保持不变,而实例参数则会相应调整。例如,面部检测的胶囊会根据眼睛、嘴巴和鼻子的检测结果,预测面部的位置和状态,即使位置变化,概率恒定,方向则会根据移动进行调整。

       胶囊网络的工作过程包括输入向量的矩阵乘法,以权重矩阵W编码特征间的空间关系;随后,通过动态路由算法决定输出发送给哪个高级胶囊,这不同于神经元的标量权重调整;接着,所有输入向量组合并经过非线性压缩,保持方向不变但减小长度,以保持检测概率的不变性。

       总的来说,胶囊网络的设计旨在提升模型的表征能力和不变性,通过向量形式和层次关系的编码,实现了活动的等变性和特征概率的不变性,这是传统神经网络所不具备的特性。

胶囊网络到底是什么东东?

       胶囊网络是一种新兴的深度学习架构,尤其在计算机视觉领域有着重大潜力。它旨在解决卷积神经网络(CNNs)的某些局限,如对训练数据的需求、图像细节保留和对模糊性的处理。相较于CNNs,胶囊网络能在较少数据上实现良好的泛化,且能更好地处理模糊图像,保持更高的空间分辨率,并在物体识别时保留姿态信息,实现“等变化”特性。

       与CNNs需要大量训练数据不同,胶囊网络的推广性更强。它们能够在图像微小变化时输出相应变化,这对于语义分割等任务至关重要。在部件识别上,胶囊网络提供了一种层次结构,而CNNs则需要额外组件。尽管如此,胶囊网络在大型图像任务上的性能不如CNNs,并存在计算量大和拥挤问题,但其基本理念非常有前景,只需适当调整即可发挥潜力。

       胶囊网络的核心在于其胶囊结构,每个胶囊是一组神经元,负责检测特定区域的特定目标,输出包含概率估计和姿态参数编码的向量。这些向量在不同层(基本胶囊和路由胶囊)中交互,通过路由协议算法来检测物体及其姿态。例如,基本胶囊通过卷积层处理输入,而路由胶囊则使用“路由协议”来整合来自不同胶囊的信息,特别是在模糊场景中,这种协议有助于解释和解析图像,如在图7中的模糊倒置房子场景中,胶囊网络能更好地解析出船和房子的组合。

       总的来说,胶囊网络通过创新的架构和算法,为计算机视觉任务提供了新的可能,虽然仍有改进空间,但其潜力无限。关注云栖社区知乎机构号,获取更多深度学习技术内容。

初探胶囊网络(Capsule Network)二:胶囊网络是如何工作的

       胶囊网络的工作机制详解

       胶囊网络与传统CNN的区别主要在于其内部结构的创新。传统神经网络中的神经元处理输入是通过三个步骤:标量加权、求和及非线性化。然而,胶囊网络的处理过程更为复杂,涉及四步操作:

       对输入向量进行矩阵乘法,例如高层胶囊通过低层胶囊(如眼睛、嘴巴和鼻子)的向量信息来识别人脸,矩阵W编码了这些特征之间的空间关系。

       对矩阵乘法后的向量进行标量加权,但与神经网络不同,胶囊网络采用动态寻路算法而非反向传播。

       对加权后的向量求和,这一步骤与传统神经网络相似。

       最后是向量到向量的非线性化,胶囊网络使用Squash激活函数,将输出向量压缩到一个概率范围。

       胶囊网络的创新之处在于其输出不是单一的标量,而是包含方向和位置信息的向量,这增加了特征的丰富性和可解释性。其结构如图所示,每个胶囊负责捕捉特定特征的多维度信息。

       下一章将深入探讨动态寻路算法,进一步理解胶囊网络如何利用这个机制在不同胶囊间传递和整合信息。欲了解更多内容,关注公众号“论文收割机”。

       

参考资料:

       Sabour, Sara, Frosst, Nicholas, and Hinton, Geoffrey E. Dynamic routing between capsules. Advances in Neural Information Processing Systems, .

       medium.com/ai³-theory-practice-business/understanding-hintons-capsule-networks-part-ii-how-capsules-work-b6ade9f

胶囊网络——动态路由算法

       动态路由算法,其灵感来源于胶囊网络,专门用于计算胶囊的相似度权重系数和更新相似度。胶囊网络与传统神经网络的主要差异在于,它将输入视为向量,且每个维度能代表特定意义。下面详细介绍胶囊网络的核心流程。

       动态路由算法的基本流程包括:计算相似度权重、获取胶囊输入、获取胶囊输出、归一化以及更新低层胶囊的相似度。

       首先,计算相似度权重。权重用于衡量低层胶囊与高层胶囊之间的相似度,即投票。初始值设为零,权重由公式决定,其中参数衡量胶囊激活的可能性。

       随后,获取胶囊输入。低层胶囊向量经过变换矩阵作用得到新的向量。

       接着,获取胶囊输出。将计算得到的相似度权重带入公式中,进行加权求和,得到最终的胶囊输出。

       为了确保输出范围在0到1之间,使用squash非线性函数进行归一化。squash函数能将大范围输入压缩到较小区间,常用sigmoid或tanh双曲正切函数。

       最后,更新低层胶囊的相似度,通过迭代上述过程,完成胶囊网络的训练。

       胶囊网络的动态路由与transformer的多头注意机制在计算方式和处理角度上存在显著差异。在胶囊网络中,相似度权重自下而上计算,且不同类型的胶囊考虑角度不同,每个底层胶囊均在高层胶囊上进行归一化。而在transformer中,注意力权重自上而下计算,每个注意力头独立处理输入,最终输出在最后步骤中通过组合或线性转换得到。

相关推荐
一周热点