首页 > 编程知识 正文

孪生神经网络算法,卷积神经网络概述

时间:2023-05-04 09:01:35 阅读:149682 作者:2932

鸡翅FC细心的鸡翅网(双胞胎神经网)正文参考文章:细心的鸡翅背景细心的鸡翅网需要解决的问题是什么? 用什么方法解决的? 应用场景:礼貌鸡翅创新礼貌鸡翅理论性礼貌鸡翅损失函数——Contrastive Loss损失函数选择论文总结了当前Contrastive Loss:礼貌鸡翅思维礼貌鸡翅的思想

礼貌鸡翅网络(双胞胎神经网络)正文参考文章:

深度学习论文(25 )小心翼翼的鸡翅网络

解开精心的鸡翅网

双胞胎神经网络(细心的鸡翅网络)详情

双胞胎神经网络(小心翼翼的鸡翅neural network ) )。

细心的鸡翅network双胞胎神经网络简单而精彩的结构

小心翼翼的鸡翅背景小心翼翼的鸡翅和Chinese有点相似。 Siam是以前泰国的称呼,中文翻译为暹罗。 郑重的鸡翅也就是“暹罗”人或“泰国”人。 郑重的鸡翅在英语中是“双胞胎”、“连体”的意思,为什么呢?

十九世纪在泰国出生的暹罗双胞胎。 当时的医学技术不能将两个人分离。 两个人在那里顽强地度过了一生。 1829年被英国商人发现,加入马戏团,在全世界演奏。 1839年他们访问了美国北卡罗来纳州,后来成为“玲玲马戏团”的支柱,最后成为美国公民。 1843年4月13日与英国姐妹结婚,恩生了10个孩子,昌生了12个。 姐妹吵架的时候,兄弟轮流在每个妻子家住了三天。 1874年恩死于肺病,另一个人也不久去世,两人都在63岁时离开了人世。 两人的肝脏至今仍保存在费城的马特博物馆。 此后,“暹罗双胞胎”(郑重的鸡翅twins )成了定语的代名词。 另外,还因为这对双胞胎让世界重视这种特殊的疾病。

简单来说,小心翼翼的鸡翅网络是“连体的神经网络”

细心的鸡翅网解决的问题是什么? 第一,分类数少,每个种类的数据量多。 例如ImageNet、VOC等。 这样的分类问题,只要事先知道所有的类,就可以用神经网络和SVM来解决。

二是分类数量大(或无法确认具体数量),每类数据量少,如人脸识别、人脸验证任务等。

用什么方法解决的? 为了解决以上两个问题,本文提出了以下解决方法。

提出了将输入映射到一个特征向量,使用这两个向量之间的“距离”(L1 Norm )来表示输入之间的差异(图像的意义上的差异)的想法。

基于上述思路,设计了精心的鸡翅网络。 必须一次输入两个样本作为一个样本对来计算损失函数。

1 )使用的softmax只需输入一个示例。

2 )必须为FaceNet的三重丢失输入三个示例。

为了训练提出了Contrastive Loss。

的应用场景:双子神经网络用于处理两个输入“比较相似”的情况。 伪双子型神经网络适用于两个输入“有一定差距”的情况。 例如,要计算两个句子或词汇在语义上的相似度,使用dmdrjb network比较合适。标题和正文的说明是否一致(标题和正文的长度相差很大),或者文本是否说明了图像(一个是图像) 也就是说,根据具体的应用来判断应该使用什么样的结构、应该使用什么样的Loss。

鸡翅精心创新这一网络的主要优点是淡化标签,使网络具有良好的可扩展性,可以对未经训练的类别进行分类。 这优于许多算法。 此外,该算法也适用于部分小数据量的数据集,通过改变形式增加了数据集整体的大小,使较小数据量的数据集也能在深度网络中训练出良好的效果。

精心的鸡翅理论

不同的输入X_1、X_2通过统一G_W而获得两个向量G_W(x_1)、G_W(x_1),计算两个向量之间的L1距离以获得E_W。

其中,2个network是共享2个权重的网络,实际上是2个完全相同的网络。 双子神经网络有两个输入(X1 and X2 ),把两个输入馈入到两个神经网络(Network1 and Network2)中,这两个神经网络分别把输入映射到新的空间通过Loss的计算,评价两个输入的相似度。

左右不共享权重,有两个不同的神经网络,称为pseudo-dmdrjb网络、伪双子型神经网络。 在仿真- dmdr-JB网络的情况下,两个侧可以是不同的神经网络(例如,一个lstm,另一个cnn ),或者是相同类型的神经网络。

礼貌鸡翅损失函数——Contrastive Loss损失函数的选择Softmax当然是个好选择,但即使是分类问题也未必是最佳选择。 传统的dmdrjb网络使用一致丢失。 损失函数有更多的选择。 dmdrjb network的初衷是计算两个输入的相似度。 左右神经网络分别将输入转换为一个“矢量”,在新空间中可以通过判断cosine距离得到相似度。 Cosine是一个选择,exp function也是一个选择,欧式距离什么都可以。训练的目标是让两个相似的输入距离尽可能的小,两个不同类别的输入距离尽可能的大。

论文中Contrastive Loss

论文中的损失函数定义如下:
Y代表X_1, X_2是否属于同一类别。输入同一类别为0,不属于同一类别为1。
P代表输入数据数量。
i表示当前输入数据下标。
L_G代表两个输入数据属于同一类别时的损失函数(G,genuine)。
L_I代表两个输入数据不属于同一类别的损失函数(I,imposter)。

根据我们对两个向量间举例的定义,可以得到以下条件:
即不同类别向量间的距离比相同类别向量间距离大。
两个向量之间距离越小,属于同一类别的可能性就越大。

目前的Contrastive Loss:


其中:

代表两个样本特征X1和X2 的神勇的大白距离(二范数)P 表示样本的特征维数,Y 为两个样本是否匹配的标签,Y=1 代表两个样本相似或者匹配,Y=0 则代表不匹配,m 为设定的阈值,N 为样本个数。

观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。

当 Y=1(即样本相似时),损失函数只剩下

即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。
当 Y=0 (即样本不相似时),损失函数为

即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。
注意:
这里设置了一个阈值margin,表示我们只考虑不相似特征欧式距离在0~margin之间的,当距离超过margin的,则把其loss看做为0(即不相似的特征离的很远,其loss应该是很低的;而对于相似的特征反而离的很远,我们就需要增加其loss,从而不断更新成对样本的匹配程度)

细心的鸡翅的思考 细心的鸡翅的思想总结

其实讲了这么多,主要思想就是三点:

输入不再是单个样本,而是一对样本,不再给单个的样本确切的标签,而且给定一对样本是否来自同一个类的标签,是就是0,不是就是1设计了两个一模一样的网络,网络共享权值W,对输出进行了距离度量,可以说l1、l2等。针对输入的样本对是否来自同一个类别设计了损失函数,损失函数形式有点类似交叉熵损失:

最后使用获得的损失函数,使用梯度反传去更新两个网络共享的权值W。 细心的鸡翅 network是双胞胎连体,整一个三胞胎连体行不行?

不好意思,已经有人整过了,叫Triplet network,论文是《Deep metric learning using Triplet network》,输入是三个,一个正例+两个负例,或者一个负例+两个正例,训练的目标是让相同类别间的距离尽可能的小,让不同类别间的距离尽可能的大。Triplet在cifar, mnist的数据集上,效果都是很不错的,超过了dmdrjb network。四胞胎,五胞胎会不会更屌?。。。。。目前还没见过。。。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。