---
# System prepended metadata

title: 2023/09/28
tags: [meeting]

---

---
title: 2023/10/12
tags: meeting   # 簡報的標籤
slideOptions:        # 簡報相關的設定
  theme: black   # 顏色主題
  transition: 'fade' # 換頁動畫
  spotlight:
    enabled: true
---

### 5.5 Method for combining Features

再多標籤分類方法中，有一大部分的工作是對於標籤之間的相關性進行建模，這之中不乏包含各種不同的 Transformer 和 GNN (Graph Neural Netowork) 方法，基於這些理念，我們參照其方法，提出用 Transformer 和 GNN 來考慮模型輸出之間的相關性方法。由於 transformer 和 GNN 要求輸入特徵向量維度需相同，因此我們使用 homogeneous 的 $f_1,\cdots,f_K$ 作為 backbone 來提取特徵，具體的說，$f_1,\cdots,f_K$ 都是 EfficientNet B0 的 backbone 模塊，只是在訓練參數上略顯不同，除了在 $f_i$ 的訓練過程使用 $0.0001 * i$ 作為模型學習率之外，其他超參數設定皆相同。Homogeneous classifier 輸出常常會因為 backbone 的相似性而抓取到相同的特徵，這對於 ensemble 來說並不是好事，我們希望能夠盡量抓取到更多的特徵，因此我們比較我們的訓練方法與一班訓練方法的變異數差別，我們計算變異數的方法為 

$$
\text{Var}_{p(f)}[\textbf{f}(x)] = \frac{1}{C}\sum_{i=1}^C\text{Var}_{p(f)}[f^{(i)}(x)]
$$

其中，$f^{(i)}$ 表示第 $i$ 個類別的預測機率，我們假設 $p(f)$ 為均勻分配，也就是傳統的多數決機率加總方法。

我們將結果列在下圖

![](https://hackmd.io/_uploads/Hy9rzwd1p.png)

XY 座標分別表示 sample variance 以及 sample variance 的 density。圖中橘色線表示使用我們的方法訓練，且 backbone 為 homogeneous classifier，我們可以發現，我們的方法也可以有效的提高模型方差，也就是使得不同 backbone 關注於影像的不同語義特徵。皆下來我們定義怎麼使用 attention 方法來結合不同 backbone 的輸出

1. 得到 $K$ 個 backbone 的輸出特徵向量，有大小 $o$ (output channels)
2. 連接 $K$ 個向量，大小為 $(K,c)$，記做 $X_{K*o}$
3. 計算 $Q=XW^q, K=XW^k, V=XW^v$
4. 計算 query 和 key 的相似度 $\text{softmax}(\frac{QK^T}{\sqrt{d_k}})$
5. 計算加權和 $X_{K*o} = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V$
6. 最後計算輸出 $Y=\text{Flatten}(X)W_{\{K*o\}*C}+B_{C}$

簡單來說，該方法把模型輸出看做是一個文字向量，我們把 $K$ 個模型輸出結合成一個文本，計算文本之間的相關性，最後把經過相關性運算的 self-attention 輸出通過全連接層得到輸出。除此之外，我們也可以用 GNN 的方式考慮模型之間的相關性，步驟如下

1. 使用 cosine similarity 計算 $f_1,\cdots,f_K$ 之間的相關性作為鄰階矩陣 $A_{K*K}$
2. 將鄰接矩陣通過簡易的 attention 模塊得到輸出 $A_{K*K}=\text{Attention}(A_{K*K})$ 
3. 計算加權和 $Y=A_{K*K}X_{K*o}W^g_{o*o}$
4. 最後計算輸出 $Y=\text{Flatten}(X)W_{\{K*o\}*C}+B_{C}$

在上述的方法中，我們把每個 backbone 的輸出看成是一個圖上的節點，利用節點之間的相關性作為圖上的邊，最後在得到考慮過不同 backbone 特徵向量的輸出。我們將 attention 和 GNN 機制的結果列在表 6. 中

| Model   | FC  | MHA   | GNN |
| ------- | ---- | ---- | ---------- |
| Model 2 | 84.2 | 83.8 | 84.12      |
| Model 3 | 84.97  | 84.98 | 83.97      |
| Model 4 | 85.69 | 85.67 | 85.34      |
| Model 5 | 86.19 | 86.64 | 86.34      |
| Model 6 | 86.69 | 86.8 | 86.08      |
| Model 7 | 86.94 | 87.09 | 86.86      |
| Model 8 | 86.91 | 87.62 | 87.34      |

可以看到，隨著 $K$ 的上升，MHA 和 GNN 的表現會越來越好，甚至比起原先使用 fully connected 的方法要多出許多，我們在 $K=8$ 時，MHA 相較於原本方法漲點 $0.71$，這對於原本方法是個巨大提升，不過該方法仍然需要輸出之間都維持大小相同，所以並不是很泛用，一種解決這種問題的方案是在每一個 $f_i$ 後都加上一個 linear projector，將所有 $f_1,\cdots,f_K$ 維度投影到統一維度上，就可以使用 MHA 和 GNN 方法，但是該方法會增加參數量，所以訓練的難度會上升。