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

介绍了一种基于图注意力模型的泛化算法,通过骨架堆叠KNN注意力池化层,无需预计算图即可处理各种数据类型,利用特征注意力层、注意力核和kNN注意力池化层提升计算效率和模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

骨架

堆叠 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 w=(w1,w2,,wF)i=1Fwi=1 h ~ i = w ⊗ h i \widetilde{h}_i = w \otimes h_i h i=whi即,每个元素相乘,因此该操作后特征维度不变,只是特征的影响能力会乘以一个权重,在总体流程图中以不同的颜色表示重要性。 【权重作用于特征

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\|} αij=h ih jh ih j
  2. Inner product: α i j = h ~ i ⋅ h ~ j \alpha_{ij} = \widetilde{h}_i\cdot \widetilde{h}_j αij=h ih j
  3. Perceptron affine kernel: α i j = w T ⋅ ( h ~ i ∥ h ~ j ) \alpha_{ij} = w^T\cdot(\widetilde{h}_i\| \widetilde{h}_j) αij=wT(h ih 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 αij=wh iwh j2
    使用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}}} aij=a(h i,h j)=jNieαijeα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=f(jNia(h i,h j)h j)其中 h ~ i ′ \widetilde{h}'_i h i 表示池化输出, f f f表示池化函数,作用于attention 之后归一化的结点,确定该结点是否激活。例如 f ( h ) = m a x ( W h + b , 0 ) f(h)=max(Wh+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个样本】
在这里插入图片描述后面堆叠基础层和半监督小样本学习都比较简单了,可以根据文章提供的源码对照分析。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值