欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

连体网络孪生神经网络及其在医疗场景中的应用

最编程 2024-04-30 12:48:46
...

孪生(Siamese)网络

Siamese本意为“暹罗”人或“泰国”人,后在英语中指“孪生”、“连体”,具体的单词来源就不在此赘述了。孪生网络,顾名思义,两个连体的网络。那么网络如何进行“连体“呢?它的应用场景又有哪些?

什么是Siamese Networks?

孪生网络于1994年被Yann LeCun等人首次提出[1],用于验证手写平板电脑签名。该网络由两个相同的子网络组成,它们的输出连接在一起。在训练过程中,两个子网络从两个签名中提取特征,而连接神经元则负责测量两个特征向量之间的距离。若手写签名与以前存储签名间的距离小于预设阈值则被接受,否则将被视为伪造签名。

简单来说,Siamese Network的“连体”是通过共享权值来实现的。其基本思想是通过共享参数的方式构建两个相同结构的子网络,每个子网络接受一个输入样本并将其映射到一个低维空间中的表示。然后,这两个表示之间的距离或相似性度量可以用来判断输入样本的相似性。因此,它最早被用于签名认证与人脸识别领域,但后来随着研究的不断深入,被广泛应用于各种任务,如图像匹配、文本匹配、指纹识别、单样本学习(one-shot learning)等。

看到这里有人肯定有疑惑:为什么两个子网络一定要一样?这种设计是为了确保它们各自的网络不会将两个极其相似的图像映射到非常不同的特征空间,因为每个网络计算相同的函数。

那么两个子网络权重可以不一样吗?回答是“当然可以”。

根据两个子网络是否共享权重,Siamese Network可以被分为真孪生网络siamese network和伪孪生网络pseudo-siamese network。对于siamese network,因为权重共享,所以两边可以是相同的lstm或者cnn,主要处理两个输入“比较类似”的情况,比如计算两个句子或者词汇语义的相似度,以及两个图像的相似性等;而对于pseudo-siamese network,两个子网络可以是相同类型,也可以是不同类型,这种网络设计主要处理两个输入“有一定差别”的情况,例如验证标题与正文描述是否一致,文本描述与图像内容是否相符等等。

Siamese Network
Siamese Network
pseudo-siamese network

 

Loss function是什么?

siamese network的输入是两个经过network表示后的向量,在新的向量空间中,只要能判断两个向量的距离,让同类的距离越小,异类的距离越大就能达到目的。所以这里的距离可以有很多,比如欧式距离,余弦距离,指数距离都可以。传统的siamese network使用对比损失函数(Contrastive Loss)[2]

Contrastive Loss:该损失函数鼓励相同类别的样本在表示空间中彼此接近,而不同类别的样本保持一定的距离。

(1)对比损失函数通过对比两个输入来区分相似和不同的图像。当你在训练时不了解所有类别并且训练数据有限时,它会有所帮助。它创建了一种数据编码,可以在将来有新类时使用。

(2) 对比损失需要一对正负训练数据。 正对包含一个anchor样本和一个正样本,负对包含一个anchor样本和一个负样本。

(3)对比损失函数的目标是使正对具有较小的距离,对负对具有较大的距离。

损失函数L与能量EW的关系图。虚线(红色)是相似对的损失函数,实线(蓝色)是不同对的损失函数。

Triplet network

除了双胎连体,可不可以多胎连体?常用的的孪生网络是基于双胞胎连体的,不过,基于三胞胎连体也是可以的,比如论文"Deep metric learning using Triplet network"种就提出了Triplet network网络[3]。Triplet network的基本原理是:当使用随机对象的数据集时,一个对象可能被认为与另一个对象相似,但是当只想区分一组个体中的两个对象时,可能被认为与同样的另一个对象不相似。当选取特征时,并不能够足够判断两者之间的关系,在面对训练样本数量较少的分类问题,可能会产生误差,因此,就提出了Triplet network,利用三个样本组成一个训练组,从中获取拟合函数。它的输入是三个:一个正例+两个负例,或一个负例+两个正例,训练的目标就是让相同类别间的距离尽可能地小,不同类别间的距离尽可能大。Triplet loss的优势在于细节区分,即当两个输入相似时,triplet loss能够更好地细节进行建模,相当于假如两个输入差异性差异的度量,学习到输入的更好表示。

 

Triplet loss:

研究结果显示在Mnist数据集上,Triplet Network要优于Siamese Network,99.54% vs 97.9%。 

Siamese Network在医疗领域有哪些应用场景?

(1)多模态学习:利用CT和CXR图像识别COVID-19[4]

 

(2)Pseudo-Siamese Generator Network用于医学图像合成 [5]

(3)零样本/少样本学习[6]

 以上仅举例说明Siamese Network的医疗领域应用,不详之处敬请谅解

参考

  1. Bromley, Jane & Guyon, Isabelle & Lecun, Yann & Säckinger, Eduard & Shah, Roopak. (1993). Signature Verification Using a Siamese Time Delay Neural Network.. International Journal of Pattern Recognition and Artificial Intelligence - IJPRAI. 7. 737-744.
  2. R. Hadsell, S. Chopra and Y. LeCun, "Dimensionality Reduction by Learning an Invariant Mapping," 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'06), New York, NY, USA, 2006, pp. 1735-1742, doi: 10.1109/CVPR.2006.100.
  3. Elad Hoffer, Nir Ailon. Deep metric learning using Triplet network. arXiv, 2018, 1412.6622
  4. Gao Y, Gong M, Ong YS, Qin AK, Wu Y, Xie F. A Collaborative Multimodal Learning-Based Framework for COVID-19 Diagnosis [published online ahead of print, 2023 Jul 4]. IEEE Trans Neural Netw Learn Syst. 2023;PP:10.1109/TNNLS.2023.3290188. doi:10.1109/TNNLS.2023.3290188
  5. S. Qiao et al., "A Pseudo-Siamese Feature Fusion Generative Adversarial Network for Synthesizing High-Quality Fetal Four-Chamber Views," in IEEE Journal of Biomedical and Health Informatics, vol. 27, no. 3, pp. 1193-1204, March 2023, doi: 10.1109/JBHI.2022.3143319.
  6. Farhad M, Masud MM, Beg A, Ahmad A, Ahmed LA, Memon S. A data-efficient zero-shot and few-shot Siamese approach for automated diagnosis of left ventricular hypertrophy [published online ahead of print, 2023 Jun 7]. Comput Biol Med. 2023;163:107129. doi:10.1016/j.compbiomed.2023.107129