AffinityNet Semi-supervised Few-shot Learning for Disease Type Prediction——《疾病预测的半监督小样本学习_亲和网络》

骨架

堆叠 KNN attention pooling layers , 是 Graph Attention Networks的泛化,首先不需要提前计算图,which is difficult for some kind of data(有没有graph都可以),其次不需要输入整幅图,将图分割有利于计算。
主要框架

算法

1. feature attention layer

Graph Attention Model 在最初的特征使用线性变换,也就是仿射变化对原始特征进行了处理,从F‘不一定等于F可以看出来。
对于一个样本的特征向量,如果特征维度是F的话,就使用维度为F的一个特征注意力向量w来对特征进行处理 w = ( w 1 , w 2 ,   , w F ) i = 1 F w i = 1 w = (w_1,w_2,\cdots,w_F) \quad \sum_{i=1}^{F}w_i=1 h ~ i = w h i \widetilde{h}_i = w \otimes h_i 即,每个元素相乘,因此该操作后特征维度不变,只是特征的影响能力会乘以一个权重,在总体流程图中以不同的颜色表示重要性。 【权重作用于特征

2. Attention kernel

实质: 计算样本之间的相似性促进池化,作用于feature attention之后。

  1. cosine similarity: α i j = h ~ i h ~ j h ~ i h ~ j \alpha_{ij} = \frac{\widetilde{h}_i \cdot \widetilde{h}_j }{\|\widetilde{h}_i \|\cdot \|\widetilde{h}_j\|}
  2. Inner product: α i j = h ~ i h ~ j \alpha_{ij} = \widetilde{h}_i\cdot \widetilde{h}_j
  3. Perceptron affine kernel: α i j = w T ( h ~ i h ~ j ) \alpha_{ij} = w^T\cdot(\widetilde{h}_i\| \widetilde{h}_j)
  4. Inverse distance with weighted L2 norm (w is the feature weight): α i j = w h ~ i w h ~ j 2 \alpha_{ij} = -\| w\otimes \widetilde{h}_i - w \otimes \widetilde{h}_j \|^2
    使用softmax归一化,其他归一化也是可行的。 a i j = a ( h ~ i , h ~ j ) = e α i j j N i e α i j a_{ij} = a(\widetilde{h}_i ,\widetilde{h}_j) = \frac{e^{\alpha_{ij}}}{\sum_{j\in N_i}e^{\alpha_{ij}}}
    [attention kernels 实质是计算两个样本之间的相似性,如果样本之间的关系图没有给出的话,可以使用其中一种kernel计算affinity graph,使用另一种来计算规范化注意力]

3. kNN attention pooling layer

前面样本经过了特征注意力处理,然后对attention feature之后的样本进行attention 和normalized处理之后,整个过程如下: h ~ i = f ( j N i a ( h ~ i , h ~ j ) h ~ j ) \widetilde{h}'_i = f(\sum _{j \in N_i}a(\widetilde{h}_i ,\widetilde{h}_j)\cdot \widetilde{h}_j ) 其中 h ~ i \widetilde{h}'_i 表示池化输出, f f 表示池化函数,作用于attention 之后归一化的结点,确定该结点是否激活。例如 f ( h ) = m a x ( W h + b , 0 ) f(h)=max(Wh+b,0)
[与GAM一样,括号内是一个结点新的输出,所以pooling layers 作用于结点,而不是特征,与之前的CNN等池化缩小feature map尺寸不一样]
如果给定了一个图可以直接来确定邻居节点。如果图较大,为了降低计算复杂度,随机选择K个样本用于计算。k是一个超参数。【我认为就是作者实现里面batch_size的大小,如果model 的设置里面k=None,那么k邻近就是batch_size的大小,如果k 有值,那么k邻近就是在batch_size里面选择k个样本】
在这里插入图片描述后面堆叠基础层和半监督小样本学习都比较简单了,可以根据文章提供的源码对照分析。

猜你喜欢

转载自blog.csdn.net/weixin_35479108/article/details/84980483